浏览代码

Improve and complete Yii documentation

Thibaut 11 年之前
父节点
当前提交
138ee09fc9

二进制
assets/images/icons.png


二进制
assets/images/icons@2x.png


+ 5 - 0
assets/javascripts/templates/pages/about_tmpl.coffee

@@ -200,5 +200,10 @@ credits = [
     '2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors',
     'MIT',
     'https://raw.github.com/jashkenas/underscore/master/LICENSE'
+  ], [
+    'Yii',
+    '2008-2014 by Yii Software LLC',
+    'BSD',
+    'https://raw.github.com/yiisoft/yii/master/LICENSE'
   ]
 ]

+ 4 - 1
assets/javascripts/templates/pages/news_tmpl.coffee

@@ -24,7 +24,10 @@ newsItem = (date, news) ->
   result
 
 app.news = [
-  [ 1394236800000, # March 8, 2014
+  [ 1394928000000, # March 16, 2013
+    """ New <a href="/yii/">Yii</a> documentation """,
+  ], [
+    1394236800000, # March 8, 2014
     """ Added path bar. """,
   ], [
     1393027200000, # February 22, 2014

+ 15 - 0
assets/javascripts/views/pages/yii.coffee

@@ -0,0 +1,15 @@
+#= require views/pages/base
+
+class app.views.YiiPage extends app.views.BasePage
+  @events:
+    click: 'onClick'
+
+  onClick: (event) ->
+    return unless event.target.classList.contains 'show'
+    $.stopEvent(event)
+
+    source = $ '.code', event.target.parentNode.parentNode
+    isShown = source.style.display is 'block'
+
+    source.style.display = if isShown then 'none' else 'block'
+    event.target.textContent = if isShown then 'show' else 'hide'

+ 2 - 1
assets/stylesheets/application.css.scss

@@ -48,4 +48,5 @@
         'pages/rfc',
         'pages/sphinx',
         'pages/underscore',
-        'pages/yard';
+        'pages/yard',
+        'pages/yii';

+ 1 - 0
assets/stylesheets/global/_icons.scss

@@ -50,3 +50,4 @@
 ._icon-moment:before        { background-position: -1rem -7rem; }
 ._icon-c:before             { background-position: -2rem -7rem; }
 %icon-path                  { background-position: -3rem -7rem; }
+._icon-yii:before           { background-position: -4rem -7rem; }

+ 24 - 0
assets/stylesheets/pages/_yii.scss

@@ -0,0 +1,24 @@
+._yii {
+  h2 { @extend %block-heading; }
+  > h3 { @extend %block-label, %label-blue; }
+
+  .paramNameCol { font-weight: bold; }
+  .signature2 { margin: .4em 0; }
+  .sourceCode { margin-bottom: 1em; }
+  .sourceCode > .code { display: none; }
+
+  .SeeAlso {
+    > h4 {
+      margin-bottom: 1em;
+      font-size: inherit;
+    }
+
+    > ul { margin-top: 0; }
+  }
+
+  .summaryTable td:first-child[rowspan] {
+    border-right: 1px solid #e5e5e5;
+
+    + td { border-left: 0; }
+  }
+}

+ 18 - 33
lib/docs/filters/yii/clean_html.rb

@@ -2,47 +2,32 @@ module Docs
   class Yii
     class CleanHtmlFilter < Filter
       def call
+        at_css('h1').content = 'Yii PHP Framework' if root_page?
 
-        #remove irrelevant content
-        css('div').each do |node| 
-          if node['class'] == "layout-main-header"
-            node.remove
-          elsif node['class'] == "layout-main-submenu"
-            node.remove
-          elsif node['class'] == "layout-main-shortcuts"
-            node.remove
-          elsif node['class'] == "layout-main-footer"
-            node.remove
-          elsif node['class'] == "grid_3 alpha"
-            node.remove
-          elsif node['class'] == "comments"
-            node.remove
-          elsif node['class'] == "api-suggest clearfix"
-            node.remove
-          elsif node['id'] == "comments"
-            node.remove
-          elsif node['id'] == "nav"
-            node.remove
-          else
-            end
-          end
+        css('.api-suggest', '.google-ad', '.g-plusone', '#nav', '#comments').remove
 
-        # Put code blocks in <pre> tags
-        css('.code').each do |node|
+        css('.summary > p > .toggle').each do |node|
+          node.parent.remove
+        end
+
+        css('.signature', '.signature2').each do |node|
           node.name = 'pre'
+          node.inner_html = node.inner_html.strip
+        end
+
+        css('div.detailHeader').each do |node|
+          node.name = 'h3'
         end
 
-        #remove Hide inherited methods / properties and show links
-        css('a').each do |node|
-          if node['class'] == 'toggle'
-            node.remove
-          elsif node['class'] == 'show'
-            node.remove
-          end
+        css('.sourceCode > .code > code').each do |node|
+          parent = node.parent
+          parent.name = 'pre'
+          node.remove
+          parent.inner_html = node.first_element_child.inner_html.strip
         end
 
         doc
       end
     end
   end
-end
+end

+ 7 - 16
lib/docs/filters/yii/entries.rb

@@ -1,30 +1,21 @@
 module Docs
   class Yii
     class EntriesFilter < Docs::EntriesFilter
-
       def get_name
-        #class names exist in the <h1> content.
-        name = at_css('h1').content.strip 
+        at_css('h1').content.strip
       end
 
       def get_type
-        #need to get the table with a class of summaryTable. Then we need the content of the first td in the first tr.
-        type = css('table.summaryTable td')[0].content
-        type
+        css('.summaryTable td').first.content
       end
 
       def additional_entries
-          css('table.summaryTable tr[id]').inject [] do |entries,node|
-          #need to ignore inherited methods and properties
-            if (node['class'] != 'inherited' and node.parent().parent()['class'] == "summary docMethod")
-              #name should be Class.method() id will take you to the link in the summary block.
-              name = slug + "." + node['id'] + "()"
-              entries << [name, node['id']]
-          end
-             entries
+        css('.detailHeader').inject [] do |entries, node|
+          name = node.child.content.strip
+          name.prepend self.name + (node.next_element.content.include?('public static') ? '::' : '->')
+          entries << [name, node['id']]
         end
       end
-
     end
   end
-end
+end

+ 5 - 2
lib/docs/scrapers/yii.rb

@@ -1,12 +1,15 @@
 module Docs
   class Yii < UrlScraper
-    self.name = 'Yii'
-    self.slug = 'yii'
     self.type = 'yii'
     self.version = '1.1.14'
     self.base_url = 'http://www.yiiframework.com/doc/api/1.1/'
 
     html_filters.push 'yii/clean_html', 'yii/entries'
 
+    options[:container] = '.grid_9'
+    options[:attribution] = <<-HTML
+      &copy; 2008&ndash;2014 by Yii Software LLC<br>
+      Licensed under the three clause BSD license.
+    HTML
   end
 end

二进制
public/icons/docs/yii/16.png


二进制
public/icons/docs/yii/16@2x.png


+ 1 - 0
public/icons/docs/yii/SOURCE

@@ -0,0 +1 @@
+http://www.yiiframework.com/logo/