Ver Fonte

HUE-6063 [core] Added alt property to img tags

Enrico Berti há 8 anos atrás
pai
commit
8dbad66
39 ficheiros alterados com 149 adições e 146 exclusões
  1. 1 1
      apps/about/src/about/templates/admin_wizard.mako
  2. 1 1
      apps/about/src/about/templates/header.mako
  3. 1 1
      apps/beeswax/src/beeswax/templates/execute.mako
  4. 4 4
      apps/beeswax/src/beeswax/templates/layout.mako
  5. 1 1
      apps/beeswax/src/beeswax/templates/watch_results.mako
  6. 1 1
      apps/filebrowser/src/filebrowser/templates/fb_components.mako
  7. 5 5
      apps/hbase/src/hbase/templates/app.mako
  8. 4 4
      apps/jobbrowser/src/jobbrowser/templates/job_browser.mako
  9. 1 1
      apps/jobbrowser/src/jobbrowser/templates/jobbrowser_components.mako
  10. 1 1
      apps/jobbrowser/src/jobbrowser/templates/jobs.mako
  11. 1 1
      apps/jobsub/src/jobsub/templates/designs.mako
  12. 1 1
      apps/metastore/src/metastore/templates/components.mako
  13. 2 2
      apps/oozie/src/oozie/templates/dashboard/list_oozie_bundle.mako
  14. 2 2
      apps/oozie/src/oozie/templates/dashboard/list_oozie_coordinator.mako
  15. 7 7
      apps/oozie/src/oozie/templates/editor2/common_workflow.mako
  16. 12 12
      apps/oozie/src/oozie/templates/editor2/workflow_editor.mako
  17. 2 2
      apps/oozie/src/oozie/templates/navigation-bar.mako
  18. 2 2
      apps/pig/src/pig/static/pig/js/pig.ko.js
  19. 4 4
      apps/pig/src/pig/templates/app.mako
  20. 1 1
      apps/rdbms/src/rdbms/templates/common.mako
  21. 1 1
      apps/useradmin/src/useradmin/templates/layout.mako
  22. 1 1
      apps/zookeeper/src/zookeeper/templates/shared_components.mako
  23. 4 1
      desktop/core/src/desktop/app_template/src/app_name/templates/shared_components.mako
  24. 1 1
      desktop/core/src/desktop/templates/about_layout.mako
  25. 3 3
      desktop/core/src/desktop/templates/common_dashboard.mako
  26. 29 29
      desktop/core/src/desktop/templates/common_header.mako
  27. 1 1
      desktop/core/src/desktop/templates/common_header_m.mako
  28. 1 1
      desktop/core/src/desktop/templates/common_home.mako
  29. 1 1
      desktop/core/src/desktop/templates/common_notebook_ko_components.mako
  30. 7 7
      desktop/core/src/desktop/templates/document_browser.mako
  31. 11 11
      desktop/core/src/desktop/templates/home.mako
  32. 2 2
      desktop/core/src/desktop/templates/login.mako
  33. 1 1
      desktop/core/src/desktop/templates/login_modal.mako
  34. 8 8
      desktop/core/src/desktop/templates/responsive.mako
  35. 1 1
      desktop/core/src/desktop/templates/unsupported.mako
  36. 1 1
      desktop/libs/dashboard/src/dashboard/templates/common_search.mako
  37. 6 6
      desktop/libs/liboauth/src/liboauth/templates/oauth-login.mako
  38. 11 11
      desktop/libs/notebook/src/notebook/templates/editor_components.mako
  39. 5 5
      desktop/libs/notebook/src/notebook/templates/notebooks.mako

+ 1 - 1
apps/about/src/about/templates/admin_wizard.mako

@@ -148,7 +148,7 @@ ${ header.menubar() }
               <div class="card-body" style="margin-top: 10px">
               <div class="card-body" style="margin-top: 10px">
                 <a href="${ url('useradmin.views.list_users') }" target="_blank" style="padding-left: 2px"><img
                 <a href="${ url('useradmin.views.list_users') }" target="_blank" style="padding-left: 2px"><img
                     src="${ static('useradmin/art/icon_useradmin_48.png') }" class="app-icon"
                     src="${ static('useradmin/art/icon_useradmin_48.png') }" class="app-icon"
-                    style="margin-right: 4px;"> ${ _('User Admin') }</a>
+                    style="margin-right: 4px;" alt="${ _('User Admin') }"> ${ _('User Admin') }</a>
               </div>
               </div>
             </div>
             </div>
 
 

+ 1 - 1
apps/about/src/about/templates/header.mako

@@ -24,7 +24,7 @@ from django.utils.translation import ugettext as _
           <div class="nav-collapse">
           <div class="nav-collapse">
             <ul class="nav">
             <ul class="nav">
               <li class="currentApp">
               <li class="currentApp">
-                <a href="/${app_name}"><img src="${ static('desktop/art/icon_hue_48.png') }" class="app-icon" />
+                <a href="/${app_name}"><img src="${ static('desktop/art/icon_hue_48.png') }" class="app-icon" alt="${ _('Hue Logo') }" />
                 ${ _('About Hue') }</a>
                 ${ _('About Hue') }</a>
                </li>
                </li>
                % if user.is_superuser:
                % if user.is_superuser:

+ 1 - 1
apps/beeswax/src/beeswax/templates/execute.mako

@@ -441,7 +441,7 @@ ${ layout.menubar(section='query') }
               <ul data-bind="foreach: $root.design.watch.jobUrls" class="unstyled jobs-overlay">
               <ul data-bind="foreach: $root.design.watch.jobUrls" class="unstyled jobs-overlay">
                 <li><a data-bind="text: $.trim($data.name), attr: { href: $data.url }" target="_blank"></a></li>
                 <li><a data-bind="text: $.trim($data.name), attr: { href: $data.url }" target="_blank"></a></li>
               </ul>
               </ul>
-              <pre data-bind="visible: $root.design.watch.logs().length == 0">${_('There are currently no logs to visualize.')} <img src="${ static('desktop/art/spinner.gif') }" data-bind="visible: $root.design.isRunning()"/></pre>
+              <pre data-bind="visible: $root.design.watch.logs().length == 0">${_('There are currently no logs to visualize.')} <img src="${ static('desktop/art/spinner.gif') }" alt="${ _('Spinner') }" data-bind="visible: $root.design.isRunning()"/></pre>
               <pre data-bind="visible: $root.design.watch.logs().length > 0, text: $root.design.watch.logs().join('\n')"></pre>
               <pre data-bind="visible: $root.design.watch.logs().length > 0, text: $root.design.watch.logs().join('\n')"></pre>
             </div>
             </div>
           </div>
           </div>

+ 4 - 4
apps/beeswax/src/beeswax/templates/layout.mako

@@ -33,13 +33,13 @@ def is_selected(section, matcher):
               <li class="currentApp">
               <li class="currentApp">
                 <a href="/${app_name}">
                 <a href="/${app_name}">
                 % if app_name == 'impala':
                 % if app_name == 'impala':
-                  <img src="${ static('impala/art/icon_impala_48.png') }" class="app-icon" />
+                  <img src="${ static('impala/art/icon_impala_48.png') }" class="app-icon" alt="${ _('Impala icon') }" />
                   Impala
                   Impala
                 % elif app_name == 'rdbms':
                 % elif app_name == 'rdbms':
-                  <img src="${ static('rdbms/art/icon_rdbms_48.png') }" class="app-icon" />
+                  <img src="${ static('rdbms/art/icon_rdbms_48.png') }" class="app-icon" alt="${ _('DBQuery icon') }" />
                   DB Query
                   DB Query
                 % else:
                 % else:
-                  <img src="${ static('beeswax/art/icon_beeswax_48.png') }" class="app-icon" />
+                  <img src="${ static('beeswax/art/icon_beeswax_48.png') }" class="app-icon" alt="${ _('Beeswax icon') }" />
                   Hive Editor
                   Hive Editor
                 % endif
                 % endif
                 </a>
                 </a>
@@ -63,7 +63,7 @@ def is_selected(section, matcher):
             <ul class="nav">
             <ul class="nav">
               <li class="currentApp">
               <li class="currentApp">
                 <a href="/metastore">
                 <a href="/metastore">
-                  <img src="${ static('metastore/art/icon_metastore_48.png') }" class="app-icon" />
+                  <img src="${ static('metastore/art/icon_metastore_48.png') }" class="app-icon" alt="${ _('Metastore icon') }" />
                   ${ _('Metastore Manager') }
                   ${ _('Metastore Manager') }
                 </a>
                 </a>
               </li>
               </li>

+ 1 - 1
apps/beeswax/src/beeswax/templates/watch_results.mako

@@ -199,7 +199,7 @@ ${layout.menubar(section='query')}
              <div style="text-align: center; padding: 5px; height: 30px">
              <div style="text-align: center; padding: 5px; height: 30px">
                <span class="noMore hide"
                <span class="noMore hide"
                      style="color:#999999">${ _('You have reached the last record for this query.') }</span><img
                      style="color:#999999">${ _('You have reached the last record for this query.') }</span><img
-                     src="${ static('desktop/art/spinner.gif') }"
+                     src="${ static('desktop/art/spinner.gif') }" alt="${ _('Spinner') }"
                      class="spinner"
                      class="spinner"
                      style="display: none;"/>
                      style="display: none;"/>
              </div>
              </div>

+ 1 - 1
apps/filebrowser/src/filebrowser/templates/fb_components.mako

@@ -98,7 +98,7 @@ from aws import get_client
             <ul class="nav">
             <ul class="nav">
               <li class="currentApp">
               <li class="currentApp">
                 <a href="/${app_name}">
                 <a href="/${app_name}">
-                  <img src="${ static('filebrowser/art/icon_filebrowser_48.png') }" class="app-icon" />
+                  <img src="${ static('filebrowser/art/icon_filebrowser_48.png') }" class="app-icon" alt="${ _('File browser icon') }" />
                   ${ _('File Browser') }
                   ${ _('File Browser') }
                 </a>
                 </a>
               </li>
               </li>

+ 5 - 5
apps/hbase/src/hbase/templates/app.mako

@@ -31,7 +31,7 @@ ${ commonheader(None, "hbase", user, request) | n,unicode }
         <ul class="nav">
         <ul class="nav">
           <li class="currentApp">
           <li class="currentApp">
             <a href="/${app_name}">
             <a href="/${app_name}">
-              <img src="${ static('hbase/art/icon_hbase_48.png') }" class="app-icon" />
+              <img src="${ static('hbase/art/icon_hbase_48.png') }" class="app-icon" alt="${ _('HBase icon') }" />
               ${ _('HBase Browser') }
               ${ _('HBase Browser') }
             </a>
             </a>
           </li>
           </li>
@@ -68,7 +68,7 @@ ${ commonheader(None, "hbase", user, request) | n,unicode }
 <%def name="smartview(datasource)">
 <%def name="smartview(datasource)">
   <div class="smartview" data-bind="foreach: ${datasource}.items(), css: { 'gridView': ${datasource}.showGrid() }">
   <div class="smartview" data-bind="foreach: ${datasource}.items(), css: { 'gridView': ${datasource}.showGrid() }">
     <div class="smartview-row" data-bind="css:{selected:$data.isSelected()}, visible: $data.items().length > 0 || $data.isLoading()">
     <div class="smartview-row" data-bind="css:{selected:$data.isSelected()}, visible: $data.items().length > 0 || $data.isLoading()">
-      <h5 data-bind="click: lockClickOrigin($data.select, $element)"><code class="row_key" data-bind="text: $data.row.slice(0, 100) + ($data.row.length > 100 ? '...' : '')"></code> <i class="fa fa-check-square" data-bind="visible:$data.isSelected()"></i> <img data-bind="visible: $data.isLoading()" src="${ static('desktop/art/spinner.gif') }" />
+      <h5 data-bind="click: lockClickOrigin($data.select, $element)"><code class="row_key" data-bind="text: $data.row.slice(0, 100) + ($data.row.length > 100 ? '...' : '')"></code> <i class="fa fa-check-square" data-bind="visible:$data.isSelected()"></i> <i class="fa fa-spinner fa-spin" data-bind="visible: $data.isLoading()"></i>
         <span class="smartview-row-controls controls-hover-bottom">
         <span class="smartview-row-controls controls-hover-bottom">
           <button class="btn" data-bind="click: $data.reload, clickBubble: false" data-toggle="tooltip" title="${_('Refresh Row')}"><i class="fa fa-refresh"></i></button>
           <button class="btn" data-bind="click: $data.reload, clickBubble: false" data-toggle="tooltip" title="${_('Refresh Row')}"><i class="fa fa-refresh"></i></button>
           % if can_write:
           % if can_write:
@@ -100,7 +100,7 @@ ${ commonheader(None, "hbase", user, request) | n,unicode }
               <pre data-bind="text: ($data.value().length > 146 ? $data.value().substring(0, 144) + '...' : $data.value()).replace(/(\r\n|\n|\r)/gm,''), click: editCell.bind(null, $data), clickBubble: false, visible: ! $data.isLoading() && ! $data.editing()"></pre>
               <pre data-bind="text: ($data.value().length > 146 ? $data.value().substring(0, 144) + '...' : $data.value()).replace(/(\r\n|\n|\r)/gm,''), click: editCell.bind(null, $data), clickBubble: false, visible: ! $data.isLoading() && ! $data.editing()"></pre>
               <textarea data-bind="visible: editing, hasFocus: editing, disable: ! app.views.tabledata.canWrite(), value: value, click: function() {}, clickBubble: false"></textarea>
               <textarea data-bind="visible: editing, hasFocus: editing, disable: ! app.views.tabledata.canWrite(), value: value, click: function() {}, clickBubble: false"></textarea>
             </div>
             </div>
-            <img src="${ static('desktop/art/spinner.gif') }" data-bind="visible: $data.isLoading()" style="display: none;" />
+            <i class="fa fa-spinner fa-spin" data-bind="visible: $data.isLoading()" style="display: none;"></i>
           </div>
           </div>
         </li>
         </li>
         <!-- /ko -->
         <!-- /ko -->
@@ -387,7 +387,7 @@ ${ commonheader(None, "hbase", user, request) | n,unicode }
                 <!-- ko foreach: $data.content.history.items() -->
                 <!-- ko foreach: $data.content.history.items() -->
                   <li data-bind="css: { 'active': $data.timestamp == $parent.timestamp() }"><a data-bind="click: function() { $root.switchToHistorical($data) }, text: formatTimestamp($data.timestamp)" class="pointer"></a></li>
                   <li data-bind="css: { 'active': $data.timestamp == $parent.timestamp() }"><a data-bind="click: function() { $root.switchToHistorical($data) }, text: formatTimestamp($data.timestamp)" class="pointer"></a></li>
                 <!-- /ko -->
                 <!-- /ko -->
-                <li data-bind="visible: $data.content.history.loading()"><img src="${ static('desktop/art/spinner.gif') }" /></li>
+                <li data-bind="visible: $data.content.history.loading()"><i class="fa fa-spinner fa-spin"></i></li>
               </ul>
               </ul>
             </div>
             </div>
           </div>
           </div>
