Browse Source

Add links to install/update/uninstall all docs

Thibaut 11 years ago
parent
commit
95f81055ad

+ 8 - 1
assets/javascripts/templates/pages/offline_tmpl.coffee

@@ -1,5 +1,12 @@
 app.templates.offlinePage = (docs) -> """
   <h1 class="_lined-heading">Offline Documentation</h1>
+
+  <div class="_docs-tools">
+    <div class="_docs-links">
+      <a class="_docs-link" data-action-all="install">Install all</a><a class="_docs-link" data-action-all="update">Update all</a><a class="_docs-link" data-action-all="uninstall">Uninstall all</a>
+    </div>
+  </div>
+
   <table class="_docs">
     <tr>
       <th>Documentation</th>
@@ -53,7 +60,7 @@ app.templates.offlineDoc = (doc, status) ->
   else if outdated
     """
       <td>Outdated</td>
-      <td><a data-action="install">Update</a> - <a data-action="uninstall">Uninstall</a></td>
+      <td><a data-action="update">Update</a> - <a data-action="uninstall">Uninstall</a></td>
     """
   else
     """

+ 11 - 0
assets/javascripts/views/content/offline_page.coffee

@@ -18,6 +18,7 @@ class app.views.OfflinePage extends app.View
         html = ''
         html += @renderDoc(doc, statuses[doc.slug]) for doc in app.docs.all()
         @html @tmpl('offlinePage', html)
+        @refreshLinks()
       return
     return
 
@@ -27,6 +28,11 @@ class app.views.OfflinePage extends app.View
   getTitle: ->
     'Offline'
 
+  refreshLinks: ->
+    for action in ['install', 'update', 'uninstall']
+      @find("a[data-action-all='#{action}']").classList[if @find("a[data-action='#{action}']") then 'add' else 'remove']('_show')
+    return
+
   docByEl: (el) ->
     el = el.parentNode until slug = el.getAttribute('data-slug')
     app.docs.findBy('slug', slug)
@@ -43,14 +49,19 @@ class app.views.OfflinePage extends app.View
     if action = target.getAttribute('data-action')
       $.stopEvent(event)
       doc = @docByEl(target)
+      action = 'install' if action is 'update'
       doc[action](@onInstallSuccess.bind(@, doc), @onInstallError.bind(@, doc))
       target.parentNode.innerHTML = "#{target.textContent.replace(/e$/, '')}ing…"
+    else if action = target.getAttribute('data-action-all')
+      $.stopEvent(event)
+      link.click() for link in @findAll("a[data-action='#{action}']")
     return
 
   onInstallSuccess: (doc) ->
     doc.getInstallStatus (status) =>
       @docEl(doc).outerHTML = @renderDoc(doc, status)
       $.highlight @docEl(doc), className: '_highlight'
+      @refreshLinks()
     return
 
   onInstallError: (doc) ->

+ 18 - 0
assets/stylesheets/components/_content.scss

@@ -269,6 +269,24 @@
 
 ._docs-size { text-align: right; }
 
+._docs-tools { overflow: hidden; }
+
+._docs-links {
+  float: right;
+  padding: .375rem .125rem;
+  @extend %box;
+}
+
+._docs-link {
+  display: none;
+  vertical-align: top;
+  padding: 0 .75rem;
+  cursor: pointer;
+
+  &._show { display: inline-block; }
+  &._show ~ &._show { border-left: 1px solid $boxBorder; }
+}
+
 //
 // News
 //