Revision: 46101
Author:   werdna
Date:     2009-01-23 22:49:13 +0000 (Fri, 23 Jan 2009)

Log Message:
-----------
Put filter-builterator on tools page.

Modified Paths:
--------------
    trunk/extensions/AbuseFilter/AbuseFilter.class.php
    trunk/extensions/AbuseFilter/AbuseFilter.i18n.php
    trunk/extensions/AbuseFilter/Views/AbuseFilterViewEdit.php
    trunk/extensions/AbuseFilter/Views/AbuseFilterViewTools.php
    trunk/extensions/AbuseFilter/edit.js

Removed Paths:
-------------
    trunk/extensions/AbuseFilter/Views/edit.js

Modified: trunk/extensions/AbuseFilter/AbuseFilter.class.php
===================================================================
--- trunk/extensions/AbuseFilter/AbuseFilter.class.php  2009-01-23 22:36:09 UTC 
(rev 46100)
+++ trunk/extensions/AbuseFilter/AbuseFilter.class.php  2009-01-23 22:49:13 UTC 
(rev 46101)
@@ -627,4 +627,47 @@
                
                return $user;
        }
+
+       function buildEditBox( $rules, $textName = 'wpFilterRules' ) {
+               global $wgOut;
+
+               $rules = Xml::textarea( $textName, ( isset( $rules ) ? 
$rules."\n" : "\n" ) );
+
+               $dropDown = array(
+                       'op-arithmetic' => array('+' => 'addition', '-' => 
'subtraction', '*' => 'multiplication', '/' => 'divide', '%' => 'modulo', '**' 
=> 'pow'),
+                       'op-comparison' => array('==' => 'equal', '!=' => 
'notequal', '<' => 'lt', '>' => 'gt', '<=' => 'lte', '>=' => 'gte'),
+                       'op-bool' => array( '!' => 'not', '&' => 'and', '|' => 
'or', '^' => 'xor' ),
+                       'misc' => array( 'in' => 'in', 'like' => 'like', '""' 
=> 'stringlit', ),
+                       'funcs' => array( 'length(string)' => 'length', 
'lcase(string)' => 'lcase', 'ccnorm(string)' => 'ccnorm', 'rmdoubles(string)' 
=> 'rmdoubles', 'specialratio(string)' => 'specialratio', 'norm(string)' => 
'norm', 'count(needle,haystack)' => 'count' ),
+                       'vars' => array( 'ACCOUNTNAME' => 'accountname', 
'ACTION' => 'action', 'ADDED_LINES' => 'addedlines', 'EDIT_DELTA' => 'delta', 
'EDIT_DIFF' => 'diff', 'NEW_SIZE' => 'newsize', 'OLD_SIZE' => 'oldsize', 
'REMOVED_LINES' => 'removedlines', 'SUMMARY' => 'summary', 'ARTICLE_ARTICLEID' 
=> 'article-id', 'ARTICLE_NAMESPACE' => 'article-ns', 'ARTICLE_TEXT' => 
'article-text', 'ARTICLE_PREFIXEDTEXT' => 'article-prefixedtext', 
'MOVED_FROM_ARTICLEID' => 'movedfrom-id', 'MOVED_FROM_NAMESPACE' => 
'movedfrom-ns', 'MOVED_FROM_TEXT' => 'movedfrom-text', 
'MOVED_FROM_PREFIXEDTEXT' => 'movedfrom-prefixedtext', 'MOVED_TO_ARTICLEID' => 
'movedto-id', 'MOVED_TO_NAMESPACE' => 'movedto-ns', 'MOVED_TO_TEXT' => 
'movedto-text', 'MOVED_TO_PREFIXEDTEXT' => 'movedto-prefixedtext', 
'USER_EDITCOUNT' =>  'user-editcount', 'USER_AGE' => 'user-age', 'USER_NAME' => 
'user-name', 'USER_GROUPS' => 'user-groups', 'USER_EMAILCONFIRM' => 
'user-emailconfirm'),
+               );
+
+               // Generate builder drop-down
+               $builder = '';
+
+               $builder .= Xml::option( wfMsg( 
"abusefilter-edit-builder-select") );
+
+               foreach( $dropDown as $group => $values ) {
+                       $builder .= Xml::openElement( 'optgroup', array( 
'label' => wfMsg( "abusefilter-edit-builder-group-$group" ) ) ) . "\n";
+
+                       foreach( $values as $content => $name ) {
+                               $builder .= Xml::option( wfMsg( 
"abusefilter-edit-builder-$group-$name" ), $content ) . "\n";
+                       }
+
+                       $builder .= Xml::closeElement( 'optgroup' ) . "\n";
+               }
+
+               $rules .= Xml::tags( 'select', array( 'id' => 
'wpFilterBuilder', 'onchange' => 'addText();' ), $builder );
+
+               // Add syntax checking
+               $rules .= Xml::element( 'input', array( 'type' => 'button', 
'onclick' => 'doSyntaxCheck()', 'value' => wfMsg( 'abusefilter-edit-check' ), 
'id' => 'mw-abusefilter-syntaxcheck' ) );
+               $rules .= Xml::element( 'div', array( 'id' => 
'mw-abusefilter-syntaxresult', 'style' => 'display: none;' ), '&nbsp;' );
+
+               // Add script
+               $editScript = file_get_contents(dirname(__FILE__)."/edit.js");
+               $editScript = "var wgFilterBoxName = ".Xml::encodeJSVar( 
$textName ).";\n$editScript";
+               $wgOut->addInlineScript( $editScript );
+
+               return $rules;
+       }
 }