@@ -407,7 +407,7 @@ ${ commonheader(None, "hbase", user, request) | n,unicode }
     </script>
     </script>
 
 
     <script id="cell_image_template" type="text/html">
     <script id="cell_image_template" type="text/html">
-      <img data-bind="attr: { src: 'data:' + $data.mime() + ';base64,' + value()}"/>
+      <img data-bind="attr: { src: 'data:' + $data.mime() + ';base64,' + value()}" alt="${ _('Cell image') }"/>
       <input type="hidden" data-bind="value: value"/>
       <input type="hidden" data-bind="value: value"/>
     </script>
     </script>
 
 

+ 4 - 4
apps/jobbrowser/src/jobbrowser/templates/job_browser.mako

@@ -77,7 +77,7 @@ ${ commonheader("Job Browser", "jobbrowser", user, request) | n,unicode }
           <ul class="nav">
           <ul class="nav">
             <li class="currentApp">
             <li class="currentApp">
               <a href="/${app_name}">
               <a href="/${app_name}">
-                <img src="${ static('jobbrowser/art/icon_jobbrowser_48.png') }" class="app-icon"/>
+                <img src="${ static('jobbrowser/art/icon_jobbrowser_48.png') }" class="app-icon" alt="${ _('Job browser icon') }"/>
                 ${ _('Job Browser') }
                 ${ _('Job Browser') }
               </a>
               </a>
             </li>
             </li>
@@ -218,16 +218,16 @@ ${ commonheader("Job Browser", "jobbrowser", user, request) | n,unicode }
 <script type="text/html" id="breadcrumbs-icons">
 <script type="text/html" id="breadcrumbs-icons">
 <!-- ko switch: type -->
 <!-- ko switch: type -->
   <!-- ko case: 'workflow' -->
   <!-- ko case: 'workflow' -->
-    <img src="${ static('oozie/art/icon_oozie_workflow_48.png') }" class="app-icon"/>
+    <img src="${ static('oozie/art/icon_oozie_workflow_48.png') }" class="app-icon" alt="${ _('Oozie workflow icon') }"/>
   <!-- /ko -->
   <!-- /ko -->
   <!-- ko case: 'workflow-action' -->
   <!-- ko case: 'workflow-action' -->
     <i class="fa fa-fw fa-code-fork"></i>
     <i class="fa fa-fw fa-code-fork"></i>
   <!-- /ko -->
   <!-- /ko -->
   <!-- ko case: 'schedule' -->
   <!-- ko case: 'schedule' -->
-    <img src="${ static('oozie/art/icon_oozie_coordinator_48.png') }" class="app-icon"/>
+    <img src="${ static('oozie/art/icon_oozie_coordinator_48.png') }" class="app-icon" alt="${ _('Oozie coordinator icon') }"/>
   <!-- /ko -->
   <!-- /ko -->
   <!-- ko case: 'bundle' -->
   <!-- ko case: 'bundle' -->
-    <img src="${ static('oozie/art/icon_oozie_bundle_48.png') }" class="app-icon"/>
+    <img src="${ static('oozie/art/icon_oozie_bundle_48.png') }" class="app-icon" alt="${ _('Oozie bundle icon') }"/>
   <!-- /ko -->
   <!-- /ko -->
 <!-- /ko -->
 <!-- /ko -->
 </script>
 </script>

+ 1 - 1
apps/jobbrowser/src/jobbrowser/templates/jobbrowser_components.mako

@@ -237,7 +237,7 @@
             <ul class="nav">
             <ul class="nav">
               <li class="currentApp">
               <li class="currentApp">
                 <a href="/${app_name}">
                 <a href="/${app_name}">
-                  <img src="${ static('jobbrowser/art/icon_jobbrowser_48.png') }" class="app-icon"/>
+                  <img src="${ static('jobbrowser/art/icon_jobbrowser_48.png') }" class="app-icon" alt="${ _('Job browser icon') }"/>
                   ${ _('Job Browser') }
                   ${ _('Job Browser') }
                 </a>
                 </a>
               </li>
               </li>

+ 1 - 1
apps/jobbrowser/src/jobbrowser/templates/jobs.mako

@@ -34,7 +34,7 @@ ${ components.menubar(hiveserver2_impersonation_enabled) }
     <%def name="search()">
     <%def name="search()">
       ${_('Username')} <input id="userFilter" type="text" class="input-medium search-query" placeholder="${_('Search for username')}" value="${ user_filter or '' }">
       ${_('Username')} <input id="userFilter" type="text" class="input-medium search-query" placeholder="${_('Search for username')}" value="${ user_filter or '' }">
       &nbsp;&nbsp;${_('Text')} <input id="textFilter" type="text" class="input-xlarge search-query" placeholder="${_('Search for text')}" value="${ text_filter or '' }">
       &nbsp;&nbsp;${_('Text')} <input id="textFilter" type="text" class="input-xlarge search-query" placeholder="${_('Search for text')}" value="${ text_filter or '' }">
-      <img id="loading" src="${ static('desktop/art/spinner.gif') }" />
+        <i class="fa fa-spinner fa-spin" id="loading"></i>
     </%def>
     </%def>
 
 
     <%def name="creation()">
     <%def name="creation()">

+ 1 - 1
apps/jobsub/src/jobsub/templates/designs.mako

@@ -44,7 +44,7 @@ ${ commonheader(None, "jobsub", user, request) | n,unicode }
           <ul class="nav">
           <ul class="nav">
             <li class="currentApp">
             <li class="currentApp">
               <a href="/${app_name}">
               <a href="/${app_name}">
-                <img src="${ static('jobsub/art/icon_jobsub_48.png') }" class="app-icon" />
+                <img src="${ static('jobsub/art/icon_jobsub_48.png') }" class="app-icon" alt="${ _('Job Designer icon') }" />
                 ${ _('Job Designer') }
                 ${ _('Job Designer') }
               </a>
               </a>
             </li>
             </li>

+ 1 - 1
apps/metastore/src/metastore/templates/components.mako

@@ -26,7 +26,7 @@
             <ul class="nav">
             <ul class="nav">
               <li class="currentApp">
               <li class="currentApp">
                 <a href="/${app_name}">
                 <a href="/${app_name}">
-                  <img src="${ static('metastore/art/icon_metastore_48.png') }" class="app-icon" />
+                  <img src="${ static('metastore/art/icon_metastore_48.png') }" class="app-icon" alt="${ _('Metastore icon') }" />
                   ${ _('Metastore Manager') }
                   ${ _('Metastore Manager') }
                 </a>
                 </a>
               </li>              
               </li>              

+ 2 - 2
apps/oozie/src/oozie/templates/dashboard/list_oozie_bundle.mako

@@ -164,7 +164,7 @@ ${ layout.menubar(section='bundles', dashboard=True) }
           <tfoot>
           <tfoot>
             <tr data-bind="visible: isLoading()">
             <tr data-bind="visible: isLoading()">
               <td colspan="3" class="left">
               <td colspan="3" class="left">
-                <img src="${ static('desktop/art/spinner.gif') }" />
+                <i class="fa fa-spinner fa-spin"></i>
               </td>
               </td>
             </tr>
             </tr>
             <tr data-bind="visible: actions().length == 0 && !isLoading()">
             <tr data-bind="visible: actions().length == 0 && !isLoading()">
@@ -222,7 +222,7 @@ ${ layout.menubar(section='bundles', dashboard=True) }
           <tfoot>
           <tfoot>
           <tr data-bind="visible: isLoading()">
           <tr data-bind="visible: isLoading()">
             <td colspan="10" class="left">
             <td colspan="10" class="left">
-              <img src="${ static('desktop/art/spinner.gif') }" />
+              <i class="fa fa-spinner fa-spin"></i>
             </td>
             </td>
           </tr>
           </tr>
           <tr data-bind="visible: !isLoading() && actions().length == 0">
           <tr data-bind="visible: !isLoading() && actions().length == 0">

+ 2 - 2
apps/oozie/src/oozie/templates/dashboard/list_oozie_coordinator.mako

@@ -234,7 +234,7 @@ ${ layout.menubar(section='coordinators', dashboard=True) }
                 <tfoot>
                 <tfoot>
                   <tr data-bind="visible: isLoading()">
                   <tr data-bind="visible: isLoading()">
                     <td colspan="3" class="left">
                     <td colspan="3" class="left">
-                      <img src="${ static('desktop/art/spinner.gif') }" />
+                      <i class="fa fa-spinner fa-spin"></i>
                     </td>
                     </td>
                   </tr>
                   </tr>
                   <tr data-bind="visible: filteredActions().length == 0 && !isLoading()">
                   <tr data-bind="visible: filteredActions().length == 0 && !isLoading()">
@@ -305,7 +305,7 @@ ${ layout.menubar(section='coordinators', dashboard=True) }
                 <tfoot>
                 <tfoot>
                 <tr data-bind="visible: isLoading()">
                 <tr data-bind="visible: isLoading()">
                   <td colspan="10" class="left">
                   <td colspan="10" class="left">
-                    <img src="${ static('desktop/art/spinner.gif') }" />
+                    <i class="fa fa-spinner fa-spin"></i>
                   </td>
                   </td>
                 </tr>
                 </tr>
                 <tr data-bind="visible: !isLoading() && filteredActions().length == 0">
                 <tr data-bind="visible: !isLoading() && filteredActions().length == 0">

+ 7 - 7
apps/oozie/src/oozie/templates/editor2/common_workflow.mako

@@ -169,19 +169,19 @@
       </span>
       </span>
 
 
       <!-- ko if: widgetType() == 'hive-widget' -->
       <!-- ko if: widgetType() == 'hive-widget' -->
-      <img src="${ static('oozie/art/icon_beeswax_48.png') }" class="widget-icon">
+      <img src="${ static('oozie/art/icon_beeswax_48.png') }" class="widget-icon" alt="${ _('Hive icon') }">
       <!-- /ko -->
       <!-- /ko -->
 
 
       <!-- ko if: widgetType() == 'hive2-widget' || widgetType() == 'hive-document-widget' -->
       <!-- ko if: widgetType() == 'hive2-widget' || widgetType() == 'hive-document-widget' -->
-      <img src="${ static('oozie/art/icon_beeswax_48.png') }" class="widget-icon"><sup style="color: #338bb8; margin-left: -4px">2</sup>
+      <img src="${ static('oozie/art/icon_beeswax_48.png') }" class="widget-icon" alt="${ _('Hive icon') }"><sup style="color: #338bb8; margin-left: -4px">2</sup>
       <!-- /ko -->
       <!-- /ko -->
 
 
       <!-- ko if: widgetType() == 'impala-widget' || widgetType() == 'impala-document-widget' -->
       <!-- ko if: widgetType() == 'impala-widget' || widgetType() == 'impala-document-widget' -->
-      <img src="${ static('oozie/art/icon_impala_48.png') }" class="widget-icon">
+      <img src="${ static('oozie/art/icon_impala_48.png') }" class="widget-icon" alt="${ _('Impala icon') }">
       <!-- /ko -->
       <!-- /ko -->
 
 
       <!-- ko if: widgetType() == 'pig-widget' || widgetType() == 'pig-document-widget'  -->
       <!-- ko if: widgetType() == 'pig-widget' || widgetType() == 'pig-document-widget'  -->
-      <img src="${ static('oozie/art/icon_pig_48.png') }" class="widget-icon">
+      <img src="${ static('oozie/art/icon_pig_48.png') }" class="widget-icon" alt="${ _('Pig icon') }">
       <!-- /ko -->
       <!-- /ko -->
 
 
       <!-- ko if: widgetType() == 'java-widget' || widgetType() == 'java-document-widget' -->
       <!-- ko if: widgetType() == 'java-widget' || widgetType() == 'java-document-widget' -->
@@ -189,7 +189,7 @@
       <!-- /ko -->
       <!-- /ko -->
 
 
       <!-- ko if: widgetType() == 'sqoop-widget' || widgetType() == 'sqoop-document-widget' -->
       <!-- ko if: widgetType() == 'sqoop-widget' || widgetType() == 'sqoop-document-widget' -->
-      <img src="${ static('oozie/art/icon_sqoop_48.png') }" class="widget-icon">
+      <img src="${ static('oozie/art/icon_sqoop_48.png') }" class="widget-icon" alt="${ _('Sqoop icon') }">
       <!-- /ko -->
       <!-- /ko -->
 
 
       <!-- ko if: widgetType() == 'mapreduce-widget' || widgetType() == 'mapreduce-document-widget' -->
       <!-- ko if: widgetType() == 'mapreduce-widget' || widgetType() == 'mapreduce-document-widget' -->
@@ -225,7 +225,7 @@
       <!-- /ko -->
       <!-- /ko -->
 
 
       <!-- ko if: widgetType() == 'spark-widget' || widgetType() == 'spark-document-widget' -->
       <!-- ko if: widgetType() == 'spark-widget' || widgetType() == 'spark-document-widget' -->
-      <img src="${ static('oozie/art/icon_spark_48.png') }" class="widget-icon">
+      <img src="${ static('oozie/art/icon_spark_48.png') }" class="widget-icon" alt="${ _('Spark icon') }">
       <!-- /ko -->
       <!-- /ko -->
 
 
       <!-- ko if: widgetType() == 'generic-widget' -->
       <!-- ko if: widgetType() == 'generic-widget' -->
@@ -687,7 +687,7 @@
     <!-- /ko -->
     <!-- /ko -->
   <!-- /ko -->
   <!-- /ko -->
   <!-- ko if: $parent.widgetType() == 'subworkflow-widget' && $parent.externalIdUrl()-->
   <!-- ko if: $parent.widgetType() == 'subworkflow-widget' && $parent.externalIdUrl()-->
-    <a class="pull-right pointer logs-icon" data-bind="attr: { href: $parent.externalIdUrl() }" title="${ _('View the workflow') }"><img src="${static('oozie/art/icon_oozie_workflow_48.png')}" class="app-icon"/></a>
+    <a class="pull-right pointer logs-icon" data-bind="attr: { href: $parent.externalIdUrl() }" title="${ _('View the workflow') }"><img src="${static('oozie/art/icon_oozie_workflow_48.png')}" class="app-icon" alt="${ _('Oozie workflow icon') }"/></a>
   <!-- /ko -->
   <!-- /ko -->
 </script>
 </script>
 
 

+ 12 - 12
apps/oozie/src/oozie/templates/editor2/workflow_editor.mako

@@ -152,7 +152,7 @@ ${ layout.menubar(section='workflows', is_editor=True, pullright=buttons) }
                     draggable: {data: draggableHiveDocumentAction(), isEnabled: true,
                     draggable: {data: draggableHiveDocumentAction(), isEnabled: true,
                     options: {'refreshPositions': true, 'stop': function(){ $root.isDragging(false); }, 'start': function(event, ui){ $root.isDragging(true); $root.currentlyDraggedWidget(draggableHiveDocumentAction());}}}"
                     options: {'refreshPositions': true, 'stop': function(){ $root.isDragging(false); }, 'start': function(event, ui){ $root.isDragging(true); $root.currentlyDraggedWidget(draggableHiveDocumentAction());}}}"
          title="${_('Hive query')}" rel="tooltip" data-placement="top">
          title="${_('Hive query')}" rel="tooltip" data-placement="top">
