Skip to content

Commit

Permalink
2.9.8.9 pre-release
Browse files Browse the repository at this point in the history
  • Loading branch information
johnclause committed Feb 13, 2015
1 parent a5d1cfb commit f450176
Show file tree
Hide file tree
Showing 39 changed files with 6,071 additions and 5,585 deletions.
23 changes: 21 additions & 2 deletions admin/admin_utils.php
Original file line number Diff line number Diff line change
Expand Up @@ -250,23 +250,42 @@ function qtranxf_admin_the_title($title) {
//filter added in qtranslate_hooks.php
function qtranxf_trim_words( $text, $num_words, $more, $original_text ) {
global $q_config;
//qtranxf_dbg_log('qtranxf_trim_words: $text: ',$text);
//qtranxf_dbg_log('qtranxf_trim_words: $original_text: ',$original_text);
$blocks = qtranxf_get_language_blocks($original_text);
//qtranxf_dbg_log('qtranxf_trim_words: $blocks: ',$blocks);
if ( count($blocks) <= 1 )
return $text;
$lang = $q_config['language'];
$texts = qtranxf_split_blocks($blocks);
foreach($texts as $key => $txt){
$texts[$key] = wp_trim_words($txt, $num_words, $more);
}
return qtranxf_join_c($texts);
return qtranxf_join_b($texts);//has to be 'b', because 'c' gets stripped in /wp-admin/includes/nav-menu.php:182: esc_html( $item->description )
}

/**
* The same as core wp_htmledit_pre in /wp-includes/formatting.php,
* but with last argument of htmlspecialchars $double_encode off,
* which makes it to survive multiple applications from other plugins,
* for example, "PS Disable Auto Formatting" (https://wordpress.org/plugins/ps-disable-auto-formatting/)
* cited on support thread https://wordpress.org/support/topic/incompatibility-with-ps-disable-auto-formatting.
* @since 2.9.8.9
*/
if(!function_exists('qtranxf_htmledit_pre')){
function qtranxf_htmledit_pre($output) {
if ( !empty($output) )
$output = htmlspecialchars($output, ENT_NOQUOTES, get_option( 'blog_charset' ), false ); // convert only < > &
return apply_filters( 'htmledit_pre', $output );
}
}

function qtranxf_the_editor($editor_div)
{
// remove wpautop, which causes unmatched <p> on combined language strings
if('html' != wp_default_editor()) {
remove_filter('the_editor_content', 'wp_richedit_pre');
add_filter('the_editor_content', 'wp_htmledit_pre');
add_filter('the_editor_content', 'qtranxf_htmledit_pre', 99);
}
return $editor_div;
}
Expand Down
110 changes: 73 additions & 37 deletions admin/js/common.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
/*
//debuging tools, do not check in
*/
var cc=0;
function c(v){ ++cc; console.log('== '+cc+': '+v); }
function ct(v){ c(v); console.trace(); }
function co(t,o){ ++cc; console.log('== '+cc+': '+t+': %o',o); }
*/

qtranxj_split = function(text,keep_neutral_text)
{
Expand All @@ -16,8 +16,6 @@ qtranxj_split = function(text,keep_neutral_text)
}
var split_regex = /(<!--:[a-z]{2}-->|<!--:-->|\[:[a-z]{2}\])/gi;
var blocks = text.xsplit(split_regex);
//c('qtranxj_split: blocks='+blocks);
//c('qtranxj_split: blocks.length='+blocks.length);
if(!qtranxj_isArray(blocks))
return result;
if(blocks.length==1){//no language separator found, enter it to all languages
Expand Down Expand Up @@ -337,18 +335,6 @@ var qTranslateX=function(pg)
var h=displayHooks[i];
h.elem.innerHTML=h.contents[this.lang];
}
/*
if (window.tinyMCE)
for(var i=0; i<tinyMCE.editors.length; ++i){
var ed=tinyMCE.editors[i];
var h=contentHooks[ed.id];
if(!h) continue;
//c('onTabSwitch: h['+ed.id+'].contentField.value before save:'+h.contentField.value);
ed.save({format: 'html'});
//c('onTabSwitch: h['+ed.id+'].contentField.value after save:'+h.contentField.value);
h.contents[h.lang] = h.contentField.value;
}
*/
for(var key in contentHooks){
var h=contentHooks[key];
var mce = h.mce && !h.mce.hidden;
Expand Down Expand Up @@ -411,22 +397,28 @@ var qTranslateX=function(pg)
}
}