Modified: trunk/extensions/AbuseFilter/AbuseFilter.i18n.php
===================================================================
--- trunk/extensions/AbuseFilter/AbuseFilter.i18n.php   2009-01-23 22:36:09 UTC 
(rev 46100)
+++ trunk/extensions/AbuseFilter/AbuseFilter.i18n.php   2009-01-23 22:49:13 UTC 
(rev 46101)
@@ -114,7 +114,7 @@
        'abusefilter-tools-expr' => 'Expression tester',
        'abusefilter-tools-submitexpr' => 'Evaluate',
        'abusefilter-tools-reautoconfirm' => 'Restore autoconfirmed status',
-       'abusefilter-tools-reautoconfirm-user' => 'User',
+       'abusefilter-tools-reautoconfirm-user' => 'User:',
        'abusefilter-tools-reautoconfirm-submit' => 'Re-autoconfirm',
        'abusefilter-reautoconfirm-none' => 'That user has not had their 
autoconfirmed status suspended.',
        'abusefilter-reautoconfirm-notallowed' => 'You are not allowed to 
restore autoconfirmed status.',

Modified: trunk/extensions/AbuseFilter/Views/AbuseFilterViewEdit.php
===================================================================
--- trunk/extensions/AbuseFilter/Views/AbuseFilterViewEdit.php  2009-01-23 
22:36:09 UTC (rev 46100)
+++ trunk/extensions/AbuseFilter/Views/AbuseFilterViewEdit.php  2009-01-23 
22:49:13 UTC (rev 46101)
@@ -195,7 +195,7 @@
                        }
                }
 
-               $fields['abusefilter-edit-rules'] = $this->buildEditBox($row);
+               $fields['abusefilter-edit-rules'] = 
AbuseFilter::buildEditBox($row->af_pattern);
                $fields['abusefilter-edit-notes'] = Xml::textarea( 
'wpFilterNotes', ( isset( $row->af_comments ) ? $row->af_comments."\n" : "\n" ) 
);
 
                // Build checkboxen
@@ -243,47 +243,6 @@
                return $output;
        }
 