-         <a class="draggable-icon"><img src="${ static('oozie/art/icon_beeswax_48.png') }" class="app-icon"><sup style="color: #338bb8; margin-left: -4px; top: -14px; font-size: 12px">2</sup></a>
+         <a class="draggable-icon"><img src="${ static('oozie/art/icon_beeswax_48.png') }" class="app-icon" alt="${ _('Hive icon') }"><sup style="color: #338bb8; margin-left: -4px; top: -14px; font-size: 12px">2</sup></a>
     </div>
     </div>
 
 
     % if ENABLE_IMPALA_ACTION.get():
     % if ENABLE_IMPALA_ACTION.get():
@@ -160,7 +160,7 @@ ${ layout.menubar(section='workflows', is_editor=True, pullright=buttons) }
                     draggable: {data: draggableImpalaDocumentAction(), isEnabled: true,
                     draggable: {data: draggableImpalaDocumentAction(), isEnabled: true,
                     options: {'refreshPositions': true, 'stop': function(){ $root.isDragging(false); }, 'start': function(event, ui){ $root.isDragging(true); $root.currentlyDraggedWidget(draggableImpalaDocumentAction());}}}"
                     options: {'refreshPositions': true, 'stop': function(){ $root.isDragging(false); }, 'start': function(event, ui){ $root.isDragging(true); $root.currentlyDraggedWidget(draggableImpalaDocumentAction());}}}"
          title="${_('Impala query')}" rel="tooltip" data-placement="top">
          title="${_('Impala query')}" rel="tooltip" data-placement="top">
-         <a class="draggable-icon"><img src="${ static('oozie/art/icon_impala_48.png') }" class="app-icon"></a>
+         <a class="draggable-icon"><img src="${ static('oozie/art/icon_impala_48.png') }" class="app-icon" alt="${ _('Impala icon') }"></a>
       </div>
       </div>
     % endif
     % endif
 
 
@@ -175,14 +175,14 @@ ${ layout.menubar(section='workflows', is_editor=True, pullright=buttons) }
                     draggable: {data: draggableSparkDocumentAction(), isEnabled: true,
                     draggable: {data: draggableSparkDocumentAction(), isEnabled: true,
                     options: {'refreshPositions': true, 'stop': function(){ $root.isDragging(false); }, 'start': function(event, ui){ $root.isDragging(true); $root.currentlyDraggedWidget(draggableSparkDocumentAction());}}}"
                     options: {'refreshPositions': true, 'stop': function(){ $root.isDragging(false); }, 'start': function(event, ui){ $root.isDragging(true); $root.currentlyDraggedWidget(draggableSparkDocumentAction());}}}"
          title="${_('Saved Spark program')}" rel="tooltip" data-placement="top">
          title="${_('Saved Spark program')}" rel="tooltip" data-placement="top">
-         <a class="draggable-icon"><img src="${ static('oozie/art/icon_spark_48.png') }" class="app-icon"></a>
+         <a class="draggable-icon"><img src="${ static('oozie/art/icon_spark_48.png') }" class="app-icon" alt="${ _('Spark icon') }"></a>
     </div>
     </div>
 
 
     <div data-bind="css: { 'draggable-widget': true },
     <div data-bind="css: { 'draggable-widget': true },
                     draggable: {data: draggablePigDocumentAction(), isEnabled: true,
                     draggable: {data: draggablePigDocumentAction(), isEnabled: true,
                     options: {'refreshPositions': true, 'stop': function(){ $root.isDragging(false); }, 'start': function(event, ui){ $root.isDragging(true); $root.currentlyDraggedWidget(draggablePigDocumentAction());}}}"
                     options: {'refreshPositions': true, 'stop': function(){ $root.isDragging(false); }, 'start': function(event, ui){ $root.isDragging(true); $root.currentlyDraggedWidget(draggablePigDocumentAction());}}}"
          title="${_('Saved Pig script')}" rel="tooltip" data-placement="top">
          title="${_('Saved Pig script')}" rel="tooltip" data-placement="top">
-         <a class="draggable-icon"><img src="${ static('oozie/art/icon_pig_48.png') }" class="app-icon"></a>
+         <a class="draggable-icon"><img src="${ static('oozie/art/icon_pig_48.png') }" class="app-icon" alt="${ _('Pig icon') }"></a>
     </div>
     </div>
 
 
     <div data-bind="css: { 'draggable-widget': true },
     <div data-bind="css: { 'draggable-widget': true },
@@ -196,7 +196,7 @@ ${ layout.menubar(section='workflows', is_editor=True, pullright=buttons) }
                     draggable: {data: draggableSqoopDocumentAction(), isEnabled: true,
                     draggable: {data: draggableSqoopDocumentAction(), isEnabled: true,
                     options: {'refreshPositions': true, 'stop': function(){ $root.isDragging(false); }, 'start': function(event, ui){ $root.isDragging(true); $root.currentlyDraggedWidget(draggableSqoopDocumentAction());}}}"
                     options: {'refreshPositions': true, 'stop': function(){ $root.isDragging(false); }, 'start': function(event, ui){ $root.isDragging(true); $root.currentlyDraggedWidget(draggableSqoopDocumentAction());}}}"
          title="${_('Saved Sqoop command')}" rel="tooltip" data-placement="top">
          title="${_('Saved Sqoop command')}" rel="tooltip" data-placement="top">
-         <a class="draggable-icon"><img src="${ static('oozie/art/icon_sqoop_48.png') }" class="app-icon"></a>
+         <a class="draggable-icon"><img src="${ static('oozie/art/icon_sqoop_48.png') }" class="app-icon" alt="${ _('Sqoop icon') }"></a>
     </div>
     </div>
 
 
     <div data-bind="css: { 'draggable-widget': true },
     <div data-bind="css: { 'draggable-widget': true },
@@ -224,7 +224,7 @@ ${ layout.menubar(section='workflows', is_editor=True, pullright=buttons) }
                     draggable: {data: draggableHiveDocumentAction(), isEnabled: true,
                     draggable: {data: draggableHiveDocumentAction(), isEnabled: true,
                     options: {'refreshPositions': true, 'stop': function(){ $root.isDragging(false); }, 'start': function(event, ui){ $root.isDragging(true); $root.currentlyDraggedWidget(draggableHiveDocumentAction());}}}"
                     options: {'refreshPositions': true, 'stop': function(){ $root.isDragging(false); }, 'start': function(event, ui){ $root.isDragging(true); $root.currentlyDraggedWidget(draggableHiveDocumentAction());}}}"
          title="${_('Hive query')}" rel="tooltip" data-placement="top">
          title="${_('Hive query')}" rel="tooltip" data-placement="top">
-         <a class="draggable-icon"><img src="${ static('oozie/art/icon_beeswax_48.png') }" class="app-icon"><sup style="color: #338bb8; margin-left: -4px; top: -14px; font-size: 12px">2</sup></a>
+         <a class="draggable-icon"><img src="${ static('oozie/art/icon_beeswax_48.png') }" class="app-icon" alt="${ _('Hive icon') }"><sup style="color: #338bb8; margin-left: -4px; top: -14px; font-size: 12px">2</sup></a>
     </div>
     </div>
     % endif
     % endif
 
 
@@ -232,14 +232,14 @@ ${ layout.menubar(section='workflows', is_editor=True, pullright=buttons) }
                     draggable: {data: draggableHiveAction(), isEnabled: true,
                     draggable: {data: draggableHiveAction(), isEnabled: true,
                     options: {'refreshPositions': true, 'stop': function(){ $root.isDragging(false); }, 'start': function(event, ui){ $root.isDragging(true); $root.currentlyDraggedWidget(draggableHiveAction());}}}"
                     options: {'refreshPositions': true, 'stop': function(){ $root.isDragging(false); }, 'start': function(event, ui){ $root.isDragging(true); $root.currentlyDraggedWidget(draggableHiveAction());}}}"
          title="${_('Hive Script')}" rel="tooltip" data-placement="top">
          title="${_('Hive Script')}" rel="tooltip" data-placement="top">
-         <a class="draggable-icon"><img src="${ static('oozie/art/icon_beeswax_48.png') }" class="app-icon"></a>
+         <a class="draggable-icon"><img src="${ static('oozie/art/icon_beeswax_48.png') }" class="app-icon" alt="${ _('Hive icon') }"></a>
     </div>
     </div>
 
 
     <div data-bind="css: { 'draggable-widget': true },
     <div data-bind="css: { 'draggable-widget': true },
                     draggable: {data: draggableHive2Action(), isEnabled: true,
                     draggable: {data: draggableHive2Action(), isEnabled: true,
                     options: {'refreshPositions': true, 'stop': function(){ $root.isDragging(false); }, 'start': function(event, ui){ $root.isDragging(true); $root.currentlyDraggedWidget(draggableHive2Action());}}}"
                     options: {'refreshPositions': true, 'stop': function(){ $root.isDragging(false); }, 'start': function(event, ui){ $root.isDragging(true); $root.currentlyDraggedWidget(draggableHive2Action());}}}"
          title="${_('HiveServer2 Script')}" rel="tooltip" data-placement="top">
          title="${_('HiveServer2 Script')}" rel="tooltip" data-placement="top">
-         <a class="draggable-icon"><img src="${ static('oozie/art/icon_beeswax_48.png') }" class="app-icon"><sup style="color: #338bb8; margin-left: -4px; top: -14px; font-size: 12px">2</sup></a>
+         <a class="draggable-icon"><img src="${ static('oozie/art/icon_beeswax_48.png') }" class="app-icon" alt="${ _('Hive icon') }"><sup style="color: #338bb8; margin-left: -4px; top: -14px; font-size: 12px">2</sup></a>
     </div>
     </div>
 
 
     % if ENABLE_IMPALA_ACTION.get():
     % if ENABLE_IMPALA_ACTION.get():
@@ -247,7 +247,7 @@ ${ layout.menubar(section='workflows', is_editor=True, pullright=buttons) }
                     draggable: {data: draggableImpalaAction(), isEnabled: true,
                     draggable: {data: draggableImpalaAction(), isEnabled: true,
                     options: {'refreshPositions': true, 'stop': function(){ $root.isDragging(false); }, 'start': function(event, ui){ $root.isDragging(true); $root.currentlyDraggedWidget(draggableImpalaAction());}}}"
                     options: {'refreshPositions': true, 'stop': function(){ $root.isDragging(false); }, 'start': function(event, ui){ $root.isDragging(true); $root.currentlyDraggedWidget(draggableImpalaAction());}}}"
          title="${_('Impala Script')}" rel="tooltip" data-placement="top">
          title="${_('Impala Script')}" rel="tooltip" data-placement="top">
-         <a class="draggable-icon"><img src="${ static('oozie/art/icon_impala_48.png') }" class="app-icon"></a>
+         <a class="draggable-icon"><img src="${ static('oozie/art/icon_impala_48.png') }" class="app-icon" alt="${ _('Impala icon') }"></a>
     </div>
     </div>
     % endif
     % endif
 
 
@@ -255,14 +255,14 @@ ${ layout.menubar(section='workflows', is_editor=True, pullright=buttons) }
                     draggable: {data: draggablePigAction(), isEnabled: true,
                     draggable: {data: draggablePigAction(), isEnabled: true,
                     options: {'refreshPositions': true, 'stop': function(){ $root.isDragging(false); }, 'start': function(event, ui){ $root.isDragging(true); $root.currentlyDraggedWidget(draggablePigAction());}}}"
                     options: {'refreshPositions': true, 'stop': function(){ $root.isDragging(false); }, 'start': function(event, ui){ $root.isDragging(true); $root.currentlyDraggedWidget(draggablePigAction());}}}"
          title="${_('Pig Script')}" rel="tooltip" data-placement="top">
          title="${_('Pig Script')}" rel="tooltip" data-placement="top">
-         <a class="draggable-icon"><img src="${ static('oozie/art/icon_pig_48.png') }" class="app-icon"></a>
+         <a class="draggable-icon"><img src="${ static('oozie/art/icon_pig_48.png') }" class="app-icon" alt="${ _('Pig icon') }"></a>
     </div>
     </div>
 
 
     <div data-bind="css: { 'draggable-widget': true },
     <div data-bind="css: { 'draggable-widget': true },
                     draggable: {data: draggableSparkAction(), isEnabled: true,
                     draggable: {data: draggableSparkAction(), isEnabled: true,
                     options: {'refreshPositions': true, 'stop': function(){ $root.isDragging(false); }, 'start': function(event, ui){ $root.isDragging(true); $root.currentlyDraggedWidget(draggableSparkAction());}}}"
                     options: {'refreshPositions': true, 'stop': function(){ $root.isDragging(false); }, 'start': function(event, ui){ $root.isDragging(true); $root.currentlyDraggedWidget(draggableSparkAction());}}}"
          title="${_('Spark program')}" rel="tooltip" data-placement="top">
          title="${_('Spark program')}" rel="tooltip" data-placement="top">
-         <a class="draggable-icon"><img src="${ static('oozie/art/icon_spark_48.png') }" class="app-icon"></a>
+         <a class="draggable-icon"><img src="${ static('oozie/art/icon_spark_48.png') }" class="app-icon" alt="${ _('Spark icon') }"></a>
     </div>
     </div>
 
 
     <div data-bind="css: { 'draggable-widget': true },
     <div data-bind="css: { 'draggable-widget': true },
@@ -276,7 +276,7 @@ ${ layout.menubar(section='workflows', is_editor=True, pullright=buttons) }
                     draggable: {data: draggableSqoopAction(), isEnabled: true,
                     draggable: {data: draggableSqoopAction(), isEnabled: true,
                     options: {'refreshPositions': true, 'stop': function(){ $root.isDragging(false); }, 'start': function(event, ui){ $root.isDragging(true); $root.currentlyDraggedWidget(draggableSqoopAction());}}}"
                     options: {'refreshPositions': true, 'stop': function(){ $root.isDragging(false); }, 'start': function(event, ui){ $root.isDragging(true); $root.currentlyDraggedWidget(draggableSqoopAction());}}}"
          title="${_('Sqoop 1')}" rel="tooltip" data-placement="top">
          title="${_('Sqoop 1')}" rel="tooltip" data-placement="top">
-         <a class="draggable-icon"><img src="${ static('oozie/art/icon_sqoop_48.png') }" class="app-icon"></a>
+         <a class="draggable-icon"><img src="${ static('oozie/art/icon_sqoop_48.png') }" class="app-icon" alt="${ _('Sqoop icon') }"></a>
     </div>
     </div>
 
 
     <div data-bind="css: { 'draggable-widget': true },
     <div data-bind="css: { 'draggable-widget': true },

+ 2 - 2
apps/oozie/src/oozie/templates/navigation-bar.mako

