diff options
| -rw-r--r-- | app/controllers/admin_controller.rb | 7 | ||||
| -rw-r--r-- | app/views/admin/index.html.erb | 37 | ||||
| -rw-r--r-- | public/javascripts/admin_interface.js | 17 | ||||
| -rw-r--r-- | public/stylesheets/admin.css | 4 |
4 files changed, 62 insertions, 3 deletions
diff --git a/app/controllers/admin_controller.rb b/app/controllers/admin_controller.rb index cdfe564..7c1375a 100644 --- a/app/controllers/admin_controller.rb +++ b/app/controllers/admin_controller.rb | |||
| @@ -17,6 +17,13 @@ class AdminController < ApplicationController | |||
| 17 | "updated_at < ? AND updated_at > ? AND parent_id IS NOT NULL", Time.now, Time.now-14.days | 17 | "updated_at < ? AND updated_at > ? AND parent_id IS NOT NULL", Time.now, Time.now-14.days |
| 18 | ] | 18 | ] |
| 19 | ) | 19 | ) |
| 20 | |||
| 21 | all_nodes = Node.root.self_and_descendants | ||
| 22 | @sitemap_depth = {} | ||
| 23 | Node.each_with_level(all_nodes) do |node, level| | ||
| 24 | @sitemap_depth[node.id] = level | ||
| 25 | end | ||
| 26 | @sitemap = all_nodes.to_a.sort! { |node1,node2| node1.lft <=> node2.lft }.delete_if { |node| node.update? } | ||
| 20 | end | 27 | end |
| 21 | 28 | ||
| 22 | def search | 29 | def search |
diff --git a/app/views/admin/index.html.erb b/app/views/admin/index.html.erb index 526aa88..8c8271f 100644 --- a/app/views/admin/index.html.erb +++ b/app/views/admin/index.html.erb | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | <p id="overview_toggle"> | 1 | <p id="overview_toggle"> |
| 2 | <a href="#" id="recent_changes_toggle" class="button">recent changes</a> | 2 | <a href="#" id="recent_changes_toggle" class="button">recent changes</a> |
| 3 | <a href="#" id="current_drafts_toggle" class="button">current drafts</a> | 3 | <a href="#" id="current_drafts_toggle" class="button">current drafts</a> |
| 4 | <a href="#" id="admin_sitemap_toggle" class="button">site map</a> | ||
| 4 | </p> | 5 | </p> |
| 5 | 6 | ||
| 6 | <div id="recent_changes_table"> | 7 | <div id="recent_changes_table"> |
| @@ -64,9 +65,41 @@ | |||
| 64 | <%= node.lock_owner.login if node.lock_owner %> | 65 | <%= node.lock_owner.login if node.lock_owner %> |
| 65 | </td> | 66 | </td> |
| 66 | <td> | 67 | <td> |
| 67 | <%= node.draft ? node.draft.revision : node.head.revision %> | 68 | <%= node.draft ? node.draft.revision : ( node.head ? node.head.revision : "EMPTY" ) %> |
| 68 | </td> | 69 | </td> |
| 69 | </tr> | 70 | </tr> |
| 70 | <% end %> | 71 | <% end %> |
| 71 | </table> | 72 | </table> |
| 72 | </div> \ No newline at end of file | 73 | </div> |
| 74 | |||
| 75 | <div id="admin_sitemap_table"> | ||
| 76 | |||
| 77 | <h1>Sitemap</h1> | ||
| 78 | |||
| 79 | <table class="node_table"> | ||
| 80 | <tr class="header"> | ||
| 81 | <th class="node_id">ID</th> | ||
| 82 | <th class="title">Title</th> | ||
| 83 | <th class="actions">Actions</th> | ||
| 84 | <th class="editor">Locked by</th> | ||
| 85 | </tr> | ||
| 86 | <% @sitemap.each do |node| %> | ||
| 87 | <% if !node.nil? %> | ||
| 88 | <tr class="<%= cycle("even", "odd") %>"> | ||
| 89 | <td class="node_id" style="padding-left: <%= @sitemap_depth[node.id] * 30 %>px;"><%= node.id %></td> | ||
| 90 | <td class="title" style="padding-left: <%= @sitemap_depth[node.id] * 30 %>px;"> | ||
| 91 | <h4><%= link_to title_for_node(node), node_path(node) %></h4> | ||
| 92 | <p><%= link_to_path(node.unique_name, node.unique_name) %></p> | ||
| 93 | </td> | ||
| 94 | <td class="actions"> | ||
| 95 | <%= link_to 'show', node_path(node) %> | ||
| 96 | <%= link_to 'Revisions', node_revisions_path(node) %> | ||
| 97 | </td> | ||
| 98 | <td> | ||
| 99 | <%= node.lock_owner.login if node.lock_owner %> | ||
| 100 | </td> | ||
| 101 | </tr> | ||
| 102 | <% end %> | ||
| 103 | <% end %> | ||
| 104 | </table> | ||
| 105 | </div> | ||
diff --git a/public/javascripts/admin_interface.js b/public/javascripts/admin_interface.js index f8148e2..ea3ab3d 100644 --- a/public/javascripts/admin_interface.js +++ b/public/javascripts/admin_interface.js | |||
| @@ -16,7 +16,7 @@ $(document).ready(function () { | |||
| 16 | theme_advanced_buttons1 : "bold, italic, underline, bullist, numlist, link, unlink, formatselect, code", | 16 | theme_advanced_buttons1 : "bold, italic, underline, bullist, numlist, link, unlink, formatselect, code", |
| 17 | theme_advanced_buttons2 : "", | 17 | theme_advanced_buttons2 : "", |
| 18 | theme_advanced_buttons3 : "", | 18 | theme_advanced_buttons3 : "", |
| 19 | extended_valid_elements : "aggregate[tags|limit|order_by|order_direction|partial]", | 19 | extended_valid_elements : "aggregate[tags|limit|order_by|order_direction|partial|conditions]", |
| 20 | relative_urls : false, | 20 | relative_urls : false, |
| 21 | entity_encoding : "raw", | 21 | entity_encoding : "raw", |
| 22 | oninit : cccms.setup_autosave() | 22 | oninit : cccms.setup_autosave() |
| @@ -44,21 +44,36 @@ $(document).ready(function () { | |||
| 44 | 44 | ||
| 45 | if ($('#recent_changes_toggle').length != 0) { | 45 | if ($('#recent_changes_toggle').length != 0) { |
| 46 | $('#current_drafts_table').hide(); | 46 | $('#current_drafts_table').hide(); |
| 47 | $('#admin_sitemap_table').hide(); | ||
| 47 | $('#recent_changes_toggle').attr("class", "selected"); | 48 | $('#recent_changes_toggle').attr("class", "selected"); |
| 48 | 49 | ||
| 49 | $('#recent_changes_toggle').bind("click", function(){ | 50 | $('#recent_changes_toggle').bind("click", function(){ |
| 50 | $('#recent_changes_toggle').attr("class", "selected"); | 51 | $('#recent_changes_toggle').attr("class", "selected"); |
| 51 | $('#current_drafts_toggle').attr("class", "unselected"); | 52 | $('#current_drafts_toggle').attr("class", "unselected"); |
| 53 | $('#admin_sitemap_toggle').attr("class", "unselected"); | ||
| 52 | $('#recent_changes_table').show(); | 54 | $('#recent_changes_table').show(); |
| 53 | $('#current_drafts_table').hide(); | 55 | $('#current_drafts_table').hide(); |
| 56 | $('#admin_sitemap_table').hide(); | ||
| 54 | return false; | 57 | return false; |
| 55 | }); | 58 | }); |
| 56 | 59 | ||
| 57 | $('#current_drafts_toggle').bind("click", function(){ | 60 | $('#current_drafts_toggle').bind("click", function(){ |
| 58 | $('#recent_changes_toggle').attr("class", "unselected"); | 61 | $('#recent_changes_toggle').attr("class", "unselected"); |
| 59 | $('#current_drafts_toggle').attr("class", "selected"); | 62 | $('#current_drafts_toggle').attr("class", "selected"); |
| 63 | $('#admin_sitemap_toggle').attr("class", "unselected"); | ||
| 60 | $('#current_drafts_table').show(); | 64 | $('#current_drafts_table').show(); |
| 61 | $('#recent_changes_table').hide(); | 65 | $('#recent_changes_table').hide(); |
| 66 | $('#admin_sitemap_table').hide(); | ||
| 67 | return false; | ||
| 68 | }); | ||
| 69 | |||
| 70 | $('#admin_sitemap_toggle').bind("click", function(){ | ||
| 71 | $('#recent_changes_toggle').attr("class", "unselected"); | ||
| 72 | $('#current_drafts_toggle').attr("class", "unselected"); | ||
| 73 | $('#admin_sitemap_toggle').attr("class", "selected"); | ||
| 74 | $('#current_drafts_table').hide(); | ||
| 75 | $('#recent_changes_table').hide(); | ||
| 76 | $('#admin_sitemap_table').show(); | ||
| 62 | return false; | 77 | return false; |
| 63 | }); | 78 | }); |
| 64 | } | 79 | } |
diff --git a/public/stylesheets/admin.css b/public/stylesheets/admin.css index f95fa18..fbb8a3f 100644 --- a/public/stylesheets/admin.css +++ b/public/stylesheets/admin.css | |||
| @@ -170,6 +170,10 @@ table.node_table .actions { | |||
| 170 | text-transform: lowercase; | 170 | text-transform: lowercase; |
| 171 | } | 171 | } |
| 172 | 172 | ||
| 173 | #admin_sitemap_table .node_id:before { | ||
| 174 | content: "• "; | ||
| 175 | } | ||
| 176 | |||
| 173 | /* Revisions */ | 177 | /* Revisions */ |
| 174 | 178 | ||
| 175 | table#revisions { | 179 | table#revisions { |
