Nikerabbit has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/107345


Change subject: CSS class prefixing and BEMification
......................................................................

CSS class prefixing and BEMification

To see how it would look like

Change-Id: I8b79392c03f3dc7fda49f32e9812bc388cd7e5a5
---
M modules/base/ext.cx.base.js
M modules/base/styles/ext.cx.base.less
M modules/header/ext.cx.header.js
M modules/header/ext.cx.progressbar.js
M modules/header/styles/ext.cx.header.less
M modules/header/styles/ext.cx.progressbar.less
M modules/translation/ext.cx.publish.js
M modules/translation/styles/ext.cx.translation.less
M tests/browser/features/support/pages/content_translation_page.rb
9 files changed, 108 insertions(+), 109 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/ContentTranslation 
refs/changes/45/107345/1

diff --git a/modules/base/ext.cx.base.js b/modules/base/ext.cx.base.js
index b826108..ee10ef0 100644
--- a/modules/base/ext.cx.base.js
+++ b/modules/base/ext.cx.base.js
@@ -43,19 +43,22 @@
        ContentTranslation.prototype.render = function () {
                var $content;
 
-               $content = $( '<div>' ).addClass( 'content' )
+               $content = $( '<div>' ).addClass( 'cx-widget' )
                        .append(
-                               $( '<div>' ).addClass( 'header' ),
-                               $( '<div>' ).addClass( 'source' ),
-                               $( '<div>' ).addClass( 'translation' ),
-                               $( '<div>' ).addClass( 'tools' )
+                               $( '<div>' ).addClass( 'cx-widget__header' ),
+                               $( '<div>' ).addClass( 'cx-widget__columns' )
+                                       .append(
+                                               $( '<div>' ).addClass( 
'cx-column cx-column--source' ),
+                                               $( '<div>' ).addClass( 
'cx-column cx-column--translation' ),
+                                               $( '<div>' ).addClass( 
'cx-column cx-column--aids' )
+                                       )
                        );
 
                this.$container.append( $content );
-               this.$header = this.$container.find( '.header' );
-               this.$source = this.$container.find( '.source' );
-               this.$translation = this.$container.find( '.translation' );
-               this.$tools = this.$container.find( '.tools' );
+               this.$header = this.$container.find( '.cx-widget__header' );
+               this.$source = this.$container.find( '.cx-column--source' );
+               this.$translation = this.$container.find( 
'.cx-column--translation' );
+               this.$tools = this.$container.find( '.cx-column--aids' );
        };
 
        $.fn.cx = function ( options ) {
diff --git a/modules/base/styles/ext.cx.base.less 
b/modules/base/styles/ext.cx.base.less
index a025a14..a29bc45 100644
--- a/modules/base/styles/ext.cx.base.less
+++ b/modules/base/styles/ext.cx.base.less
@@ -6,38 +6,36 @@
        color: @grey;
 }
 