this.addContentHooksByClass=function(nm,form,container)
addContentHooksByClassName=function(nm,form,container,sep)
{
var sep;
if(nm.indexOf('<')==0 || nm.indexOf('[')==0){
sep=nm.substring(0,1);
nm=nm.substring(1);
}
if(!container) container=form;
var fields=container.getElementsByClassName(nm);
//c('addContentHooksByClass: fields.length='+fields.length);
//if(sep=='[') //c('addContentHooksByClass: fields.length='+fields.length);
for(var i=0; i<fields.length; ++i){
var f=fields[i];
//if(sep=='[') //co('addContentHooksByClass: f: ',f);
addContentHook(f,form,sep);
}
}

this.addContentHooksByClass=function(nm,form,container)
{
var sep;
if(nm.indexOf('<')==0 || nm.indexOf('[')==0){
sep=nm.substring(0,1);
nm=nm.substring(1);
}
addContentHooksByClassName(nm,form,container,sep);
}

// adds custom hooks from configuration
this.addContentHooks=function(form)
{
Expand All @@ -441,6 +433,29 @@ var qTranslateX=function(pg)
}
}

this.addPageHooks=function(page_config)
{
for(var i=0; i < page_config.forms.length; ++i){
var frm = page_config.forms[i];
var form = document.getElementById(frm.form.id);
//co('form=',form);
if(!form) continue;
for(var k=0; k < frm.fields.length; ++k){
var fld = frm.fields[k];
var sep = fld.encode;
//co('fld=',fld);
//c('sep='+sep);
if(fld.id) this.addContentHookById(fld.id,form,sep);
else if(fld.class) addContentHooksByClassName(fld.class,form,form,sep);
else{
//todo tag, name
continue;
}
}
}
return true;
}

this.addContentHooksTinyMCE=function()
{
function setEditorHooks(ed)
Expand Down Expand Up @@ -519,23 +534,44 @@ var qTranslateX=function(pg)
return null;
}

if(!pg.addContentHooks(this))
if( typeof(pg.addContentHooks) == "function" && !pg.addContentHooks(this) )
return;

if( qTranslateConfig.page_config && !this.addPageHooks(qTranslateConfig.page_config) )
return;

{
var langSwitchWrap=qtranxj_ce('ul', {className: 'qtranxs-lang-switch-wrap'});
//var header=w.getElementsByTagName('h2')[0];
//header.parentNode.insertBefore(langSwitchWrap, header.nextElementSibling);
var f=pg.langSwitchWrapAnchor;
if(!f){
f = this.getWrapForm();
//var w = document.getElementsByClassName('wrap')[0];
//f = w.getElementsByTagName('form')[0];
}
f.parentNode.insertBefore(langSwitchWrap, f);
languageSwitch=new qtranxj_LanguageSwitch(langSwitchWrap);
languageSwitch.onSwitch(onTabSwitch);
if(pg.onTabSwitch)
languageSwitch.onSwitch(onTabSwitchCustom);
var anchors=[];
if(qTranslateConfig.page_config && qTranslateConfig.page_config.anchors){
for(var i=0; i < qTranslateConfig.page_config.anchors.length; ++i){
var anchor = qTranslateConfig.page_config.anchors[i];
var f = document.getElementById(anchor);
if(f) anchors.push(f);
}
}
if(!anchors.length){
var f=pg.langSwitchWrapAnchor;
if(!f){
f = this.getWrapForm();
}
if(!f){
f = this.getWrapForm();
//var w = document.getElementsByClassName('wrap')[0];
//f = w.getElementsByTagName('form')[0];
}
if(f) anchors.push(f);
}
for(var i=0; i < anchors.length; ++i){
var anchor = anchors[i];
var langSwitchWrap=qtranxj_ce('ul', {className: 'qtranxs-lang-switch-wrap'});
//var header=w.getElementsByTagName('h2')[0];
//header.parentNode.insertBefore(langSwitchWrap, header.nextElementSibling);
anchor.parentNode.insertBefore( langSwitchWrap, anchor );
var languageSwitch = new qtranxj_LanguageSwitch(langSwitchWrap);
languageSwitch.onSwitch(onTabSwitch);
if(pg.onTabSwitch)
languageSwitch.onSwitch(onTabSwitchCustom);
}
}
}

Expand Down
2 changes: 1 addition & 1 deletion admin/js/common.min.js

Large diffs are not rendered by default.

20 changes: 0 additions & 20 deletions admin/js/edit-nav-menus.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,6 @@ qTranslateConfig.js={

addMenuItemHooks=function(li,form)
{
//co('addMenuItemHooks: qtx',qtx);
//co('addMenuItemHooks: form',form);
//co('addMenuItemHooks: li',li);
qtx.addContentHooksByClass('edit-menu-item-title',form,li);
qtx.addContentHooksByClass('edit-menu-item-attr-title',form,li);
qtx.addContentHooksByClass('[edit-menu-item-description',form,li);//must use '[:]' separator style
Expand All @@ -37,25 +34,11 @@ qTranslateConfig.js={
var wp_addMenuItemToBottom = wpNavMenu.addMenuItemToBottom;
if( typeof wp_addMenuItemToBottom == 'function'){
wpNavMenu.addMenuItemToBottom = function( menuMarkup, req ) {
//co('menuMarkup: before',menuMarkup);
//get id of default description, which gets broken due to line "$menu_item->description = apply_filters( 'nav_menu_description', wp_trim_words( $menu_item->post_content, 200 ) );" in /wp-includes/nav-menu.php
var matches;
var rxd = /(<textarea id="edit-menu-item-description.*>)(.*)(<\/textarea>)/gi;
while((matches = rxd.exec(menuMarkup))){
//co('matches',matches);
menuMarkup = menuMarkup.replace(matches[0],matches[1]+matches[3]);
}
wp_addMenuItemToBottom( menuMarkup, req );
//co('menuMarkup: after',menuMarkup);
//co('req:',req);
//co('addMenuItemToBottom: form',form);
var rx = /id="menu-item-(\d+)"/gi;
while((matches = rx.exec(menuMarkup))){
//co('matches('+matches.length+')',matches);
var id = 'menu-item-'+matches[1];
//co('addMenuItemToBottom: id',id);
var li = document.getElementById(id);
//co('addMenuItemToBottom: li['+id+']',li);
if(li)
addMenuItemHooks(li,form);
}
Expand All @@ -71,9 +54,6 @@ qTranslateConfig.js={
,
onTabSwitch: function(lang,qtx)
{
//c('onTabSwitch: lang='+lang);
//co('onTabSwitch: qtx=',qtx);
//co('onTabSwitch: wpNavMenu',wpNavMenu);
if(wpNavMenu){
if( typeof wpNavMenu.refreshKeyboardAccessibility == 'function'){
wpNavMenu.refreshKeyboardAccessibility();
Expand Down
2 changes: 1 addition & 1 deletion admin/js/edit-nav-menus.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions admin/js/edit-post.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ qTranslateConfig.js={
if(!form) return false;

qtx.addContentHookByIdC('title',form);
qtx.addContentHookByIdC('excerpt',form);

var wpEditorAreas=form.getElementsByClassName('wp-editor-area');
for(var i=0; i<wpEditorAreas.length; ++i){
Expand Down
2 changes: 1 addition & 1 deletion admin/js/edit-post.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit f450176

Please sign in to comment.