-       function buildEditBox( $row ) {
-               global $wgOut;
-
-               $rules = Xml::textarea( 'wpFilterRules', ( isset( 
$row->af_pattern ) ? $row->af_pattern."\n" : "\n" ) );
-
-               $dropDown = array(
-                       'op-arithmetic' => array('+' => 'addition', '-' => 
'subtraction', '*' => 'multiplication', '/' => 'divide', '%' => 'modulo', '**' 
=> 'pow'),
-                       'op-comparison' => array('==' => 'equal', '!=' => 
'notequal', '<' => 'lt', '>' => 'gt', '<=' => 'lte', '>=' => 'gte'),
-                       'op-bool' => array( '!' => 'not', '&' => 'and', '|' => 
'or', '^' => 'xor' ),
-                       'misc' => array( 'in' => 'in', 'like' => 'like', '""' 
=> 'stringlit', ),
-                       'funcs' => array( 'length(string)' => 'length', 
'lcase(string)' => 'lcase', 'ccnorm(string)' => 'ccnorm', 'rmdoubles(string)' 
=> 'rmdoubles', 'specialratio(string)' => 'specialratio', 'norm(string)' => 
'norm', 'count(needle,haystack)' => 'count' ),
-                       'vars' => array( 'ACCOUNTNAME' => 'accountname', 
'ACTION' => 'action', 'ADDED_LINES' => 'addedlines', 'EDIT_DELTA' => 'delta', 
'EDIT_DIFF' => 'diff', 'NEW_SIZE' => 'newsize', 'OLD_SIZE' => 'oldsize', 
'REMOVED_LINES' => 'removedlines', 'SUMMARY' => 'summary', 'ARTICLE_ARTICLEID' 
=> 'article-id', 'ARTICLE_NAMESPACE' => 'article-ns', 'ARTICLE_TEXT' => 
'article-text', 'ARTICLE_PREFIXEDTEXT' => 'article-prefixedtext', 
'MOVED_FROM_ARTICLEID' => 'movedfrom-id', 'MOVED_FROM_NAMESPACE' => 
'movedfrom-ns', 'MOVED_FROM_TEXT' => 'movedfrom-text', 
'MOVED_FROM_PREFIXEDTEXT' => 'movedfrom-prefixedtext', 'MOVED_TO_ARTICLEID' => 
'movedto-id', 'MOVED_TO_NAMESPACE' => 'movedto-ns', 'MOVED_TO_TEXT' => 
'movedto-text', 'MOVED_TO_PREFIXEDTEXT' => 'movedto-prefixedtext', 
'USER_EDITCOUNT' =>  'user-editcount', 'USER_AGE' => 'user-age', 'USER_NAME' => 
'user-name', 'USER_GROUPS' => 'user-groups', 'USER_EMAILCONFIRM' => 
'user-emailconfirm'),
-               );
-
-               // Generate builder drop-down
-               $builder = '';
-
-               $builder .= Xml::option( wfMsg( 
"abusefilter-edit-builder-select") );
-
-               foreach( $dropDown as $group => $values ) {
-                       $builder .= Xml::openElement( 'optgroup', array( 
'label' => wfMsg( "abusefilter-edit-builder-group-$group" ) ) ) . "\n";
-
-                       foreach( $values as $content => $name ) {
-                               $builder .= Xml::option( wfMsg( 
"abusefilter-edit-builder-$group-$name" ), $content ) . "\n";
-                       }
-
-                       $builder .= Xml::closeElement( 'optgroup' ) . "\n";
-               }
-
-               $rules .= Xml::tags( 'select', array( 'id' => 
'wpFilterBuilder', 'onchange' => 'addText();' ), $builder );
-
-               // Add syntax checking
-               $rules .= Xml::element( 'input', array( 'type' => 'button', 
'onclick' => 'doSyntaxCheck()', 'value' => wfMsg( 'abusefilter-edit-check' ), 
'id' => 'mw-abusefilter-syntaxcheck' ) );
-               $rules .= Xml::element( 'div', array( 'id' => 
'mw-abusefilter-syntaxresult', 'style' => 'display: none;' ), '&nbsp;' );
-
-               // Add script
-               $wgOut->addInlineScript( 
file_get_contents(dirname(__FILE__)."/edit.js") );
-
-               return $rules;
-       }
-
        function buildConsequenceEditor( $row, $actions ) {
                global $wgAbuseFilterAvailableActions;
                $setActions = array();

Modified: trunk/extensions/AbuseFilter/Views/AbuseFilterViewTools.php
===================================================================
--- trunk/extensions/AbuseFilter/Views/AbuseFilterViewTools.php 2009-01-23 
22:36:09 UTC (rev 46100)
+++ trunk/extensions/AbuseFilter/Views/AbuseFilterViewTools.php 2009-01-23 
22:49:13 UTC (rev 46101)
@@ -13,44 +13,15 @@
 
                // Expression evaluator
                $eval = '';
-               $eval .= Xml::textarea( 'wpTestExpr', "" );
+               $eval .= AbuseFilter::buildEditBox( '', 'wpTestExpr' );
                $eval .= Xml::tags( 'p', null, Xml::element( 'input', array( 
'type' => 'button', 'id' => 'mw-abusefilter-submitexpr', 'onclick' => 
'doExprSubmit();', 'value' => wfMsg( 'abusefilter-tools-submitexpr' ) ) ) );
                $eval .= Xml::element( 'p', array( 'id' => 
'mw-abusefilter-expr-result' ), ' ' );
                $eval = Xml::fieldset( wfMsg( 'abusefilter-tools-expr' ), $eval 
);
                $wgOut->addHTML( $eval );
 
                // Associated script
-               $exprScript = "function doExprSubmit()
-               {
-                       var expr = document.getElementById('wpTestExpr').value;
-                       injectSpinner( document.getElementById( 
'mw-abusefilter-submitexpr' ), 'abusefilter-expr' );
-                       sajax_do_call( 'AbuseFilter::ajaxEvaluateExpression', 
[expr], processExprResult );
-               }
-               function processExprResult( request ) {
-                       var response = request.responseText;
+               $exprScript = file_get_contents( dirname( __FILE__ ) . 
'/tools.js' );
 
-                       removeSpinner( 'abusefilter-expr' );
-
-                       var el = document.getElementById( 
'mw-abusefilter-expr-result' );
-                       changeText( el, response );
-               }
-               function doReautoSubmit()
-               {
-                       var name = 
document.getElementById('reautoconfirm-user').value;
-                       injectSpinner( document.getElementById( 
'mw-abusefilter-reautoconfirmsubmit' ), 'abusefilter-reautoconfirm' );
-                       sajax_do_call( 'AbuseFilter::ajaxReAutoconfirm', 
[name], processReautoconfirm );
-               }
-               function processReautoconfirm( request ) {
-                       var response = request.responseText;
-
-                       if (strlen(response)) {
-                               jsMsg( response );
-                       }
-
-                       removeSpinner( 'abusefilter-reautoconfirm' );
-               }
-               ";
-
                $wgOut->addInlineScript( $exprScript );
 
                global $wgUser;
@@ -59,6 +30,7 @@
                        // Hacky little box to re-enable autoconfirmed if it 
got disabled
                        $rac = '';
                        $rac .= Xml::inputLabel( wfMsg( 
'abusefilter-tools-reautoconfirm-user' ), 'wpReAutoconfirmUser', 
'reautoconfirm-user', 45 );
+                       $rac .= '&nbsp;';
                        $rac .= Xml::element( 'input', array( 'type' => 
'button', 'id' => 'mw-abusefilter-reautoconfirmsubmit', 'onclick' => 
'doReautoSubmit();', 'value' => wfMsg( 'abusefilter-tools-reautoconfirm-submit' 
) ) );
                        $rac = Xml::fieldset( wfMsg( 
'abusefilter-tools-reautoconfirm' ), $rac );
                        $wgOut->addHTML( $rac );

Deleted: trunk/extensions/AbuseFilter/Views/edit.js
===================================================================
--- trunk/extensions/AbuseFilter/Views/edit.js  2009-01-23 22:36:09 UTC (rev 
46100)
+++ trunk/extensions/AbuseFilter/Views/edit.js  2009-01-23 22:49:13 UTC (rev 
46101)
@@ -1,61 +0,0 @@
-function doSyntaxCheck()
-{
-       var filter = document.getElementById('wpFilterRules').value;
-       injectSpinner( document.getElementById( 'mw-abusefilter-syntaxcheck' ), 
'abusefilter-syntaxcheck' );
-       sajax_do_call( 'AbuseFilter::ajaxCheckSyntax', [filter], 
processSyntaxResult );
-}
-function processSyntaxResult( request ) {
-       var response = request.responseText;
-       
-       removeSpinner( 'abusefilter-syntaxcheck' );
-
-       var el = document.getElementById( 'mw-abusefilter-syntaxresult' );
-       el.style.display = 'block';
-       
-       if (response.match( /OK/ )) {
-               // Successful
-               changeText( el, 'No syntax errors.' );
-               el.syntaxOk = true;
-       } else {
-               var error = response.substr(4);
-               changeText( el, 'Syntax error: '+error );
-               el.syntaxOk = false;
-       }
-}
-function addText() {
-       if (document.getElementById('wpFilterBuilder').selectedIndex == 0) {
-               return;
-       }
-       
-       insertAtCursor(document.getElementById('wpFilterRules'), 
document.getElementById('wpFilterBuilder').value + " ");
-       document.getElementById('wpFilterBuilder').selectedIndex = 0;
-}
-
-//From http://clipmarks.com/clipmark/CEFC94CB-94D6-4495-A7AA-791B7355E284/
-function insertAtCursor(myField, myValue) {
-       //IE support
-       if (document.selection) {
-               myField.focus();
-               sel = document.selection.createRange();
-               sel.text = myValue;
-       }
-       //MOZILLA/NETSCAPE support
-       else if (myField.selectionStart || myField.selectionStart == '0') {
-               var startPos = myField.selectionStart;
-               var endPos = myField.selectionEnd;
-               myField.value = myField.value.substring(0, startPos)
-               + myValue
-               + myField.value.substring(endPos, myField.value.length);
-       } else {
-               myField.value += myValue;
-       }
-}
-
-addOnloadHook( function() {
-       addHandler( document.getElementById( 'wpFilterRules' ), 'keyup', 
function() {
-               el = document.getElementById( 'mw-abusefilter-syntaxresult' );
-               if (el.syntaxOk == true) {
-                       el.style.display = 'none';
-               }
-       } );
-} );
\ No newline at end of file

Modified: trunk/extensions/AbuseFilter/edit.js
===================================================================
--- trunk/extensions/AbuseFilter/edit.js        2009-01-23 22:36:09 UTC (rev 
46100)
+++ trunk/extensions/AbuseFilter/edit.js        2009-01-23 22:49:13 UTC (rev 
46101)
@@ -1,9 +1,10 @@
 function doSyntaxCheck()
 {
-       var filter = document.getElementById('wpFilterRules').value;
+       var filter = document.getElementById(wgFilterBoxName).value;
        injectSpinner( document.getElementById( 'mw-abusefilter-syntaxcheck' ), 
'abusefilter-syntaxcheck' );
        sajax_do_call( 'AbuseFilter::ajaxCheckSyntax', [filter], 
processSyntaxResult );
 }
+
 function processSyntaxResult( request ) {
        var response = request.responseText;
        
@@ -15,17 +16,20 @@
        if (response.match( /OK/ )) {
                // Successful
                changeText( el, 'No syntax errors.' );
+               el.syntaxOk = true;
        } else {
                var error = response.substr(4);
                changeText( el, 'Syntax error: '+error );
+               el.syntaxOk = false;
        }
 }
+
 function addText() {
        if (document.getElementById('wpFilterBuilder').selectedIndex == 0) {
                return;
        }
        
-       insertAtCursor(document.getElementById('wpFilterRules'), 
document.getElementById('wpFilterBuilder').value + " ");
+       insertAtCursor(document.getElementById(wgFilterBoxName), 
document.getElementById('wpFilterBuilder').value + " ");
        document.getElementById('wpFilterBuilder').selectedIndex = 0;
 }
 
@@ -50,7 +54,10 @@
 }
 
 addOnloadHook( function() {
-       addHandler( document.getElementById( 'wpFilterRules' ), 'keyup', 
function() {
-               document.getElementById( 'mw-abusefilter-syntaxresult' 
).style.display = 'none';
+       addHandler( document.getElementById( wgFilterBoxName ), 'keyup', 
function() {
+               el = document.getElementById( 'mw-abusefilter-syntaxresult' );
+               if (el.syntaxOk == true) {
+                       el.style.display = 'none';
+               }
        } );
 } );
\ No newline at end of file



_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to