-.content {
+/**
+ * Container for the translation widget
+ */
+.cx-widget {
        .mw-ui-grid;
        color: @grey;
 }
 
-.header {
+.cx-widget__header {
        .mw-ui-item;
        .mw-ui-one-whole;
        .mw-ui-palm-one-whole;
 }
 
-.source {
+.cx-column {
        .mw-ui-item;
        .mw-ui-one-third;
+}
+
+.cx-column--source,
+.cx-column--translation {
        .mw-ui-palm-one-half;
 }
 
-.translation {
-       .mw-ui-item;
-       .mw-ui-one-third;
-       .mw-ui-palm-one-half;
-
-}
-
-.tools {
-       .mw-ui-item;
-       .mw-ui-one-third;
+.cx-column--aids {
        .mw-ui-palm-one-whole;
        background: #f0f0f0;
-
 }
 
+/* Unused? */
 .suggestion-list {
        .mw-ui-grid;
 }
diff --git a/modules/header/ext.cx.header.js b/modules/header/ext.cx.header.js
index 8987d21..6f6797e 100644
--- a/modules/header/ext.cx.header.js
+++ b/modules/header/ext.cx.header.js
@@ -28,14 +28,14 @@
        };
 
        ContentTranslationHeader.prototype.render = function () {
+               this.$container.addClass( 'cx-header' );
                this.$container.append(
                        $( '<div>' )
-                               .addClass( 'logo' ),
+                               .addClass( 'cx-header__logo' ),
                        $( '<div>' )
-                               .addClass( 'user-details' )
+                               .addClass( 'cx-header__user-details' )
                                .append(
                                        $( '<a>' )
-                                               .addClass( 'user-name' )
                                                .attr( 'href', mw.util.getUrl( 
'User:' + mw.user.getName() ) )
                                                .text ( mw.user.getName() )
                                )
@@ -43,20 +43,20 @@
 
                this.$container.append(
                        $( '<div>' )
-                               .addClass( 'translation-bar' )
+                               .addClass( 'cx-header__bar' )
                                .append(
                                        $( '<div>' )
-                                               .addClass( 
'translation-center-link' )
+                                               .addClass( 
'cx-header__translation-center' )
                                                .append(
                                                        $( '<a>' )
                                                                .text( 
'Translation center' )
                                                                .attr( 'href', 
'#' )
                                                ),
                                        $( '<div>' )
-                                               .addClass( 
'translation-progress' )
+                                               .addClass( 
'cx-header__progressbar' )
                                                .cxProgressBar(),
                                        $( '<button>' )
-                                               .addClass( 'publish 
mw-ui-button mw-ui-constructive' )
+                                               .addClass( 'cx-header__publish 
publish mw-ui-button mw-ui-constructive' )
                                                .text( 'Publish translation' )
                                )
                );
diff --git a/modules/header/ext.cx.progressbar.js 
b/modules/header/ext.cx.progressbar.js
index 6ff935c..7a8c51f 100644
--- a/modules/header/ext.cx.progressbar.js
+++ b/modules/header/ext.cx.progressbar.js
@@ -31,14 +31,15 @@
        ProgressBar.prototype.render = function () {
                this.$container.append(
                        $( '<div>' )
-                               .addClass( 'progressbar' )
+                               .addClass( 'cx-progressbar' )
                                .append(
-                                       $( '<span>')
-                                               .addClass( 'status' )
+                                       $( '<span>' ).addClass( 
'cx-progressbar__bar' )
                                ),
-                       $( '<span>' )
-                               .addClass( 'status-text' )
+                       $( '<span>' ).addClass( 'cx-progressbar__text' )
                );
+
+               this.$bar = this.$container.find( '.cx-progressbar__bar' );
+               this.$text = this.$container.find( '.cx-progressbar__text' );
 
                this.update( 0 );
        };
@@ -49,10 +50,8 @@
 
        ProgressBar.prototype.update = function ( percentage ) {
                this.status = percentage;
-               this.$container.find( '.status' )
-                       .css( 'width', this.status + '%' );
-               this.$container.find( '.status-text' )
-                       .text( this.status + '% translated' );
+               this.$bar.css( 'width', this.status + '%' );
+               this.$text.text( this.status + '% translated' );
        };
 
        $.fn.cxProgressBar = function ( options ) {
diff --git a/modules/header/styles/ext.cx.header.less 
b/modules/header/styles/ext.cx.header.less
index b650198..b475fcd 100644
--- a/modules/header/styles/ext.cx.header.less
+++ b/modules/header/styles/ext.cx.header.less
@@ -1,52 +1,51 @@
 @import "../../base/styles/grid/agora-grid";
 
-.header {
-       .logo {
-               .mw-ui-item;
-               .mw-ui-two-thirds;
-               height: 100px;
-               background-image: url(../images/wikipedia-logo-landscape.png);
-               background-repeat: no-repeat;
-               background-position: left top;
-       }
+.cx-header__logo {
+       .mw-ui-item;
+       .mw-ui-two-thirds;
+       height: 100px;
+       background-image: url(../images/wikipedia-logo-landscape.png);
+       background-repeat: no-repeat;
+       background-position: left top;
+}
 
-       .user-details {
-               .mw-ui-item;
-               .mw-ui-one-third;
-               .user-name {
-                       float: right;
+.cx-header__user-details {
+       .mw-ui-item;
+       .mw-ui-one-third;
+
+       > a {
+               float: right;
+       }
+}
+
+.cx-header__bar {
+       .mw-ui-item;
+       .mw-ui-one-whole;
+       border-bottom: 1px solid #ddd;
+       padding-bottom: 10px;
+}
+
+.cx-header__translation-center {
+       .mw-ui-item;
+       .mw-ui-four-sixths;
+       a {
+               &:before {
+                       content: "";
+                       display: inline-block;
+                       border: 4px solid transparent;
+                       border-right-color: #555;
+                       margin: 0 8px 0 0;
                }
        }
+}
 
-       .translation-bar {
-               .mw-ui-item;
-               .mw-ui-one-whole;
-               border-bottom: 1px solid #ddd;
-               padding-bottom: 10px;
-               .translation-center-link {
-                       .mw-ui-item;
-                       .mw-ui-four-sixths;
-                       a {
-                               &:before {
-                                       content: "";
-                                       display: inline-block;
-                                       border: 4px solid transparent;
-                                       border-right-color: #555;
-                                       margin: 0 8px 0 0;
-                               }
-                       }
-               }
+.cx-header__progressbar {
+       .mw-ui-item;
+       .mw-ui-one-sixth;
+}
 
-               .translation-progress {
-                       .mw-ui-item;
-                       .mw-ui-one-sixth;
-                       padding-bottom: 10px;
-               }
-
-               .publish {
-                       .mw-ui-item;
-                       .mw-ui-one-eighth;
-                       float: right;
-               }
-       }
+.cx-header__publish {
+       .mw-ui-item;
+       .mw-ui-one-eighth;
+       float: right;
 }
diff --git a/modules/header/styles/ext.cx.progressbar.less 
b/modules/header/styles/ext.cx.progressbar.less
index ec86d54..f77ff32 100644
--- a/modules/header/styles/ext.cx.progressbar.less
+++ b/modules/header/styles/ext.cx.progressbar.less
@@ -1,6 +1,6 @@
 @import "../../base/styles/grid/agora-grid";
 
-.progressbar {
+.cx-progressbar {
        .mw-ui-item;
        .mw-ui-one-sixth;
        height: 10px;
@@ -9,22 +9,23 @@
        background: #fbfbfb;
        vertical-align: middle;
        position: absolute;
-       .status {
-               background: #3892E3;
-               display: inline-block;
-               height: 10px;
-               border-radius: 10px;
-               position: absolute;
-               left: 0;
-               transition: width 1s;
-       }
 }
 
-.status-text {
+.cx-progressbar__bar {
+       background: #3892E3;
+       display: inline-block;
+       height: 10px;
+       border-radius: 10px;
+       position: absolute;
+       left: 0;
+       transition: width 1s;
+}
+
+.cx-progressbar__text {
        .mw-ui-item;
        .mw-ui-one-whole;
        font-size: 0.8em;
        color: #999;
        text-align: right;
        padding-top: 10px;
-}
\ No newline at end of file
+}
diff --git a/modules/translation/ext.cx.publish.js 
b/modules/translation/ext.cx.publish.js
index 3484550..911c955 100644
--- a/modules/translation/ext.cx.publish.js
+++ b/modules/translation/ext.cx.publish.js
@@ -15,9 +15,10 @@
        mw.cx.publish = function () {
                var translatedTitle, translatedContent, summary, sourceTitle;
 
-               sourceTitle = $( '.source > h2' ).text();
-               translatedTitle = $( '.translation .title' ).text();
-               translatedContent = $( '.translation .article' ).text();
+               // @todo: Refactor so that this module is not grabbing random 
dom nodes
+               sourceTitle = $( '.cx-column--source > h2' ).text();
+               translatedTitle = $( '.cx-column--translation > h2' ).text();
+               translatedContent = $( '.cx-column--translation .article' 
).text();
                summary = '[ContentTranslation] Translated from ' + sourceTitle;
                // To be saved under User:UserName
                translatedTitle = 'User:' + mw.user.getName() + '/' + 
translatedTitle;
diff --git a/modules/translation/styles/ext.cx.translation.less 
b/modules/translation/styles/ext.cx.translation.less
index f14e3f6..3419209 100644
--- a/modules/translation/styles/ext.cx.translation.less
+++ b/modules/translation/styles/ext.cx.translation.less
@@ -1,8 +1,5 @@
 @import "../../base/styles/grid/agora-grid";
 
-.translation {
-       .title,
-       .article {
-               outline: none;
-       }
-}
\ No newline at end of file
+.cx-column--translation > [contenteditable] {
+       outline: none;
+}
diff --git a/tests/browser/features/support/pages/content_translation_page.rb 
b/tests/browser/features/support/pages/content_translation_page.rb
index b0804b0..a09b2ae 100644
--- a/tests/browser/features/support/pages/content_translation_page.rb
+++ b/tests/browser/features/support/pages/content_translation_page.rb
@@ -3,11 +3,12 @@
        include URL
        page_url URL.url("Special:ContentTranslation?<%=params[:extra]%>")
 
+       /* Currently unused? */
        a(:view_page, class: "view-page")
 
-       button(:publish_translation, class: "publish-translation")
+       button(:publish_translation, class: "publish")
 
-       div(:progress_bar, class: "progressbar")
+       div(:progress_bar, class: "cx-progressbar")
 
        div(:content, class: "content")
 
@@ -20,14 +21,14 @@
        end
 
        def source_title
-               column("source").h1(class: "source-title")
+               column("cx-column--source").h2(class: "title")
        end
 
        def target_title
-               column("translation").text_field(class: "target-title")
+               column("cx-column--translation").text_field(class: "title")
        end
 
        def translation_editor
-               column("translation").div(class: "translation-editor")
+               column("cx-column--translation").div(class: "article")
        end
 end

-- 
To view, visit https://gerrit.wikimedia.org/r/107345
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I8b79392c03f3dc7fda49f32e9812bc388cd7e5a5
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/ContentTranslation
Gerrit-Branch: master
Gerrit-Owner: Nikerabbit <[email protected]>

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

Reply via email to