http://www.mediawiki.org/wiki/Special:Code/MediaWiki/96158
Revision: 96158
Author: hashar
Date: 2011-09-02 22:41:01 +0000 (Fri, 02 Sep 2011)
Log Message:
-----------
(bug 26084) add some ajax to easily delete tags
TODO: implements functionality to add tags easily!
Modified Paths:
--------------
trunk/extensions/CodeReview/CodeReview.i18n.php
trunk/extensions/CodeReview/CodeReview.php
trunk/extensions/CodeReview/ui/CodeRevisionView.php
Added Paths:
-----------
trunk/extensions/CodeReview/modules/ext.codereview.tags.css
trunk/extensions/CodeReview/modules/ext.codereview.tags.js
Modified: trunk/extensions/CodeReview/CodeReview.i18n.php
===================================================================
--- trunk/extensions/CodeReview/CodeReview.i18n.php 2011-09-02 22:34:16 UTC
(rev 96157)
+++ trunk/extensions/CodeReview/CodeReview.i18n.php 2011-09-02 22:41:01 UTC
(rev 96158)
@@ -82,6 +82,8 @@
'code-rev-tags' => 'Tags:',
'code-rev-tag-add' => 'Add tags:',
'code-rev-tag-remove' => 'Remove tags:',
+ 'code-rev-tag-addtag-tooltip' => 'Add new tags to this revision',
+ 'code-rev-tag-removetag-tooltip' => 'Click to remove tag "$1"',
'code-rev-comment-by' => 'Comment by $1',
'code-rev-comment-preview' => 'Preview',
'code-rev-comment-preview-accesskey' => 'p',
Modified: trunk/extensions/CodeReview/CodeReview.php
===================================================================
--- trunk/extensions/CodeReview/CodeReview.php 2011-09-02 22:34:16 UTC (rev
96157)
+++ trunk/extensions/CodeReview/CodeReview.php 2011-09-02 22:41:01 UTC (rev
96158)
@@ -186,6 +186,12 @@
'messages' => array( 'codereview-overview-title',
'codereview-overview-desc' ),
) + $commonModuleInfo;
+// Add, remove tags from a revision view
+$wgResourceModules['ext.codereview.tags'] = array(
+ 'scripts' => 'ext.codereview.tags.js',
+ 'styles' => 'ext.codereview.tags.css',
+) + $commonModuleInfo;
+
// If you are running a closed svn, fill the following two lines with the
username and password
// of a user allowed to access it. Otherwise, leave it false.
// This is only necessary if using the shell method to access Subversion
Added: trunk/extensions/CodeReview/modules/ext.codereview.tags.css
===================================================================
--- trunk/extensions/CodeReview/modules/ext.codereview.tags.css
(rev 0)
+++ trunk/extensions/CodeReview/modules/ext.codereview.tags.css 2011-09-02
22:41:01 UTC (rev 96158)
@@ -0,0 +1,17 @@
+/* Unique green box to add new tags */
+#codereview-add-tag {
+ color: #00FF00;
+ font-size: 1.2em;
+
+ background-color: #EDFFED;
+ padding: 0 0.5em;
+ border: 1px solid #00FF00;
+ cursor: pointer;
+}
+
+/* Red 'erase to the left' signs to remove a tag */
+.codereview-remove-tag {
+ color: #FF0000;
+ font-size: 1.2em;
+ cursor: crosshair;
+}
Added: trunk/extensions/CodeReview/modules/ext.codereview.tags.js
===================================================================
--- trunk/extensions/CodeReview/modules/ext.codereview.tags.js
(rev 0)
+++ trunk/extensions/CodeReview/modules/ext.codereview.tags.js 2011-09-02
22:41:01 UTC (rev 96158)
@@ -0,0 +1,59 @@
+( function( $ ) {
+var $rev = 0;
+
+window.CodeReview = $.extend( window.CodeReview, {
+
+ /* TODO we should probably add that click handling from PHP
+ * ui/CodeRevisionView.php */
+ tagInit: function( rev ) {
+ $rev = rev;
+ $('.codereview-remove-tag').click( function() {
+ CodeReview.tagRemove( $(this).attr( 'id' ) )
+ });
+ },
+ tagAdd: function() {
+
+ },
+ tagRemove: function( HTMLId ) {
+ var tag = HTMLId.replace( /codereview-remove-tag-(.*)/, "$1" );
+ $.ajax({
+ url: mw.util.wikiScript( 'api' ),
+ data: {
+ 'action': 'coderevisionupdate',
+
+ 'repo' : mw.config.get(
'wgCodeReviewRepository' ),
+ 'rev' : $rev,
+
+ 'removetags': tag,
+
+ 'format': 'json',
+ },
+ dataType: 'json',
+ type: 'POST',
+ success: function( data ) {
+ var remover = $( '#'+HTMLId );
+ // remove tag:
+ remover.prev().fadeOut().remove();
+
+ /**
+ * tag might be followed by a text node ', '
+ * which can not be reached with jQuery next()
+ */
+ var nextNode = remover[0].nextSibling;
+ console.log( nextNode );
+ if( nextNode.nodeType === 3
+ && nextNode.nodeValue === ", " ) {
+ nextNode.parentNode.removeChild(
nextNode );
+ }
+ // finally remove the tag removal sign
+ remover.fadeOut().remove();
+ },
+ error: function() {
+ // TODO
+ },
+ });
+ },
+
+
+}); // window.CodeReview
+})( jQuery );
Modified: trunk/extensions/CodeReview/ui/CodeRevisionView.php
===================================================================
--- trunk/extensions/CodeReview/ui/CodeRevisionView.php 2011-09-02 22:34:16 UTC
(rev 96157)
+++ trunk/extensions/CodeReview/ui/CodeRevisionView.php 2011-09-02 22:41:01 UTC
(rev 96158)
@@ -193,12 +193,19 @@
}
$html .= xml::closeElement( 'form' );
+ // Encode revision id for our modules
+ $encRev = Xml::encodeJsVar( $this->mRev->getId() );
+
$wgOut->addModules( 'ext.codereview.linecomment' );
- $encRev = Xml::encodeJsVar( $this->mRev->getId() );
$wgOut->addInLineScript(
"CodeReview.lcInit( $encRev );"
);
+ $wgOut->addModules( 'ext.codereview.tags' );
+ $wgOut->addInlineScript(
+ "CodeReview.tagInit( $encRev );"
+ );
+
$wgOut->addHTML( $html );
}
@@ -337,6 +344,10 @@
) . ' ';
}
if ( $wgUser->isAllowed( 'codereview-add-tag' ) ) {
+ $list .= Xml::Element( 'span', array(
+ 'id' => "codereview-add-tag",
+ 'title' => wfMsg(
'code-rev-tag-addtag-tooltip' ),
+ ), '+' ); // TODO: replace '+' with a message
$list .= $this->addTagForm( $this->mAddTags,
$this->mRemoveTags );
}
return $list;
@@ -415,9 +426,27 @@
* @return string
*/
protected function formatTag( $tag ) {
+ global $wgUser;
+
$repo = $this->mRepo->getName();
$special = SpecialPage::getTitleFor( 'Code', "$repo/tag/$tag" );
- return $this->skin->link( $special, htmlspecialchars( $tag ) );
+ $link = $this->skin->link(
+ $special,
+ htmlspecialchars( $tag ),
+ array( 'class' => 'mw-codereview-tag' )
+ );
+
+ # Let allowed users to remove tags using JS
+ if( $wgUser->isAllowed( 'codereview-add-tag' ) ) {
+ $link .= ' '.
+ Xml::Element( 'span', array(
+ 'id' => "codereview-remove-tag-{$tag}",
+ 'class' => 'codereview-remove-tag',
+ 'title' => wfMsg(
'code-rev-tag-removetag-tooltip', $tag ),
+ ), '⌫' ); // TODO: replace '⌫' with a message
+ }
+
+ return $link;
}
/**
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs