summaryrefslogtreecommitdiff
path: root/extensions/WikiEditor/modules/jquery.wikiEditor.templateEditor.js
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/WikiEditor/modules/jquery.wikiEditor.templateEditor.js')
-rw-r--r--extensions/WikiEditor/modules/jquery.wikiEditor.templateEditor.js137
1 files changed, 58 insertions, 79 deletions
diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.templateEditor.js b/extensions/WikiEditor/modules/jquery.wikiEditor.templateEditor.js
index 3cbd5ba5..bd00325f 100644
--- a/extensions/WikiEditor/modules/jquery.wikiEditor.templateEditor.js
+++ b/extensions/WikiEditor/modules/jquery.wikiEditor.templateEditor.js
@@ -1,6 +1,5 @@
/* TemplateEditor module for wikiEditor */
-/*jshint quotmark:false, onevar:false */
-( function ( $ ) { $.wikiEditor.modules.templateEditor = {
+( function( $ ) { $.wikiEditor.modules.templateEditor = {
/**
* Name mappings, dirty hack which will be removed once "TemplateInfo" extension is more fully supported
*/
@@ -38,13 +37,9 @@
*/
evt: {
- /**
- * @param context
- * @param event
- */
- mark: function( context ) {
+ mark: function( context, event ) {
// The markers returned by this function are skipped on realchange, so don't regenerate them in that case
- if ( context.modules.highlight.currentScope === 'realchange' ) {
+ if ( context.modules.highlight.currentScope == 'realchange' ) {
return;
}
@@ -52,9 +47,10 @@ evt: {
var markers = context.modules.highlight.markers;
var tokenArray = context.modules.highlight.tokenArray;
// Collect matching level 0 template call boundaries from the tokenArray
+ var level = 0;
var tokenIndex = 0;
while ( tokenIndex < tokenArray.length ){
- while ( tokenIndex < tokenArray.length && tokenArray[tokenIndex].label !== 'TEMPLATE_BEGIN' ) {
+ while ( tokenIndex < tokenArray.length && tokenArray[tokenIndex].label != 'TEMPLATE_BEGIN' ) {
tokenIndex++;
}
//open template
@@ -62,18 +58,19 @@ evt: {
var beginIndex = tokenIndex;
var endIndex = -1; //no match found
var openTemplates = 1;
- while ( tokenIndex < tokenArray.length - 1 && endIndex === -1 ) {
+ var templatesMatched = false;
+ while ( tokenIndex < tokenArray.length - 1 && endIndex == -1 ) {
tokenIndex++;
- if ( tokenArray[tokenIndex].label === 'TEMPLATE_BEGIN' ) {
+ if ( tokenArray[tokenIndex].label == 'TEMPLATE_BEGIN' ) {
openTemplates++;
- } else if ( tokenArray[tokenIndex].label === 'TEMPLATE_END' ) {
+ } else if ( tokenArray[tokenIndex].label == 'TEMPLATE_END' ) {
openTemplates--;
- if ( openTemplates === 0 ) {
+ if ( openTemplates == 0 ) {
endIndex = tokenIndex;
} //we can stop looping
}
}//while finding template ending
- if ( endIndex !== -1 ) {
+ if ( endIndex != -1 ) {
markers.push( {
start: tokenArray[beginIndex].offset,
end: tokenArray[endIndex].offset,
@@ -95,7 +92,7 @@ evt: {
}
},
onSkip: function( node ) {
- if ( $( node ).html() === $( node ).data( 'oldHTML' ) ) {
+ if ( $( node ).html() == $( node ).data( 'oldHTML' ) ) {
// No change
return;
}
@@ -107,7 +104,7 @@ evt: {
if ( $( node ).parent().hasClass( 'wikiEditor-template' ) ) {
var $label = $( node ).parent().find( '.wikiEditor-template-label' );
var displayName = $.wikiEditor.modules.templateEditor.fn.getTemplateDisplayName( model );
- if ( $label.text() !== displayName ) {
+ if ( $label.text() != displayName ) {
$label.text( displayName );
}
}
@@ -122,7 +119,7 @@ evt: {
$.wikiEditor.modules.templateEditor.fn.bindTemplateEvents( $( node ) );
}
},
- getAnchor: function( ca1 ) {
+ getAnchor: function( ca1, ca2 ) {
return $( ca1.parentNode ).is( 'span.wikiEditor-template-text' ) ?
ca1.parentNode : null;
},
@@ -145,9 +142,7 @@ evt: {
var $evtElem = event.jQueryNode;
if ( $evtElem.hasClass( 'wikiEditor-template-label' ) ) {
// Allow anything if the command or control key are depressed
- if ( event.ctrlKey || event.metaKey ) {
- return true;
- }
+ if ( event.ctrlKey || event.metaKey ) return true;
switch ( event.which ) {
case 13: // Enter
$evtElem.click();
@@ -182,22 +177,14 @@ evt: {
}
}
},
- /**
- * @param context
- * @param event
- */
- keyup: function( context ) {
+ keyup: function( context, event ) {
// Rest our ignoreKeypress variable if it's set to true
if ( context.$iframe.data( 'ignoreKeypress' ) ) {
context.$iframe.data( 'ignoreKeypress', false );
}
return true;
},
- /**
- * @param context
- * @param event
- */
- keypress: function( context ) {
+ keypress: function( context, event ) {
// If this event is from a keydown event which we want to block, ignore it
return ( context.$iframe.data( 'ignoreKeypress' ) ? false : true );
}
@@ -223,7 +210,7 @@ fn: {
* @param context Context object of editor to create module in
* @param config Configuration object to create module from
*/
- create: function( context ) {
+ create: function( context, config ) {
// Initialize module within the context
context.modules.templateEditor = {};
},
@@ -233,7 +220,8 @@ fn: {
*/
wrapTemplate: function( $wrapper ) {
var model = $wrapper.data( 'model' );
- $wrapper
+ var context = $wrapper.data( 'marker' ).context;
+ var $template = $wrapper
.wrap( '<span class="wikiEditor-template"></span>' )
.addClass( 'wikiEditor-template-text wikiEditor-template-text-shrunken' )
.parent()
@@ -261,7 +249,7 @@ fn: {
bindTemplateEvents: function( $wrapper ) {
var $template = $wrapper.parent( '.wikiEditor-template' );
- if ( typeof opera === 'undefined' ) {
+ if ( typeof ( opera ) == "undefined" ) {
$template.parent().attr('contentEditable', 'false');
}
@@ -286,7 +274,7 @@ fn: {
* Toggle the visisbilty of the wikitext for a given template
* @param $wrapper The origianl wrapper we want expand/collapse
*/
- toggleWikiTextEditor: function( $wrapper ) {
+ toggleWikiTextEditor: function( $wrapper ) {
var context = $wrapper.data( 'marker' ).context;
var $template = $wrapper.parent( '.wikiEditor-template' );
context.fn.purgeOffsets();
@@ -297,11 +285,11 @@ fn: {
var $templateText = $template.find( '.wikiEditor-template-text' );
$templateText.toggleClass( 'wikiEditor-template-text-shrunken' );
$templateText.toggleClass( 'wikiEditor-template-text-visible' );
- if ( $templateText.hasClass('wikiEditor-template-text-shrunken') ){
+ if( $templateText.hasClass('wikiEditor-template-text-shrunken') ){
//we just closed the template
// Update the model if we need to
- if ( $templateText.html() !== $templateText.data( 'oldHTML' ) ) {
+ if ( $templateText.html() != $templateText.data( 'oldHTML' ) ) {
var templateModel = $.wikiEditor.modules.templateEditor.fn.updateModel( $templateText );
//this is the only place the template name can be changed; keep the template name in sync
@@ -362,7 +350,7 @@ fn: {
var $templateText = $templateDiv.children( '.wikiEditor-template-text' );
var templateModel = $templateText.data( 'model' );
// Update the model if we need to
- if ( $templateText.html() !== $templateText.data( 'oldHTML' ) ) {
+ if ( $templateText.html() != $templateText.data( 'oldHTML' ) ) {
templateModel = $.wikiEditor.modules.templateEditor.fn.updateModel( $templateText );
}
@@ -374,11 +362,11 @@ fn: {
var $rows = $fields.find( '.wikiEditor-template-dialog-field-wrapper' );
for ( var paramIndex in params ) {
var param = params[paramIndex];
- if ( typeof param.name === 'undefined' ) {
+ if ( typeof param.name == 'undefined' ) {
// param is the template name, skip it
continue;
}
- var paramText = typeof param === 'string' ?
+ var paramText = typeof param == 'string' ?
param.name.replace( /[\_\-]/g, ' ' ) :
param.name;
var paramVal = templateModel.getValue( param.name );
@@ -409,13 +397,11 @@ fn: {
.data( 'expanded', false )
.bind( 'cut paste keypress click change', function( e ) {
// If this was fired by a tab keypress, let it go
- if ( e.keyCode === 9 || e.keyCode === '9' ) {
- return true;
- }
+ if ( e.keyCode == '9' ) return true;
var $this = $( this );
setTimeout( function() {
var expanded = $this.data( 'expanded' );
- if ( $this.val().indexOf( '\n' ) !== -1 || $this.val().length > 24 ) {
+ if ( $this.val().indexOf( '\n' ) != -1 || $this.val().length > 24 ) {
if ( !expanded ) {
$this.animate( { 'height': '4.5em' }, 'fast' );
$this.data( 'expanded', true );
@@ -469,7 +455,7 @@ fn: {
updateModel: function( $templateText, model ) {
var context = $templateText.data( 'marker' ).context;
var text;
- if ( typeof model === 'undefined' ) {
+ if ( typeof model == 'undefined' ) {
text = context.fn.htmlToText( $templateText.html() );
} else {
text = model.getText();
@@ -478,7 +464,7 @@ fn: {
$templateText.text( text );
$templateText.html( $templateText.html().replace( /\n/g, '<br />' ) );
$templateText.data( 'oldHTML', $templateText.html() );
- if ( typeof model === 'undefined' ) {
+ if ( typeof model == 'undefined' ) {
model = new $.wikiEditor.modules.templateEditor.fn.model( text );
$templateText.data( 'model', model );
}
@@ -490,9 +476,9 @@ fn: {
*/
getTemplateDisplayName: function ( model ) {
var tName = model.getName();
- if( model.getValue( 'name' ) !== '' ) {
+ if( model.getValue( 'name' ) != '' ) {
return tName + ': ' + model.getValue( 'name' );
- } else if( model.getValue( 'Name' ) !== '' ) {
+ } else if( model.getValue( 'Name' ) != '' ) {
return tName + ': ' + model.getValue( 'Name' );
} else if( tName.toLowerCase() in $.wikiEditor.modules.templateEditor.nameMappings ) {
return tName + ': ' + model.getValue( $.wikiEditor.modules.templateEditor.nameMappings[tName.toLowerCase()] );
@@ -555,28 +541,27 @@ fn: {
var retVal;
if ( isNaN( name ) ) {
// It's a string!
- if ( typeof paramsByName[name] === 'undefined' ) {
+ if ( typeof paramsByName[name] == 'undefined' ) {
// Does not exist
- return '';
+ return "";
}
rangeIndex = paramsByName[name];
} else {
// It's a number!
- rangeIndex = parseInt( name, 10 );
+ rangeIndex = parseInt( name );
}
- if ( typeof params[rangeIndex] === 'undefined' ) {
+ if ( typeof params[rangeIndex] == 'undefined' ) {
// Does not exist
- return '';
+ return "";
}
valueRange = ranges[params[rangeIndex].valueIndex];
- if ( typeof valueRange.newVal === 'undefined' || original ) {
+ if ( typeof valueRange.newVal == 'undefined' || original ) {
// Value unchanged, return original wikitext
retVal = wikitext.substring( valueRange.begin, valueRange.end );
} else {
// New value exists, return new value
retVal = valueRange.newVal;
}
- /*jshint eqnull:true */
if ( value != null ) {
ranges[params[rangeIndex].valueIndex].newVal = value;
}
@@ -589,7 +574,7 @@ fn: {
* Get template name
*/
this.getName = function() {
- if( typeof ranges[templateNameIndex].newVal === 'undefined' ) {
+ if( typeof ranges[templateNameIndex].newVal == 'undefined' ) {
return wikitext.substring( ranges[templateNameIndex].begin, ranges[templateNameIndex].end );
} else {
return ranges[templateNameIndex].newVal;
@@ -650,9 +635,9 @@ fn: {
* Get modified template text
*/
this.getText = function() {
- var newText = "";
- for ( var i = 0 ; i < ranges.length; i++ ) {
- if( typeof ranges[i].newVal === 'undefined' ) {
+ newText = "";
+ for ( i = 0 ; i < ranges.length; i++ ) {
+ if( typeof ranges[i].newVal == 'undefined' ) {
newText += wikitext.substring( ranges[i].begin, ranges[i].end );
} else {
newText += ranges[i].newVal;
@@ -674,7 +659,7 @@ fn: {
var adjustment = 0;
for (var i = 0 ; i < ranges.length; i++ ) {
ranges[i].begin += adjustment;
- if ( typeof ranges[i].adjust !== 'undefined' ) {
+ if( typeof ranges[i].adjust != 'undefined' ) {
adjustment += ranges[i].adjust();
// NOTE: adjust should be a function that has the information necessary to calculate the length of
// this 'segment'
@@ -695,16 +680,15 @@ fn: {
// Get rid of first {{ with whitespace
var sanatizedStr = wikitext.replace( /{{/, " " );
// Replace end
- var endBraces = sanatizedStr.match( /}}\s*$/ );
+ endBraces = sanatizedStr.match( /}}\s*$/ );
if ( endBraces ) {
sanatizedStr = sanatizedStr.substring( 0, endBraces.index ) + " " +
sanatizedStr.substring( endBraces.index + 2 );
}
- var startIndex, endIndex, sanatizedSegment, openBraces, brace;
//treat HTML comments like whitespace
- while ( sanatizedStr.indexOf( '<!' ) !== -1 ) {
+ while ( sanatizedStr.indexOf( '<!' ) != -1 ) {
startIndex = sanatizedStr.indexOf( '<!' );
endIndex = sanatizedStr.indexOf('-->') + 3;
if( endIndex < 3 ){
@@ -716,26 +700,26 @@ fn: {
}
// Match the open braces we just found with equivalent closing braces note, works for any level of braces
- while ( sanatizedStr.indexOf( '{{' ) !== -1 ) {
+ while ( sanatizedStr.indexOf( '{{' ) != -1 ) {
startIndex = sanatizedStr.indexOf( '{{' ) + 1;
openBraces = 2;
endIndex = startIndex;
while ( (openBraces > 0) && (endIndex < sanatizedStr.length) ) {
- brace = sanatizedStr[++endIndex];
- openBraces += brace === '}' ? -1 : brace === '{' ? 1 : 0;
+ var brace = sanatizedStr[++endIndex];
+ openBraces += brace == '}' ? -1 : brace == '{' ? 1 : 0;
}
sanatizedSegment = sanatizedStr.substring( startIndex,endIndex ).replace( /[{}|=]/g , 'X' );
sanatizedStr =
sanatizedStr.substring( 0, startIndex ) + sanatizedSegment + sanatizedStr.substring( endIndex );
}
//links, images, etc, which also can nest
- while ( sanatizedStr.indexOf( '[[' ) !== -1 ) {
+ while ( sanatizedStr.indexOf( '[[' ) != -1 ) {
startIndex = sanatizedStr.indexOf( '[[' ) + 1;
openBraces = 2;
endIndex = startIndex;
while ( (openBraces > 0) && (endIndex < sanatizedStr.length) ) {
- brace = sanatizedStr[++endIndex];
- openBraces += brace === ']' ? -1 : brace === '[' ? 1 : 0;
+ var brace = sanatizedStr[++endIndex];
+ openBraces += brace == ']' ? -1 : brace == '[' ? 1 : 0;
}
sanatizedSegment = sanatizedStr.substring( startIndex,endIndex ).replace( /[\[\]|=]/g , 'X' );
sanatizedStr =
@@ -749,16 +733,14 @@ fn: {
var params = [];
var templateNameIndex = 0;
var doneParsing = false;
- var oldDivider = 0;
- var divider = sanatizedStr.indexOf( '|', oldDivider );
- if ( divider === -1 ) {
+ oldDivider = 0;
+ divider = sanatizedStr.indexOf( '|', oldDivider );
+ if ( divider == -1 ) {
divider = sanatizedStr.length;
doneParsing = true;
collapsible = false; //zero params
}
- var nameMatch = sanatizedStr.substring( 0, divider ).match( /[^\s]/ );
- var nameEndMatch;
- /*jshint eqnull:true */
+ nameMatch = sanatizedStr.substring( 0, divider ).match( /[^\s]/ );
if ( nameMatch != null ) {
ranges.push( new Range( 0 ,nameMatch.index ) ); //whitespace and squiggles upto the name
nameEndMatch = sanatizedStr.substring( 0 , divider ).match( /[^\s]\s*$/ ); //last nonwhitespace character
@@ -776,21 +758,18 @@ fn: {
* Start looping over params
*/
var currentParamNumber = 0;
- var currentField, currentValue, valueBeginIndex, valueBegin, valueEnd;
- var nameIndex, equalsIndex, valueIndex;
- var currentName, nameBegin, nameBeginIndex, nameEnd, nameEndIndex;
var valueEndIndex = ranges[templateNameIndex].end;
var paramsByName = [];
while ( !doneParsing ) {
currentParamNumber++;
oldDivider = divider;
divider = sanatizedStr.indexOf( '|', oldDivider + 1 );
- if ( divider === -1 ) {
+ if ( divider == -1 ) {
divider = sanatizedStr.length;
doneParsing = true;
}
currentField = sanatizedStr.substring( oldDivider+1, divider );
- if ( currentField.indexOf( '=' ) === -1 ) {
+ if ( currentField.indexOf( '=' ) == -1 ) {
// anonymous field, gets a number
//default values, since we'll allow empty values