@@ -61,10 +61,10 @@
 
 
                 % if dashboard:
                 % if dashboard:
                 <a title="${ _('Switch to the editor') }" href="${getURL(section, dashboard, ENABLE_V2.get())}">
                 <a title="${ _('Switch to the editor') }" href="${getURL(section, dashboard, ENABLE_V2.get())}">
-                  <img src="${ static('oozie/art/icon_oozie_dashboard_48.png') }" class="app-icon" /> ${ _('Oozie Dashboard') }
+                  <img src="${ static('oozie/art/icon_oozie_dashboard_48.png') }" class="app-icon" alt="${ _('Oozie dashboard icon') }" /> ${ _('Oozie Dashboard') }
                 % else:
                 % else:
                 <a title="${ _('Switch to the dashboard') }" href="${getURL(section, dashboard, ENABLE_V2.get())}">
                 <a title="${ _('Switch to the dashboard') }" href="${getURL(section, dashboard, ENABLE_V2.get())}">
-                  <img src="${ static('oozie/art/icon_oozie_editor_48.png') }" class="app-icon" /> ${ _('Oozie Editor') }
+                  <img src="${ static('oozie/art/icon_oozie_editor_48.png') }" class="app-icon" alt="${ _('Oozie editor icon') }" /> ${ _('Oozie Editor') }
                 % endif
                 % endif
                 </a>
                 </a>
                </li>
                </li>

+ 2 - 2
apps/pig/src/pig/static/pig/js/pig.ko.js

@@ -635,7 +635,7 @@ var PigViewModel = function (props) {
       self.showLogsAtEnd = $(this).scrollTop() + $(this).height() + 20 >= $(this)[0].scrollHeight;
       self.showLogsAtEnd = $(this).scrollTop() + $(this).height() + 20 >= $(this)[0].scrollHeight;
     });
     });
     if (workflow.isRunning) {
     if (workflow.isRunning) {
-      $("#logsModal img").removeClass("hide");
+      $("#logsModal i").removeClass("hide");
       $("#logsModal pre").addClass("hide");
       $("#logsModal pre").addClass("hide");
       $("#logsModal").modal({
       $("#logsModal").modal({
         keyboard: true,
         keyboard: true,
@@ -650,7 +650,7 @@ var PigViewModel = function (props) {
             window.clearInterval(self.showLogsInterval);
             window.clearInterval(self.showLogsInterval);
           }
           }
           if (data.logs.pig) {
           if (data.logs.pig) {
-            $("#logsModal img").addClass("hide");
+            $("#logsModal i").addClass("hide");
             $("#logsModal pre").removeClass("hide");
             $("#logsModal pre").removeClass("hide");
             var _logsEl = $("#logsModal pre");
             var _logsEl = $("#logsModal pre");
             var newLines = data.logs.pig.split("\n").slice(_logsEl.html().split("<br>").length);
             var newLines = data.logs.pig.split("\n").slice(_logsEl.html().split("<br>").length);

+ 4 - 4
apps/pig/src/pig/templates/app.mako

@@ -30,7 +30,7 @@ ${ commonheader(None, "pig", user, request) | n,unicode }
             <ul class="nav">
             <ul class="nav">
               <li class="currentApp">
               <li class="currentApp">
                 <a href="/${app_name}">
                 <a href="/${app_name}">
-                  <img src="${ static('pig/art/icon_pig_48.png') }" class="app-icon"/>
+                  <img src="${ static('pig/art/icon_pig_48.png') }" class="app-icon" alt="${ _('Pig icon') }"/>
                   ${ _('Pig Editor') }
                   ${ _('Pig Editor') }
                 </a>
                 </a>
               </li>
               </li>
@@ -79,7 +79,7 @@ ${ commonheader(None, "pig", user, request) | n,unicode }
           <tfoot>
           <tfoot>
           <tr data-bind="visible: isLoading()">
           <tr data-bind="visible: isLoading()">
             <td colspan="3" class="left">
             <td colspan="3" class="left">
-              <img src="${ static('desktop/art/spinner.gif') }" />
+              <i class="fa fa-spinner fa-spin"></i>
             </td>
             </td>
           </tr>
           </tr>
           <tr data-bind="visible: filteredScripts().length == 0 && !isLoading()">
           <tr data-bind="visible: filteredScripts().length == 0 && !isLoading()">
@@ -532,7 +532,7 @@ ${ commonheader(None, "pig", user, request) | n,unicode }
                 </div>
                 </div>
               </div>
               </div>
             </script>
             </script>
-            <pre id="withoutLogs">${ _('No available logs.') } <img src="${ static('desktop/art/spinner.gif') }" data-bind="visible: currentScript().isRunning()"/></pre>
+            <pre id="withoutLogs">${ _('No available logs.') } <i class="fa fa-spinner fa-spin" data-bind="visible: currentScript().isRunning()"></i></pre>
             <pre id="withLogs" class="hide scroll"></pre>
             <pre id="withLogs" class="hide scroll"></pre>
           </div>
           </div>
         </div>
         </div>
@@ -639,7 +639,7 @@ ${ commonheader(None, "pig", user, request) | n,unicode }
       <h3>${_('Logs')}</h3>
       <h3>${_('Logs')}</h3>
     </div>
     </div>
     <div class="modal-body">
     <div class="modal-body">
-      <img src="${ static('desktop/art/spinner.gif') }" class="hide" />
+      <i class="fa fa-spinner fa-spin" class="hide"></i>
       <pre class="scroll hide"></pre>
       <pre class="scroll hide"></pre>
     </div>
     </div>
     <div class="modal-footer">
     <div class="modal-footer">

+ 1 - 1
apps/rdbms/src/rdbms/templates/common.mako

@@ -23,7 +23,7 @@
           <ul class="nav">
           <ul class="nav">
             <li class="currentApp">
             <li class="currentApp">
               <a href="/rdbms">
               <a href="/rdbms">
-                <img src="${ static('rdbms/art/icon_rdbms_48.png') }" class="app-icon" />
+                <img src="${ static('rdbms/art/icon_rdbms_48.png') }" class="app-icon" alt="${ _('DBQuery icon') }" />
                 ${ _('DB Query') }
                 ${ _('DB Query') }
               </a>
               </a>
             </li>
             </li>

+ 1 - 1
apps/useradmin/src/useradmin/templates/layout.mako

@@ -56,7 +56,7 @@ def is_selected(section, matcher):
             <ul class="nav">
             <ul class="nav">
               <li class="currentApp">
               <li class="currentApp">
                 <a href="/${app_name}">
                 <a href="/${app_name}">
-                  <img src="${ static('useradmin/art/icon_useradmin_48.png') }" class="app-icon" />
+                  <img src="${ static('useradmin/art/icon_useradmin_48.png') }" class="app-icon" alt="${ _('User admin icon') }" />
                   ${ _('User Admin') }
                   ${ _('User Admin') }
                 </a>
                 </a>
               </li>
               </li>

+ 1 - 1
apps/zookeeper/src/zookeeper/templates/shared_components.mako

@@ -77,7 +77,7 @@
             <ul class="nav">
             <ul class="nav">
               <li class="currentApp">
               <li class="currentApp">
                 <a href="/${app_name}">
                 <a href="/${app_name}">
-                  <img src="${ static('zookeeper/art/icon_zookeeper_48.png') }" class="app-icon"/>
+                  <img src="${ static('zookeeper/art/icon_zookeeper_48.png') }" class="app-icon" alt="${ _('Zookeeper icon') }"/>
                   ${ _('ZooKeeper Browser') }
                   ${ _('ZooKeeper Browser') }
                 </a>
                 </a>
                </li>
                </li>

+ 4 - 1
desktop/core/src/desktop/app_template/src/app_name/templates/shared_components.mako

@@ -13,6 +13,9 @@
 ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 ## See the License for the specific language governing permissions and
 ## See the License for the specific language governing permissions and
 ## limitations under the License.
 ## limitations under the License.
+${'<%!'}
+from django.utils.translation import ugettext as _
+${'%>'}
 
 
 ${'<%!'}
 ${'<%!'}
 def is_selected(section, matcher):
 def is_selected(section, matcher):
@@ -30,7 +33,7 @@ ${'<%'}def name="menubar(section='')">
           <ul class="nav">
           <ul class="nav">
             <li class="currentApp">
             <li class="currentApp">
               <a href="/${app_name}">
               <a href="/${app_name}">
-                <img src="${"${"} static('${app_name}/art/icon_${app_name}_48.png') }" class="app-icon" />
+                <img src="${"${"} static('${app_name}/art/icon_${app_name}_48.png') }" class="app-icon"  alt="${ _('App icon') }"/>
                 ${" ".join(word.capitalize() for word in app_name.split("_"))}
                 ${" ".join(word.capitalize() for word in app_name.split("_"))}
               </a>
               </a>
              </li>
              </li>

+ 1 - 1
desktop/core/src/desktop/templates/about_layout.mako

@@ -32,7 +32,7 @@ def is_selected(section, matcher):
             <ul class="nav">
             <ul class="nav">
               <li class="currentApp">
               <li class="currentApp">
                 <a href="/about">
                 <a href="/about">
-                  <img src="${ static('desktop/art/icon_hue_48.png') }" class="app-icon" />
+                  <img src="${ static('desktop/art/icon_hue_48.png') }" class="app-icon"  alt="${ _('Hue icon') }"/>
                   ${ _('About Hue') }
                   ${ _('About Hue') }
                 </a>
                 </a>
                </li>
                </li>

+ 3 - 3
desktop/core/src/desktop/templates/common_dashboard.mako

@@ -85,12 +85,12 @@
 <%def name="layout_skeleton()">
 <%def name="layout_skeleton()">
   <div id="emptyDashboard" data-bind="fadeVisible: !isEditing() && columns().length == 0">
   <div id="emptyDashboard" data-bind="fadeVisible: !isEditing() && columns().length == 0">
   <div style="float:left; padding-top: 90px; margin-right: 20px; text-align: center; width: 260px">${ _('Click on the pencil to get started with your dashboard!') }</div>
   <div style="float:left; padding-top: 90px; margin-right: 20px; text-align: center; width: 260px">${ _('Click on the pencil to get started with your dashboard!') }</div>
-    <img src="${ static('desktop/art/hint_arrow.png') }" />
+    <img src="${ static('desktop/art/hint_arrow.png') }" alt="${ _('Hint arrow') }" />
   </div>
   </div>
 
 
   <div id="emptyDashboardEditing" data-bind="fadeVisible: isEditing() && columns().length == 0 && previewColumns() == ''">
   <div id="emptyDashboardEditing" data-bind="fadeVisible: isEditing() && columns().length == 0 && previewColumns() == ''">
     <div style="float:right; padding-top: 90px; margin-left: 20px; text-align: center; width: 260px">${ _('Pick an index and Click on a layout to start your dashboard!') }</div>
     <div style="float:right; padding-top: 90px; margin-left: 20px; text-align: center; width: 260px">${ _('Pick an index and Click on a layout to start your dashboard!') }</div>
-    <img src="${ static('desktop/art/hint_arrow_horiz_flipped.png') }" />
+    <img src="${ static('desktop/art/hint_arrow_horiz_flipped.png') }" alt="${ _('Hint arrow') }" />
   </div>
   </div>
 
 
 
 
@@ -158,7 +158,7 @@
 
 
 <script type="text/html" id="row-template">
 <script type="text/html" id="row-template">
   <div class="emptyRow" data-bind="visible: widgets().length == 0 && $index() == 0 && $root.isEditing() && $parent.size() > 4 && $parent.rows().length == 1">
   <div class="emptyRow" data-bind="visible: widgets().length == 0 && $index() == 0 && $root.isEditing() && $parent.size() > 4 && $parent.rows().length == 1">
-    <img src="${ static('desktop/art/hint_arrow_flipped.png') }" style="float:left; margin-right: 10px"/>
+    <img src="${ static('desktop/art/hint_arrow_flipped.png') }" style="float:left; margin-right: 10px" alt="${ _('Hint arrow') }"/>
     <div style="float:left; text-align: center; width: 260px">${_('Drag any of the widgets inside your empty row')}</div>
     <div style="float:left; text-align: center; width: 260px">${_('Drag any of the widgets inside your empty row')}</div>
     <div class="clearfix"></div>
     <div class="clearfix"></div>
   </div>
   </div>

+ 29 - 29
desktop/core/src/desktop/templates/common_header.mako

@@ -291,34 +291,34 @@ ${ hueIcons.symbols() }
          <ul role="menu" class="dropdown-menu">
          <ul role="menu" class="dropdown-menu">
            % if 'beeswax' in apps:
            % if 'beeswax' in apps:
              % if USE_NEW_EDITOR.get():
              % if USE_NEW_EDITOR.get():
-             <li><a href="${ url('notebook:editor') }?type=hive"><img src="${ static(apps['beeswax'].icon_path) }" class="app-icon"/> ${_('Hive')}</a></li>
+             <li><a href="${ url('notebook:editor') }?type=hive"><img src="${ static(apps['beeswax'].icon_path) }" class="app-icon" alt="${ _('Hive icon') }"/> ${_('Hive')}</a></li>
              % else:
              % else:
-             <li><a href="/${apps['beeswax'].display_name}"><img src="${ static(apps['beeswax'].icon_path) }" class="app-icon"/> ${_('Hive')}</a></li>
+             <li><a href="/${apps['beeswax'].display_name}"><img src="${ static(apps['beeswax'].icon_path) }" class="app-icon" alt="${ _('Hive icon') }"/> ${_('Hive')}</a></li>
              % endif
              % endif
            % endif
            % endif
            % if 'impala' in apps:
            % if 'impala' in apps:
              % if USE_NEW_EDITOR.get(): ## impala requires beeswax anyway
              % if USE_NEW_EDITOR.get(): ## impala requires beeswax anyway
-             <li><a href="${ url('notebook:editor') }?type=impala"><img src="${ static(apps['impala'].icon_path) }" class="app-icon"/> ${_('Impala')}</a></li>
+             <li><a href="${ url('notebook:editor') }?type=impala"><img src="${ static(apps['impala'].icon_path) }" class="app-icon" alt="${ _('Impala icon') }"/> ${_('Impala')}</a></li>
              % else:
              % else:
-             <li><a href="/${apps['impala'].display_name}"><img src="${ static(apps['impala'].icon_path) }" class="app-icon"/> ${_('Impala')}</a></li>
+             <li><a href="/${apps['impala'].display_name}"><img src="${ static(apps['impala'].icon_path) }" class="app-icon" alt="${ _('Impala icon') }"/> ${_('Impala')}</a></li>
              % endif
              % endif
            % endif
            % endif
            % if 'rdbms' in apps:
            % if 'rdbms' in apps:
              % if USE_NEW_EDITOR.get():
              % if USE_NEW_EDITOR.get():
-             <li><a href="/${apps['rdbms'].display_name}"><img src="${ static(apps['rdbms'].icon_path) }" class="app-icon"/> ${_('DB Query')}</a></li>
+             <li><a href="/${apps['rdbms'].display_name}"><img src="${ static(apps['rdbms'].icon_path) }" class="app-icon" alt="${ _('DBQuery icon') }"/> ${_('DB Query')}</a></li>
              % else:
              % else:
-             <li><a href="/${apps['rdbms'].display_name}"><img src="${ static(apps['rdbms'].icon_path) }" class="app-icon"/> ${_('DB Query')}</a></li>
+             <li><a href="/${apps['rdbms'].display_name}"><img src="${ static(apps['rdbms'].icon_path) }" class="app-icon" alt="${ _('DBQuery icon') }"/> ${_('DB Query')}</a></li>
              % endif
              % endif
            % endif
            % endif
            % if 'pig' in apps:
            % if 'pig' in apps:
              % if USE_NEW_EDITOR.get() and False:
              % if USE_NEW_EDITOR.get() and False:
-             <li><a href="${ url('notebook:editor') }?type=pig"><img src="${ static(apps['pig'].icon_path) }" class="app-icon"/> ${_('Pig')}</a></li>
+             <li><a href="${ url('notebook:editor') }?type=pig"><img src="${ static(apps['pig'].icon_path) }" class="app-icon" alt="${ _('Pig icon') }"/> ${_('Pig')}</a></li>
              % else:
              % else:
-             <li><a href="/${apps['pig'].display_name}"><img src="${ static(apps['pig'].icon_path) }" class="app-icon"/> ${_('Pig')}</a></li>
+             <li><a href="/${apps['pig'].display_name}"><img src="${ static(apps['pig'].icon_path) }" class="app-icon" alt="${ _('Pig icon') }"/> ${_('Pig')}</a></li>
              % endif
              % endif
            % endif
            % endif
            % if 'jobsub' in apps:
            % if 'jobsub' in apps:
-             <li><a href="/${apps['jobsub'].display_name}"><img src="${ static(apps['jobsub'].icon_path) }" class="app-icon"/> ${_('Job Designer')}</a></li>
+             <li><a href="/${apps['jobsub'].display_name}"><img src="${ static(apps['jobsub'].icon_path) }" class="app-icon" alt="${ _('Job designer icon') }"/> ${_('Job Designer')}</a></li>
            % endif
            % endif
          </ul>
          </ul>
        </li>
        </li>
@@ -365,16 +365,16 @@ ${ hueIcons.symbols() }
          <a title="${_('Manage data')}" rel="navigator-tooltip" href="#" data-toggle="dropdown" class="dropdown-toggle"><i class="fa fa-database inline-block hideMoreThan950"></i><span class="hide950">Data Browsers</span> <b class="caret"></b></a>
          <a title="${_('Manage data')}" rel="navigator-tooltip" href="#" data-toggle="dropdown" class="dropdown-toggle"><i class="fa fa-database inline-block hideMoreThan950"></i><span class="hide950">Data Browsers</span> <b class="caret"></b></a>
          <ul role="menu" class="dropdown-menu">
          <ul role="menu" class="dropdown-menu">
            % if 'metastore' in apps:
            % if 'metastore' in apps:
-             <li><a href="/${apps['metastore'].display_name}"><img src="${ static(apps['metastore'].icon_path) }" class="app-icon"/> ${_('Metastore Tables')}</a></li>
+             <li><a href="/${apps['metastore'].display_name}"><img src="${ static(apps['metastore'].icon_path) }" class="app-icon" alt="${ _('Metastore icon') }"/> ${_('Metastore Tables')}</a></li>
            % endif
            % endif
            % if 'hbase' in apps:
            % if 'hbase' in apps:
-             <li><a href="/${apps['hbase'].display_name}"><img src="${ static(apps['hbase'].icon_path) }" class="app-icon"/> ${_('HBase')}</a></li>
+             <li><a href="/${apps['hbase'].display_name}"><img src="${ static(apps['hbase'].icon_path) }" class="app-icon" alt="${ _('HBase icon') }"/> ${_('HBase')}</a></li>
            % endif
            % endif
            % if 'sqoop' in apps:
            % if 'sqoop' in apps:
-             <li><a href="/${apps['sqoop'].display_name}"><img src="${ static(apps['sqoop'].icon_path) }" class="app-icon"/> ${_('Sqoop Transfer')}</a></li>
+             <li><a href="/${apps['sqoop'].display_name}"><img src="${ static(apps['sqoop'].icon_path) }" class="app-icon" alt="${ _('Sqoop icon') }"/> ${_('Sqoop Transfer')}</a></li>
            % endif
            % endif
            % if 'zookeeper' in apps:
            % if 'zookeeper' in apps:
-             <li><a href="/${apps['zookeeper'].display_name}"><img src="${ static(apps['zookeeper'].icon_path) }" class="app-icon"/> ${_('ZooKeeper')}</a></li>
+             <li><a href="/${apps['zookeeper'].display_name}"><img src="${ static(apps['zookeeper'].icon_path) }" class="app-icon" alt="${ _('ZooKeeper icon') }"/> ${_('ZooKeeper')}</a></li>
            % endif
            % endif
          </ul>
          </ul>
        </li>
        </li>
@@ -386,31 +386,31 @@ ${ hueIcons.symbols() }
          <a title="${_('Schedule with Oozie')}" rel="navigator-tooltip" href="#" data-toggle="dropdown" class="dropdown-toggle"><i class="fa fa-random inline-block hideMoreThan950"></i><span class="hide950">Workflows</span> <b class="caret"></b></a>
          <a title="${_('Schedule with Oozie')}" rel="navigator-tooltip" href="#" data-toggle="dropdown" class="dropdown-toggle"><i class="fa fa-random inline-block hideMoreThan950"></i><span class="hide950">Workflows</span> <b class="caret"></b></a>
          <ul role="menu" class="dropdown-menu">
          <ul role="menu" class="dropdown-menu">
            <li class="dropdown-submenu">
            <li class="dropdown-submenu">
-             <a href="${ url('oozie:index') }"><img src="${ static('oozie/art/icon_oozie_dashboard_48.png') }" class="app-icon" /> ${_('Dashboards')}</a>
+             <a href="${ url('oozie:index') }"><img src="${ static('oozie/art/icon_oozie_dashboard_48.png') }" class="app-icon"  alt="${ _('Oozie dashboard icon') }"/> ${_('Dashboards')}</a>
              <ul class="dropdown-menu">
              <ul class="dropdown-menu">
-               <li><a href="${url('oozie:list_oozie_workflows')}"><img src="${ static('oozie/art/icon_oozie_workflow_48.png') }" class="app-icon"/> ${_('Workflows')}</a></li>
-               <li><a href="${url('oozie:list_oozie_coordinators')}"><img src="${ static('oozie/art/icon_oozie_coordinator_48.png') }" class="app-icon" /> ${_('Coordinators')}</a></li>
-               <li><a href="${url('oozie:list_oozie_bundles')}"><img src="${ static('oozie/art/icon_oozie_bundle_48.png') }" class="app-icon" /> ${_('Bundles')}</a></li>
+               <li><a href="${url('oozie:list_oozie_workflows')}"><img src="${ static('oozie/art/icon_oozie_workflow_48.png') }" class="app-icon" alt="${ _('Oozie workflow icon') }"/> ${_('Workflows')}</a></li>
+               <li><a href="${url('oozie:list_oozie_coordinators')}"><img src="${ static('oozie/art/icon_oozie_coordinator_48.png') }" class="app-icon" alt="${ _('Oozie coordinator icon') }"/> ${_('Coordinators')}</a></li>
+               <li><a href="${url('oozie:list_oozie_bundles')}"><img src="${ static('oozie/art/icon_oozie_bundle_48.png') }" class="app-icon" alt="${ _('Oozie bundles icon') }" /> ${_('Bundles')}</a></li>
              </ul>
              </ul>
            </li>
            </li>
            % if not user.has_hue_permission(action="disable_editor_access", app="oozie") or user.is_superuser:
            % if not user.has_hue_permission(action="disable_editor_access", app="oozie") or user.is_superuser:
            <% from oozie.conf import ENABLE_V2 %>
            <% from oozie.conf import ENABLE_V2 %>
            % if not ENABLE_V2.get():
            % if not ENABLE_V2.get():
            <li class="dropdown-submenu">
            <li class="dropdown-submenu">
-             <a href="${ url('oozie:list_workflows') }"><img src="${ static('oozie/art/icon_oozie_editor_48.png') }" class="app-icon" /> ${_('Editors')}</a>
+             <a href="${ url('oozie:list_workflows') }"><img src="${ static('oozie/art/icon_oozie_editor_48.png') }" class="app-icon" alt="${ _('Oozie editor icon') }" /> ${_('Editors')}</a>
              <ul class="dropdown-menu">
              <ul class="dropdown-menu">
-               <li><a href="${url('oozie:list_workflows')}"><img src="${ static('oozie/art/icon_oozie_workflow_48.png') }" class="app-icon"/> ${_('Workflows')}</a></li>
-               <li><a href="${url('oozie:list_coordinators')}"><img src="${ static('oozie/art/icon_oozie_coordinator_48.png') }" class="app-icon" /> ${_('Coordinators')}</a></li>
-               <li><a href="${url('oozie:list_bundles')}"><img src="${ static('oozie/art/icon_oozie_bundle_48.png') }" class="app-icon" /> ${_('Bundles')}</a></li>
+               <li><a href="${url('oozie:list_workflows')}"><img src="${ static('oozie/art/icon_oozie_workflow_48.png') }" class="app-icon" alt="${ _('Oozie workflow icon') }"/> ${_('Workflows')}</a></li>
+               <li><a href="${url('oozie:list_coordinators')}"><img src="${ static('oozie/art/icon_oozie_coordinator_48.png') }" class="app-icon" alt="${ _('Oozie coordinator icon') }" /> ${_('Coordinators')}</a></li>
+               <li><a href="${url('oozie:list_bundles')}"><img src="${ static('oozie/art/icon_oozie_bundle_48.png') }" class="app-icon" alt="${ _('Oozie bundle icon') }" /> ${_('Bundles')}</a></li>
              </ul>
              </ul>
            </li>
            </li>
            % else:
            % else:
            <li class="dropdown-submenu">
            <li class="dropdown-submenu">
-             <a href="${ url('oozie:list_editor_workflows') }"><img src="${ static('oozie/art/icon_oozie_editor_48.png') }" class="app-icon" /> ${_('Editors')}</a>
+             <a href="${ url('oozie:list_editor_workflows') }"><img src="${ static('oozie/art/icon_oozie_editor_48.png') }" class="app-icon" alt="${ _('Oozie editor icon') }" /> ${_('Editors')}</a>
              <ul class="dropdown-menu">
              <ul class="dropdown-menu">
-               <li><a href="${url('oozie:list_editor_workflows')}"><img src="${ static('oozie/art/icon_oozie_workflow_48.png') }" class="app-icon"/> ${_('Workflows')}</a></li>
-               <li><a href="${url('oozie:list_editor_coordinators')}"><img src="${ static('oozie/art/icon_oozie_coordinator_48.png') }" class="app-icon" /> ${_('Coordinators')}</a></li>
-               <li><a href="${url('oozie:list_editor_bundles')}"><img src="${ static('oozie/art/icon_oozie_bundle_48.png') }" class="app-icon" /> ${_('Bundles')}</a></li>
+               <li><a href="${url('oozie:list_editor_workflows')}"><img src="${ static('oozie/art/icon_oozie_workflow_48.png') }" class="app-icon" alt="${ _('Oozie workflow icon') }"/> ${_('Workflows')}</a></li>
+               <li><a href="${url('oozie:list_editor_coordinators')}"><img src="${ static('oozie/art/icon_oozie_coordinator_48.png') }" class="app-icon" alt="${ _('Oozie coordinator icon') }" /> ${_('Coordinators')}</a></li>
+               <li><a href="${url('oozie:list_editor_bundles')}"><img src="${ static('oozie/art/icon_oozie_bundle_48.png') }" class="app-icon" alt="${ _('Oozie bundle icon') }" /> ${_('Bundles')}</a></li>
              </ul>
              </ul>
            </li>
            </li>
            % endif
            % endif
@@ -445,7 +445,7 @@ ${ hueIcons.symbols() }
                % for collection in collections:
                % for collection in collections:
                  <li>
                  <li>
                    <a href="${ url('search:index') }?collection=${ collection.id }">
                    <a href="${ url('search:index') }?collection=${ collection.id }">
-                     <img src="${ static(controller.get_icon(collection.name)) }" class="app-icon"/> ${ collection.name }
+                     <img src="${ static(controller.get_icon(collection.name)) }" class="app-icon" alt="${ _('Collection icon') }"/> ${ collection.name }
                    </a>
                    </a>
                  </li>
                  </li>
                % endfor
                % endfor
@@ -459,10 +459,10 @@ ${ hueIcons.symbols() }
            <a title="${_('Hadoop Security')}" rel="navigator-tooltip" href="#" data-toggle="dropdown" class="dropdown-toggle"><i class="fa fa-unlock inline-block hideMoreThan950"></i><span class="hide950">Security</span> <b class="caret"></b></a>
            <a title="${_('Hadoop Security')}" rel="navigator-tooltip" href="#" data-toggle="dropdown" class="dropdown-toggle"><i class="fa fa-unlock inline-block hideMoreThan950"></i><span class="hide950">Security</span> <b class="caret"></b></a>
            <ul role="menu" class="dropdown-menu">
            <ul role="menu" class="dropdown-menu">
              % if HIVE_V1.get():
              % if HIVE_V1.get():
-             <li><a href="${ url('security:hive') }">&nbsp;<img src="/static/metastore/art/icon_metastore_48.png" class="app-icon"> ${_('Hive Tables')}</a></li>
+             <li><a href="${ url('security:hive') }">&nbsp;<img src="/static/metastore/art/icon_metastore_48.png" class="app-icon" alt="${ _('Metastore icon') }"> ${_('Hive Tables')}</a></li>
              % endif
              % endif
              % if HIVE_V2.get():
              % if HIVE_V2.get():
-             <li><a href="${ url('security:hive2') }">&nbsp;<img src="/static/metastore/art/icon_metastore_48.png" class="app-icon"> ${_('Hive Tables v2')}</a></li>
+             <li><a href="${ url('security:hive2') }">&nbsp;<img src="/static/metastore/art/icon_metastore_48.png" class="app-icon" alt="${ _('Metastore icon') }"> ${_('Hive Tables v2')}</a></li>
              % endif
              % endif
              % if SOLR_V2.get():
              % if SOLR_V2.get():
              <li><a href="${ url('security:solr') }">&nbsp;<i class="fa fa-database"></i>&nbsp;${_('Solr Collections')}</a></li>
              <li><a href="${ url('security:solr') }">&nbsp;<i class="fa fa-database"></i>&nbsp;${_('Solr Collections')}</a></li>
@@ -476,7 +476,7 @@ ${ hueIcons.symbols() }
          <a href="#" data-toggle="dropdown" class="dropdown-toggle"><i class="fa fa-tasks inline-block hideMoreThan950"></i><span class="hide950">${_('Other apps')}</span> <b class="caret"></b></a>
          <a href="#" data-toggle="dropdown" class="dropdown-toggle"><i class="fa fa-tasks inline-block hideMoreThan950"></i><span class="hide950">${_('Other apps')}</span> <b class="caret"></b></a>
          <ul role="menu" class="dropdown-menu">
          <ul role="menu" class="dropdown-menu">
            % for other in other_apps:
            % for other in other_apps:
-             <li><a href="/${ other.display_name }"><img src="${ static(other.icon_path) }" class="app-icon"/> ${ other.nice_name }</a></li>
+             <li><a href="/${ other.display_name }"><img src="${ static(other.icon_path) }" class="app-icon" alt="${ _('App icon') }"/> ${ other.nice_name }</a></li>
            % endfor
            % endfor
          </ul>
          </ul>
        </li>
        </li>

+ 1 - 1
desktop/core/src/desktop/templates/common_header_m.mako

@@ -306,7 +306,7 @@ if USE_NEW_EDITOR.get():
         <span class="icon-bar"></span>
         <span class="icon-bar"></span>
       </button>
       </button>
       <a class="brand" href="#">
       <a class="brand" href="#">
-        <img src="${ static('desktop/art/hue-logo-mini-white.png') }" />
+        <img src="${ static('desktop/art/hue-logo-mini-white.png') }" alt="${ _('Hue logo') }" />
         ${get_title(title)}
         ${get_title(title)}
       </a>
       </a>
       <div class="nav-collapse collapse">
       <div class="nav-collapse collapse">

+ 1 - 1
desktop/core/src/desktop/templates/common_home.mako

@@ -43,7 +43,7 @@
         <ul class="nav">
         <ul class="nav">
           <li class="currentApp">
           <li class="currentApp">
             <a href="${ url('desktop.views.home2') }">
             <a href="${ url('desktop.views.home2') }">
-              <img src="${ static('desktop/art/home.png') }" class="app-icon" />
+              <img src="${ static('desktop/art/home.png') }" class="app-icon" alt="${ _('Home icon') }" />
               ${ _('My documents') }
               ${ _('My documents') }
             </a>
             </a>
            </li>
            </li>

+ 1 - 1
desktop/core/src/desktop/templates/common_notebook_ko_components.mako

@@ -60,7 +60,7 @@ except ImportError, e:
           <li data-bind="click: function() { $parent.addNewSnippet($data) }">
           <li data-bind="click: function() { $parent.addNewSnippet($data) }">
             <div style="width: 30px; display:inline-block;">
             <div style="width: 30px; display:inline-block;">
             <!-- ko if: $root.getSnippetViewSettings(type()).snippetImage -->
             <!-- ko if: $root.getSnippetViewSettings(type()).snippetImage -->
-            <img class="snippet-icon" data-bind="attr: { 'src': $root.getSnippetViewSettings(type()).snippetImage }">
+            <img class="snippet-icon" data-bind="attr: { 'src': $root.getSnippetViewSettings(type()).snippetImage }"  alt="${ _('Snippet icon') }">
             <!-- /ko -->
             <!-- /ko -->
             <!-- ko if: $root.getSnippetViewSettings(type()).snippetIcon -->
             <!-- ko if: $root.getSnippetViewSettings(type()).snippetIcon -->
             <i style="margin-left: 2px; color: #338bb8;" class="fa snippet-icon" data-bind="css: $root.getSnippetViewSettings(type()).snippetIcon"></i>
             <i style="margin-left: 2px; color: #338bb8;" class="fa snippet-icon" data-bind="css: $root.getSnippetViewSettings(type()).snippetIcon"></i>

+ 7 - 7
desktop/core/src/desktop/templates/document_browser.mako

@@ -639,13 +639,13 @@ from desktop.views import _ko
               <a class="inactive-action doc-browser-action" title="${_('New document')}" data-toggle="dropdown" data-bind="tooltip: { placement: 'bottom', delay: 750 }, css: { 'disabled': isTrash() || isTrashed() }" href="javascript:void(0);"><span class="fa-stack fa-fw" style="width: 1.28571429em"><i class="fa fa-file-o fa-stack-1x"></i><i class="fa fa-plus-circle fa-stack-1x" style="font-size: 14px; margin-left: 6px; margin-top: 6px;"></i></span></a>
               <a class="inactive-action doc-browser-action" title="${_('New document')}" data-toggle="dropdown" data-bind="tooltip: { placement: 'bottom', delay: 750 }, css: { 'disabled': isTrash() || isTrashed() }" href="javascript:void(0);"><span class="fa-stack fa-fw" style="width: 1.28571429em"><i class="fa fa-file-o fa-stack-1x"></i><i class="fa fa-plus-circle fa-stack-1x" style="font-size: 14px; margin-left: 6px; margin-top: 6px;"></i></span></a>
               <ul class="dropdown-menu less-padding document-types" style="margin-top:10px; width: 175px;" role="menu">
               <ul class="dropdown-menu less-padding document-types" style="margin-top:10px; width: 175px;" role="menu">
                 % if 'beeswax' in apps:
                 % if 'beeswax' in apps:
-                  <li><a title="${_('Hive Query')}" data-bind="attr: { href: addDirectoryParamToUrl('${ url('notebook:editor') }?type=hive') }, click: ${ is_embeddable and 'openResponsiveLink' or 'openExternalLink' }"><img src="${ static(apps['beeswax'].icon_path) }" class="app-icon"/> ${_('Hive Query')}</a></li>
+                  <li><a title="${_('Hive Query')}" data-bind="attr: { href: addDirectoryParamToUrl('${ url('notebook:editor') }?type=hive') }, click: ${ is_embeddable and 'openResponsiveLink' or 'openExternalLink' }"><img src="${ static(apps['beeswax'].icon_path) }" class="app-icon" alt="${ _('Hive icon') }"/> ${_('Hive Query')}</a></li>
                 % endif
                 % endif
                 % if 'impala' in apps:
                 % if 'impala' in apps:
-                  <li><a title="${_('Impala Query')}" data-bind="attr: { href: addDirectoryParamToUrl('${ url('notebook:editor') }?type=impala') }, click: ${ is_embeddable and 'openResponsiveLink' or 'openExternalLink' }"><img src="${ static(apps['impala'].icon_path) }" class="app-icon"/> ${_('Impala Query')}</a></li>
+                  <li><a title="${_('Impala Query')}" data-bind="attr: { href: addDirectoryParamToUrl('${ url('notebook:editor') }?type=impala') }, click: ${ is_embeddable and 'openResponsiveLink' or 'openExternalLink' }"><img src="${ static(apps['impala'].icon_path) }" class="app-icon" alt="${ _('Impala icon') }"/> ${_('Impala Query')}</a></li>
                 % endif
                 % endif
                 % if 'pig' in apps:
                 % if 'pig' in apps:
-                  <li><a title="${_('Pig Script')}" data-bind="attr: { href: addDirectoryParamToUrl('${ url('pig:index') }') }, click: ${ is_embeddable and 'openResponsiveLink' or 'openExternalLink' }"><img src="${ static(apps['pig'].icon_path) }" class="app-icon"/> ${_('Pig Script')}</a></li>
+                  <li><a title="${_('Pig Script')}" data-bind="attr: { href: addDirectoryParamToUrl('${ url('pig:index') }') }, click: ${ is_embeddable and 'openResponsiveLink' or 'openExternalLink' }"><img src="${ static(apps['pig'].icon_path) }" class="app-icon" alt="${ _('Pig icon') }"/> ${_('Pig Script')}</a></li>
                 % endif
                 % endif
                 <%
                 <%
                 from notebook.conf import SHOW_NOTEBOOKS
                 from notebook.conf import SHOW_NOTEBOOKS
@@ -654,12 +654,12 @@ from desktop.views import _ko
                   <li><a title="${_('Notebook')}" data-bind="attr: { href: addDirectoryParamToUrl('${ url('notebook:index') }') }, click: ${ is_embeddable and 'openResponsiveLink' or 'openExternalLink' }"><i style="font-size: 24px; line-height: 24px; vertical-align: middle; color: #338BB8;" class="fa app-icon fa-fw fa-file-text-o"></i> ${_('Notebook')}</a></li>
                   <li><a title="${_('Notebook')}" data-bind="attr: { href: addDirectoryParamToUrl('${ url('notebook:index') }') }, click: ${ is_embeddable and 'openResponsiveLink' or 'openExternalLink' }"><i style="font-size: 24px; line-height: 24px; vertical-align: middle; color: #338BB8;" class="fa app-icon fa-fw fa-file-text-o"></i> ${_('Notebook')}</a></li>
                 % endif
                 % endif
                 % if 'oozie' in apps:
                 % if 'oozie' in apps:
-                  <li><a title="${_('Oozie Workflow')}" data-bind="attr: { href: addDirectoryParamToUrl('${ url('oozie:new_workflow') }') }, click: ${ is_embeddable and 'openResponsiveLink' or 'openExternalLink' }"><img src="${ static('oozie/art/icon_oozie_workflow_48.png') }" class="app-icon"/> ${_('Oozie Workflow')}</a></li>
-                  <li><a title="${_('Oozie Coordinator')}" data-bind="attr: { href: addDirectoryParamToUrl('${ url('oozie:new_coordinator') }') }, click: ${ is_embeddable and 'openResponsiveLink' or 'openExternalLink' }"><img src="${ static('oozie/art/icon_oozie_coordinator_48.png') }" class="app-icon"/> ${_('Oozie Coordinator')}</a></li>
-                  <li><a title="${_('Oozie Bundle')}" data-bind="attr: { href: addDirectoryParamToUrl('${ url('oozie:new_bundle') }') }, click: ${ is_embeddable and 'openResponsiveLink' or 'openExternalLink' }"><img src="${ static('oozie/art/icon_oozie_bundle_48.png') }" class="app-icon"/> ${_('Oozie Bundle')}</a></li>
+                  <li><a title="${_('Oozie Workflow')}" data-bind="attr: { href: addDirectoryParamToUrl('${ url('oozie:new_workflow') }') }, click: ${ is_embeddable and 'openResponsiveLink' or 'openExternalLink' }"><img src="${ static('oozie/art/icon_oozie_workflow_48.png') }" class="app-icon" alt="${ _('Oozie workflow icon') }"/> ${_('Oozie Workflow')}</a></li>
+                  <li><a title="${_('Oozie Coordinator')}" data-bind="attr: { href: addDirectoryParamToUrl('${ url('oozie:new_coordinator') }') }, click: ${ is_embeddable and 'openResponsiveLink' or 'openExternalLink' }"><img src="${ static('oozie/art/icon_oozie_coordinator_48.png') }" class="app-icon" alt="${ _('Oozie coordinator icon') }"/> ${_('Oozie Coordinator')}</a></li>
+                  <li><a title="${_('Oozie Bundle')}" data-bind="attr: { href: addDirectoryParamToUrl('${ url('oozie:new_bundle') }') }, click: ${ is_embeddable and 'openResponsiveLink' or 'openExternalLink' }"><img src="${ static('oozie/art/icon_oozie_bundle_48.png') }" class="app-icon" alt="${ _('Oozie bundle icon') }"/> ${_('Oozie Bundle')}</a></li>
                 % endif
                 % endif
                 % if 'search' in apps:
                 % if 'search' in apps:
-                  <li><a title="${_('Solr Search')}" data-bind="attr: { href: addDirectoryParamToUrl('${ url('search:index') }') }, click: ${ is_embeddable and 'openResponsiveLink' or 'openExternalLink' }"><img src="${ static('search/art/icon_search_48.png') }" class="app-icon"/> ${_('Search Dashboard')}</a></li>
+                  <li><a title="${_('Solr Search')}" data-bind="attr: { href: addDirectoryParamToUrl('${ url('search:index') }') }, click: ${ is_embeddable and 'openResponsiveLink' or 'openExternalLink' }"><img src="${ static('search/art/icon_search_48.png') }" class="app-icon" alt="${ _('Search icon') }"/> ${_('Search Dashboard')}</a></li>
                 % endif
                 % endif
               </ul>
               </ul>
             </span>
             </span>

+ 11 - 11
desktop/core/src/desktop/templates/home.mako

@@ -90,7 +90,7 @@ ${ commonheader(_('Welcome Home'), "home", user, request) | n,unicode }
         <ul class="nav">
         <ul class="nav">
           <li class="currentApp">
           <li class="currentApp">
             <a href="${ url('desktop.views.home') }">
             <a href="${ url('desktop.views.home') }">
-              <img src="${ static('desktop/art/home.png') }" class="app-icon" />
+              <img src="${ static('desktop/art/home.png') }" class="app-icon" alt="${ _('Home icon') }" />
               ${ _('My documents') }
               ${ _('My documents') }
             </a>
             </a>
            </li>
            </li>
@@ -101,7 +101,7 @@ ${ commonheader(_('Welcome Home'), "home", user, request) | n,unicode }
         <ul class="nav">
         <ul class="nav">
           <li class="currentApp">
           <li class="currentApp">
             <a href="${ url('desktop.views.home2') }">
             <a href="${ url('desktop.views.home2') }">
-              <img src="${ static('desktop/art/home.png') }" class="app-icon" />
+              <img src="${ static('desktop/art/home.png') }" class="app-icon" alt="${ _('Home icon') }" />
               ${ _('New Home') }
               ${ _('New Home') }
             </a>
             </a>
            </li>
            </li>
@@ -122,24 +122,24 @@ ${ commonheader(_('Welcome Home'), "home", user, request) | n,unicode }
               <a href="#" data-toggle="dropdown"><i class="fa fa-plus-circle"></i> ${_('New document')}</a>
               <a href="#" data-toggle="dropdown"><i class="fa fa-plus-circle"></i> ${_('New document')}</a>
               <ul class="dropdown-menu" role="menu">
               <ul class="dropdown-menu" role="menu">
                 % if 'beeswax' in apps:
                 % if 'beeswax' in apps:
-                  <li><a href="${ url('beeswax:index') }"><img src="${ static(apps['beeswax'].icon_path) }" class="app-icon"/> ${_('Hive Query')}</a></li>
+                  <li><a href="${ url('beeswax:index') }"><img src="${ static(apps['beeswax'].icon_path) }" class="app-icon" alt="${ _('Hive icon') }"/> ${_('Hive Query')}</a></li>
                 % endif
                 % endif
                 % if 'impala' in apps:
                 % if 'impala' in apps:
-                  <li><a href="${ url('impala:index') }"><img src="${ static(apps['impala'].icon_path) }" class="app-icon"/> ${_('Impala Query')}</a></li>
+                  <li><a href="${ url('impala:index') }"><img src="${ static(apps['impala'].icon_path) }" class="app-icon" alt="${ _('Impala icon') }"/> ${_('Impala Query')}</a></li>
                 % endif
                 % endif
                 % if 'pig' in apps:
                 % if 'pig' in apps:
-                  <li><a href="${ url('pig:index') }"><img src="${ static(apps['pig'].icon_path) }" class="app-icon"/> ${_('Pig Script')}</a></li>
+                  <li><a href="${ url('pig:index') }"><img src="${ static(apps['pig'].icon_path) }" class="app-icon" alt="${ _('Pig icon') }"/> ${_('Pig Script')}</a></li>
                 % endif
                 % endif
                 % if 'spark' in apps:
                 % if 'spark' in apps:
-                  <li><a href="${ url('notebook:index') }"><img src="${ static(apps['spark'].icon_path) }" class="app-icon"/> ${_('Spark Job')}</a></li>
+                  <li><a href="${ url('notebook:index') }"><img src="${ static(apps['spark'].icon_path) }" class="app-icon" alt="${ _('Spark icon') }"/> ${_('Spark Job')}</a></li>
                 % endif
                 % endif
                 % if 'oozie' in apps:
                 % if 'oozie' in apps:
                 <li class="dropdown-submenu">
                 <li class="dropdown-submenu">
-                  <a href="#"><img src="${ static(apps['oozie'].icon_path) }" class="app-icon"/> ${_('Oozie Scheduler')}</a>
+                  <a href="#"><img src="${ static(apps['oozie'].icon_path) }" class="app-icon" alt="${ _('Oozie icon') }"/> ${_('Oozie Scheduler')}</a>
                   <ul class="dropdown-menu">
                   <ul class="dropdown-menu">
-                    <li><a href="${ url('oozie:new_workflow') }"><img src="${ static('oozie/art/icon_oozie_workflow_48.png') }" class="app-icon"/> ${_('Workflow')}</a></li>
-                    <li><a href="${ url('oozie:new_coordinator') }"><img src="${ static('oozie/art/icon_oozie_coordinator_48.png') }" class="app-icon"/> ${_('Coordinator')}</a></li>
-                    <li><a href="${ url('oozie:new_bundle') }"><img src="${ static('oozie/art/icon_oozie_bundle_48.png') }" class="app-icon"/> ${_('Bundle')}</a></li>
+                    <li><a href="${ url('oozie:new_workflow') }"><img src="${ static('oozie/art/icon_oozie_workflow_48.png') }" class="app-icon" alt="${ _('Oozie workflow icon') }"/> ${_('Workflow')}</a></li>
+                    <li><a href="${ url('oozie:new_coordinator') }"><img src="${ static('oozie/art/icon_oozie_coordinator_48.png') }" class="app-icon" alt="${ _('Oozie coordinator icon') }"/> ${_('Coordinator')}</a></li>
+                    <li><a href="${ url('oozie:new_bundle') }"><img src="${ static('oozie/art/icon_oozie_bundle_48.png') }" class="app-icon" alt="${ _('Oozie bundle icon') }"/> ${_('Bundle')}</a></li>
                   </ul>
                   </ul>
                 </li>
                 </li>
                 % endif
                 % endif
@@ -275,7 +275,7 @@ ${ commonheader(_('Welcome Home'), "home", user, request) | n,unicode }
 
 
 <script type="text/html" id="document-template">
 <script type="text/html" id="document-template">
   <tr>
   <tr>
-    <td style="width: 26px"><img data-bind="attr: { src: icon }" class="app-icon"></td>
+    <td style="width: 26px"><img data-bind="attr: { src: icon }" class="app-icon" alt="${ _('Document icon') }"></td>
     <td><a data-bind="attr: { href: url }, html: name"></a></td>
     <td><a data-bind="attr: { href: url }, html: name"></a></td>
     <td data-bind="html: description"></td>
     <td data-bind="html: description"></td>
     <td data-bind="text: lastModified"></td>
     <td data-bind="text: lastModified"></td>

+ 2 - 2
desktop/core/src/desktop/templates/login.mako

@@ -70,7 +70,7 @@ ${ hueIcons.symbols() }
     </div>
     </div>
     % else:
     % else:
     <div class="logo">
     <div class="logo">
-      <img src="${ static('desktop/art/hue-login-logo-ellie@2x.png') }" width="70" height="70">
+      <img src="${ static('desktop/art/hue-login-logo-ellie@2x.png') }" width="70" height="70" alt="${ _('Hue logo') }">
     </div>
     </div>
     % endif
     % endif
 
 
@@ -143,7 +143,7 @@ ${ hueIcons.symbols() }
 
 
 <div class="trademark center muted">
 <div class="trademark center muted">
   % if conf.CUSTOM.LOGO_SVG.get():
   % if conf.CUSTOM.LOGO_SVG.get():
-    ${ _('Powered by') } <img src="${ static('desktop/art/hue-login-logo.png') }" width="40" style="vertical-align: text-top;"> -
+    ${ _('Powered by') } <img src="${ static('desktop/art/hue-login-logo.png') }" width="40" style="vertical-align: text-top;"  alt="${ _('Hue logo') }"> -
   % endif
   % endif
   ${ _('Hue and the Hue logo are trademarks of Cloudera, Inc.') }
   ${ _('Hue and the Hue logo are trademarks of Cloudera, Inc.') }
 </div>
 </div>

+ 1 - 1
desktop/core/src/desktop/templates/login_modal.mako

@@ -27,7 +27,7 @@
 
 
   <div class="login-container">
   <div class="login-container">
       <a href="#" class="close logged-out link-message" data-dismiss="modal" style="display: none; margin: 10px">&times;</a>
       <a href="#" class="close logged-out link-message" data-dismiss="modal" style="display: none; margin: 10px">&times;</a>
-      <div class="logo"><img src="${ static('desktop/art/hue-login-logo-ellie@2x.png') }" width="70" height="70"></div>
+      <div class="logo"><img src="${ static('desktop/art/hue-login-logo-ellie@2x.png') }" width="70" height="70" alt="${ _('Hue logo') }"></div>
       <h4 class="muted" style="margin-bottom: 50px; padding: 30px">
       <h4 class="muted" style="margin-bottom: 50px; padding: 30px">
         <span class="logged-out link-message" style="display: none">
         <span class="logged-out link-message" style="display: none">
           ${ _('Your session expired and your current action requires to') }
           ${ _('Your session expired and your current action requires to') }

+ 8 - 8
desktop/core/src/desktop/templates/responsive.mako

@@ -112,16 +112,16 @@ ${ hueIcons.symbols() }
             <li class="dropdown-submenu">
             <li class="dropdown-submenu">
               <a title="${_('Query editor')}" rel="navigator-tooltip" href="javascript: void(0)" data-bind="click: function(){ onePageViewModel.changeEditorType('hive'); onePageViewModel.currentApp('editor') }"><i class="fa fa-fw fa-edit inline-block"></i> ${ _('Query') }</a>
               <a title="${_('Query editor')}" rel="navigator-tooltip" href="javascript: void(0)" data-bind="click: function(){ onePageViewModel.changeEditorType('hive'); onePageViewModel.currentApp('editor') }"><i class="fa fa-fw fa-edit inline-block"></i> ${ _('Query') }</a>
               <ul class="dropdown-menu">
               <ul class="dropdown-menu">
-                <li><a href="javascript: void(0)" data-bind="click: function(){ onePageViewModel.changeEditorType('hive'); onePageViewModel.currentApp('editor') }"><img src="${ static(apps['beeswax'].icon_path) }" class="app-icon"/> ${_('Hive Query')}</a></li>
-                <li><a href="javascript: void(0)" data-bind="click: function(){ onePageViewModel.changeEditorType('impala'); onePageViewModel.currentApp('editor') }"><img src="${ static(apps['impala'].icon_path) }" class="app-icon"/> ${_('Impala Query')}</a></li>
+                <li><a href="javascript: void(0)" data-bind="click: function(){ onePageViewModel.changeEditorType('hive'); onePageViewModel.currentApp('editor') }"><img src="${ static(apps['beeswax'].icon_path) }" class="app-icon" alt="${ _('Hive icon') }"/> ${_('Hive Query')}</a></li>
+                <li><a href="javascript: void(0)" data-bind="click: function(){ onePageViewModel.changeEditorType('impala'); onePageViewModel.currentApp('editor') }"><img src="${ static(apps['impala'].icon_path) }" class="app-icon" alt="${ _('Impala icon') }"/> ${_('Impala Query')}</a></li>
               </ul>
               </ul>
             </li>
             </li>
           % endif
           % endif
           % if 'beeswax' in apps and 'impala' not in apps:
           % if 'beeswax' in apps and 'impala' not in apps:
-            <li><a href="javascript: void(0)" data-bind="click: function(){ onePageViewModel.changeEditorType('hive'); onePageViewModel.currentApp('editor') }"><img src="${ static(apps['beeswax'].icon_path) }" class="app-icon"/> ${_('Hive Query')}</a></li>
+            <li><a href="javascript: void(0)" data-bind="click: function(){ onePageViewModel.changeEditorType('hive'); onePageViewModel.currentApp('editor') }"><img src="${ static(apps['beeswax'].icon_path) }" class="app-icon" alt="${ _('Hive icon') }"/> ${_('Hive Query')}</a></li>
           % endif
           % endif
           % if 'impala' in apps and 'beeswax' not in apps: ## impala requires beeswax anyway
           % if 'impala' in apps and 'beeswax' not in apps: ## impala requires beeswax anyway
-            <li><a href="javascript: void(0)" data-bind="click: function(){ onePageViewModel.changeEditorType('impala'); onePageViewModel.currentApp('editor') }"><img src="${ static(apps['impala'].icon_path) }" class="app-icon"/> ${_('Impala Query')}</a></li>
+            <li><a href="javascript: void(0)" data-bind="click: function(){ onePageViewModel.changeEditorType('impala'); onePageViewModel.currentApp('editor') }"><img src="${ static(apps['impala'].icon_path) }" class="app-icon" alt="${ _('Impala icon') }"/> ${_('Impala Query')}</a></li>
           % endif
           % endif
           % if IS_DASHBOARD_ENABLED.get():
           % if IS_DASHBOARD_ENABLED.get():
             <li><a href="javascript: void(0)" data-bind="click: function(){ onePageViewModel.currentApp('dashboard') }"><i class="fa fa-fw fa-area-chart"></i> ${ _('Dashboard') }</a></li>
             <li><a href="javascript: void(0)" data-bind="click: function(){ onePageViewModel.currentApp('dashboard') }"><i class="fa fa-fw fa-area-chart"></i> ${ _('Dashboard') }</a></li>
@@ -130,11 +130,11 @@ ${ hueIcons.symbols() }
           % if 'oozie' in apps:
           % if 'oozie' in apps:
           % if not user.has_hue_permission(action="disable_editor_access", app="oozie") or user.is_superuser:
           % if not user.has_hue_permission(action="disable_editor_access", app="oozie") or user.is_superuser:
             <li class="dropdown-submenu">
             <li class="dropdown-submenu">
-              <a title="${_('Schedule with Oozie')}" rel="navigator-tooltip" href="#"><img src="${ static('oozie/art/icon_oozie_editor_48.png') }" class="app-icon" /> ${ _('Workflow') }</a>
+              <a title="${_('Schedule with Oozie')}" rel="navigator-tooltip" href="#"><img src="${ static('oozie/art/icon_oozie_editor_48.png') }" class="app-icon"  alt="${ _('Oozie editor icon') }"/> ${ _('Workflow') }</a>
               <ul class="dropdown-menu">
               <ul class="dropdown-menu">
-                <li><a href="javascript: void(0)" data-bind="click: function(){ onePageViewModel.currentApp('oozie_workflow') }"><img src="${ static('oozie/art/icon_oozie_workflow_48.png') }" class="app-icon"/> ${_('Workflow')}</a></li>
-                <li><a href="javascript: void(0)" data-bind="click: function(){ onePageViewModel.currentApp('oozie_coordinator') }"><img src="${ static('oozie/art/icon_oozie_coordinator_48.png') }" class="app-icon" /> ${_('Schedule')}</a></li>
-                <li><a href="javascript: void(0)" data-bind="click: function(){ onePageViewModel.currentApp('oozie_bundle') }"/><img src="${ static('oozie/art/icon_oozie_bundle_48.png') }" class="app-icon" /> ${_('Bundle')}</a></li>
+                <li><a href="javascript: void(0)" data-bind="click: function(){ onePageViewModel.currentApp('oozie_workflow') }"><img src="${ static('oozie/art/icon_oozie_workflow_48.png') }" class="app-icon" alt="${ _('Oozie workflow icon') }"/> ${_('Workflow')}</a></li>
+                <li><a href="javascript: void(0)" data-bind="click: function(){ onePageViewModel.currentApp('oozie_coordinator') }"><img src="${ static('oozie/art/icon_oozie_coordinator_48.png') }" class="app-icon" alt="${ _('Oozie coordinator icon') }" /> ${_('Schedule')}</a></li>
+                <li><a href="javascript: void(0)" data-bind="click: function(){ onePageViewModel.currentApp('oozie_bundle') }"/><img src="${ static('oozie/art/icon_oozie_bundle_48.png') }" class="app-icon" alt="${ _('Oozie bundle icon') }" /> ${_('Bundle')}</a></li>
               </ul>
               </ul>
             </li>
             </li>
           % endif
           % endif

+ 1 - 1
desktop/core/src/desktop/templates/unsupported.mako

@@ -81,7 +81,7 @@
 
 
 <body>
 <body>
 <div class="header">
 <div class="header">
-  <img src="${ static('desktop/art/hue-logo-mini-white.png') }"/>
+  <img src="${ static('desktop/art/hue-logo-mini-white.png') }" alt="${ _('Hue logo') }"/>
 </div>
 </div>
 
 
 <div class="footer"></div>
 <div class="footer"></div>

+ 1 - 1
desktop/libs/dashboard/src/dashboard/templates/common_search.mako

@@ -351,7 +351,7 @@ from desktop.views import commonheader, commonfooter, _ko
 
 
 <div class="player-toolbar" data-bind="visible: $root.isPlayerMode">
 <div class="player-toolbar" data-bind="visible: $root.isPlayerMode">
   <div class="pull-right pointer" data-bind="visible: $root.isPlayerMode, click: function(){ hueUtils.exitFullScreen(); $root.isPlayerMode(false); }"><i class="fa fa-times"></i></div>
   <div class="pull-right pointer" data-bind="visible: $root.isPlayerMode, click: function(){ hueUtils.exitFullScreen(); $root.isPlayerMode(false); }"><i class="fa fa-times"></i></div>
-  <img src="${ static('desktop/art/icon_hue_48.png') }" />
+  <img src="${ static('desktop/art/icon_hue_48.png') }" alt="${ _('Hue logo') }" />
   <h4 data-bind="text: collection.label"></h4>
   <h4 data-bind="text: collection.label"></h4>
   <form class="form-search" data-bind="submit: searchBtn">
   <form class="form-search" data-bind="submit: searchBtn">
   <span data-bind="foreach: query.qs">
   <span data-bind="foreach: query.qs">

+ 6 - 6
desktop/libs/liboauth/src/liboauth/templates/oauth-login.mako

@@ -150,7 +150,7 @@ from django.utils.translation import ugettext as _
     </ul>
     </ul>
   </div>
   </div>
   <a class="brand nav-tooltip pull-left" href="#">
   <a class="brand nav-tooltip pull-left" href="#">
-    <img src="${ static('desktop/art/hue-logo-mini-white.png') }"
+    <img src="${ static('desktop/art/hue-logo-mini-white.png') }" alt="${ _('Hue logo') }"
        data-orig="${ static('desktop/art/hue-logo-mini-white.png') }"
        data-orig="${ static('desktop/art/hue-logo-mini-white.png') }"
        data-hover="${ static('desktop/art/hue-logo-mini-white-hover.png') }"/>
        data-hover="${ static('desktop/art/hue-logo-mini-white-hover.png') }"/>
   </a>
   </a>
@@ -166,7 +166,7 @@ from django.utils.translation import ugettext as _
       <form method="POST" action="${action}" class="well">
       <form method="POST" action="${action}" class="well">
         ${ csrf_token(request) | n,unicode }
         ${ csrf_token(request) | n,unicode }
         <img id="logo" src="${ static('desktop/art/hue-login-logo.png') }" data-orig="${ static('desktop/art/hue-login-logo.png') }"
         <img id="logo" src="${ static('desktop/art/hue-login-logo.png') }" data-orig="${ static('desktop/art/hue-login-logo.png') }"
-             data-hover="${ static('desktop/art/hue-login-logo-skew.png') }"/>
+             data-hover="${ static('desktop/art/hue-login-logo-skew.png') }" alt="${ _('Hue logo') }"/>
 
 
         %if login_errors:
         %if login_errors:
             <div class="alert alert-error" style="text-align: center">
             <div class="alert alert-error" style="text-align: center">
@@ -189,25 +189,25 @@ from django.utils.translation import ugettext as _
             <div id="buttons_group" class="buttons-group">
             <div id="buttons_group" class="buttons-group">
                 %if socialGoogle:
                 %if socialGoogle:
                     <span class="btn btn-large btn-primary google">
                     <span class="btn btn-large btn-primary google">
-                      <img src="${ static('liboauth/art/icon-gplus.png') }">
+                      <img src="${ static('liboauth/art/icon-gplus.png') }" alt="${ _('Google icon') }">
                       <span>Google</span>
                       <span>Google</span>
                     </span>
                     </span>
                 %endif
                 %endif
                 %if socialFacebook:
                 %if socialFacebook:
                     <span class="btn btn-large btn-primary facebook">
                     <span class="btn btn-large btn-primary facebook">
-                      <img src="${ static('liboauth/art/icon-fb.png') }">
+                      <img src="${ static('liboauth/art/icon-fb.png') }" alt="${ _('Facebook icon') }">
                       <span>Facebook</span>
                       <span>Facebook</span>
                     </span>
                     </span>
                 %endif
                 %endif
                 %if socialLinkedin:
                 %if socialLinkedin:
                     <span class="btn btn-large btn-primary linkedin">
                     <span class="btn btn-large btn-primary linkedin">
-                      <img src="${ static('liboauth/art/icon-linkedin.png') }">
+                      <img src="${ static('liboauth/art/icon-linkedin.png') }" alt="${ _('Linkedin icon') }">
                       <span>Linkedin</span>
                       <span>Linkedin</span>
                     </span>
                     </span>
                 %endif
                 %endif
                 %if socialTwitter:
                 %if socialTwitter:
                     <span class="btn btn-large btn-primary twitter">
                     <span class="btn btn-large btn-primary twitter">
-                      <img src="${ static('liboauth/art/icon-twitter.png') }">
+                      <img src="${ static('liboauth/art/icon-twitter.png') }" alt="${ _('Twitter icon') }">
                       <span>Twitter</span>
                       <span>Twitter</span>
                     </span>
                     </span>
                 %endif
                 %endif

+ 11 - 11
desktop/libs/notebook/src/notebook/templates/editor_components.mako

@@ -206,7 +206,7 @@ from notebook.conf import ENABLE_QUERY_BUILDER, ENABLE_QUERY_SCHEDULING, ENABLE_
 </style>
 </style>
 
 
 <div class="print-logo">
 <div class="print-logo">
-  <img class="pull-right" src="${ static('desktop/art/icon_hue_48.png') }" />
+  <img class="pull-right" src="${ static('desktop/art/icon_hue_48.png') }"  alt="${ _('Hue logo') }"/>
 </div>
 </div>
 
 
 <div class="navbar navbar-inverse navbar-fixed-top" data-bind="visible: ! $root.isPlayerMode()">
 <div class="navbar navbar-inverse navbar-fixed-top" data-bind="visible: ! $root.isPlayerMode()">
@@ -295,15 +295,15 @@ from notebook.conf import ENABLE_QUERY_BUILDER, ENABLE_QUERY_SCHEDULING, ENABLE_
             <!-- ko if: editorMode -->
             <!-- ko if: editorMode -->
               <a data-bind="attr: { href: '${ url('notebook:editor') }?type=' + editorType(), title: editorTypeTitle() + '${ _(' Editor') }' }" style="cursor: pointer">
               <a data-bind="attr: { href: '${ url('notebook:editor') }?type=' + editorType(), title: editorTypeTitle() + '${ _(' Editor') }' }" style="cursor: pointer">
               <!-- ko if: editorType() == 'impala' -->
               <!-- ko if: editorType() == 'impala' -->
-                <img src="${ static('impala/art/icon_impala_48.png') }" class="app-icon" />
+                <img src="${ static('impala/art/icon_impala_48.png') }" class="app-icon"  alt="${ _('Impala icon') }"/>
                 Impala
                 Impala
               <!-- /ko -->
               <!-- /ko -->
               <!-- ko if: editorType() == 'rdbms' -->
               <!-- ko if: editorType() == 'rdbms' -->
-                <img src="${ static('rdbms/art/icon_rdbms_48.png') }" class="app-icon" />
+                <img src="${ static('rdbms/art/icon_rdbms_48.png') }" class="app-icon" alt="${ _('DBQuery icon') }" />
                 DB Query
                 DB Query
               <!-- /ko -->
               <!-- /ko -->
               <!-- ko if: editorType() == 'pig' -->
               <!-- ko if: editorType() == 'pig' -->
-                <img src="${ static('pig/art/icon_pig_48.png') }" class="app-icon" />
+                <img src="${ static('pig/art/icon_pig_48.png') }" class="app-icon"  alt="${ _('Pig icon') }"/>
                 Pig
                 Pig
               <!-- /ko -->
               <!-- /ko -->
               <!-- ko if: editorType() == 'java' -->
               <!-- ko if: editorType() == 'java' -->
@@ -311,11 +311,11 @@ from notebook.conf import ENABLE_QUERY_BUILDER, ENABLE_QUERY_SCHEDULING, ENABLE_
                 Java
                 Java
               <!-- /ko -->
               <!-- /ko -->
               <!-- ko if: editorType() == 'spark2' -->
               <!-- ko if: editorType() == 'spark2' -->
-                <img src="${ static('spark/art/icon_spark_48.png') }" class="app-icon" />
+                <img src="${ static('spark/art/icon_spark_48.png') }" class="app-icon" alt="${ _('Spark icon') }" />
                 Spark
                 Spark
               <!-- /ko -->
               <!-- /ko -->
               <!-- ko if: editorType() == 'sqoop1' -->
               <!-- ko if: editorType() == 'sqoop1' -->
-                <img src="${ static('oozie/art/icon_sqoop_48.png') }" class="app-icon" />
+                <img src="${ static('oozie/art/icon_sqoop_48.png') }" class="app-icon" alt="${ _('Sqoop icon') }" />
                 Sqoop 1
                 Sqoop 1
               <!-- /ko -->
               <!-- /ko -->
               <!-- ko if: editorType() == 'distcp' -->
               <!-- ko if: editorType() == 'distcp' -->
@@ -331,11 +331,11 @@ from notebook.conf import ENABLE_QUERY_BUILDER, ENABLE_QUERY_SCHEDULING, ENABLE_
                 MapReduce
                 MapReduce
               <!-- /ko -->
               <!-- /ko -->
               <!-- ko if: editorType() == 'beeswax' || editorType() == 'hive' -->
               <!-- ko if: editorType() == 'beeswax' || editorType() == 'hive' -->
-                <img src="${ static('beeswax/art/icon_beeswax_48.png') }" class="app-icon" />
+                <img src="${ static('beeswax/art/icon_beeswax_48.png') }" class="app-icon" alt="${ _('Hive icon') }" />
                 Hive
                 Hive
               <!-- /ko -->
               <!-- /ko -->
               <!-- ko if: ['impala', 'pig', 'hive', 'beeswax', 'rdbms', 'java', 'spark2', 'sqoop1', 'distcp', 'shell', 'mapreduce'].indexOf(editorType()) == -1 -->
               <!-- ko if: ['impala', 'pig', 'hive', 'beeswax', 'rdbms', 'java', 'spark2', 'sqoop1', 'distcp', 'shell', 'mapreduce'].indexOf(editorType()) == -1 -->
-                <img src="${ static('rdbms/art/icon_rdbms_48.png') }" class="app-icon" />
+                <img src="${ static('rdbms/art/icon_rdbms_48.png') }" class="app-icon" alt="${ _('DBQuery icon') }" />
                 SQL
                 SQL
               <!-- /ko -->
               <!-- /ko -->
               </a>
               </a>
@@ -383,7 +383,7 @@ from notebook.conf import ENABLE_QUERY_BUILDER, ENABLE_QUERY_SCHEDULING, ENABLE_
 
 
  <div class="player-toolbar" data-bind="visible: $root.isPlayerMode() && $root.isFullscreenMode()" style="display: none;">
  <div class="player-toolbar" data-bind="visible: $root.isPlayerMode() && $root.isFullscreenMode()" style="display: none;">
     <div class="pull-right pointer" data-bind="click: function(){ hueUtils.exitFullScreen(); $root.isPlayerMode(false); $root.isFullscreenMode(false);  }"><i class="fa fa-times"></i></div>
     <div class="pull-right pointer" data-bind="click: function(){ hueUtils.exitFullScreen(); $root.isPlayerMode(false); $root.isFullscreenMode(false);  }"><i class="fa fa-times"></i></div>
-    <img src="${ static('desktop/art/icon_hue_48.png') }" />
+    <img src="${ static('desktop/art/icon_hue_48.png') }"  alt="${ _('Hue logo') }"/>
     <!-- ko if: $root.selectedNotebook() -->
     <!-- ko if: $root.selectedNotebook() -->
     <h4 data-bind="text: $root.selectedNotebook().name"></h4>
     <h4 data-bind="text: $root.selectedNotebook().name"></h4>
     <!-- /ko -->
     <!-- /ko -->
@@ -670,7 +670,7 @@ from notebook.conf import ENABLE_QUERY_BUILDER, ENABLE_QUERY_SCHEDULING, ENABLE_
 
 
 <script type="text/html" id="snippetIcon">
 <script type="text/html" id="snippetIcon">
   <!-- ko if: viewSettings().snippetImage -->
   <!-- ko if: viewSettings().snippetImage -->
-  <img class="snippet-icon-image" data-bind="attr: { 'src': viewSettings().snippetImage }">
+  <img class="snippet-icon-image" data-bind="attr: { 'src': viewSettings().snippetImage }" alt="${ _('Snippet icon') }">
   <!-- /ko -->
   <!-- /ko -->
   <!-- ko if: viewSettings().snippetIcon -->
   <!-- ko if: viewSettings().snippetIcon -->
   <i class="fa snippet-icon" data-bind="css: viewSettings().snippetIcon"></i>
   <i class="fa snippet-icon" data-bind="css: viewSettings().snippetIcon"></i>
@@ -1398,7 +1398,7 @@ from notebook.conf import ENABLE_QUERY_BUILDER, ENABLE_QUERY_SCHEDULING, ENABLE_
         <!-- ko if: result.images().length != 0 -->
         <!-- ko if: result.images().length != 0 -->
         <ul class="unstyled results-images" data-bind="foreach: result.images()">
         <ul class="unstyled results-images" data-bind="foreach: result.images()">
           <li>
           <li>
-            <img data-bind="attr: {'src': 'data:image/png;base64,' + $data}" class="margin-bottom-10" />
+            <img data-bind="attr: {'src': 'data:image/png;base64,' + $data}" class="margin-bottom-10"  alt="${ _('Result image') }"/>
           </li>
           </li>
         </ul>
         </ul>
         <!-- /ko -->
         <!-- /ko -->

+ 5 - 5
desktop/libs/notebook/src/notebook/templates/notebooks.mako

@@ -31,19 +31,19 @@ ${ commonheader(_("Notebooks"), "spark", user, request, "60px") | n,unicode }
           <li class="currentApp">
           <li class="currentApp">
               <a href="${ url('notebook:editor') }?type=${ editor_type }" title="${ _('%s Editor') % editor_type.title() }" style="cursor: pointer">
               <a href="${ url('notebook:editor') }?type=${ editor_type }" title="${ _('%s Editor') % editor_type.title() }" style="cursor: pointer">
               % if editor_type == 'impala':
               % if editor_type == 'impala':
-                <img src="${ static('impala/art/icon_impala_48.png') }" class="app-icon" />
+                <img src="${ static('impala/art/icon_impala_48.png') }" class="app-icon" alt="${ _('Impala icon') }" />
                 ${ _('Impala Queries') }
                 ${ _('Impala Queries') }
               % elif editor_type == 'rdbms':
               % elif editor_type == 'rdbms':
-                <img src="${ static('rdbms/art/icon_rdbms_48.png') }" class="app-icon" />
+                <img src="${ static('rdbms/art/icon_rdbms_48.png') }" class="app-icon" alt="${ _('DBQuery icon') }" />
                 ${ _('SQL Queries') }
                 ${ _('SQL Queries') }
               % elif editor_type == 'pig':
               % elif editor_type == 'pig':
-                <img src="${ static('pig/art/icon_pig_48.png') }" class="app-icon" />
+                <img src="${ static('pig/art/icon_pig_48.png') }" class="app-icon" alt="${ _('Pig icon') }" />
                 ${ _('Pig Scripts') }
                 ${ _('Pig Scripts') }
               % elif editor_type in ('beeswax', 'hive'):
               % elif editor_type in ('beeswax', 'hive'):
-                <img src="${ static('beeswax/art/icon_beeswax_48.png') }" class="app-icon" />
+                <img src="${ static('beeswax/art/icon_beeswax_48.png') }" class="app-icon" alt="${ _('Hive icon') }" />
                 ${ _('Hive Queries') }
                 ${ _('Hive Queries') }
               % else:
               % else:
-                <img src="${ static('rdbms/art/icon_rdbms_48.png') }" class="app-icon" />
+                <img src="${ static('rdbms/art/icon_rdbms_48.png') }" class="app-icon" alt="${ _('DBQuery icon') }" />
                 ${ _('Notebooks') }
                 ${ _('Notebooks') }
               % endif
               % endif
               </a>
               </a>