Diff
Added: branches/wf4ever/app/controllers/folders_controller.rb (0 => 3265)
--- branches/wf4ever/app/controllers/folders_controller.rb (rev 0)
+++ branches/wf4ever/app/controllers/folders_controller.rb 2012-12-14 16:56:06 UTC (rev 3265)
@@ -0,0 +1,40 @@
+require 'wf4ever/rosrs_client'
+
+class FoldersController < ApplicationController
+
+ BASE_URI = "http://sandbox.wf4ever-project.org/rodl/ROs/"
+ API_KEY = "32801fc0-1df1-4e34-b"
+
+ def folder
+ @structure = {}
+ if params[:ro_uri].blank?
+ render :text => "Please supply an RO URI."
+ else
+ @session = ROSRS::Session.new(BASE_URI, API_KEY)
+ @ro = ROSRS::ResearchObject.new(@session, params[:ro_uri])
+ @structure = {:label => @ro.root_folder.name,
+ :labelStyle => "root_folder",
+ :uri => @ro.root_folder.uri}
+ @resources = {}
+ (@ro.resources + @ro.folders).each do |res|
+ type = 'folder'
+ leaf = false
+ unless res.is_a?(ROSRS::Folder)
+ type = 'resource'
+ leaf = true
+ end
+ @resources[res.uri] = {:labelStyle => type, :uri => res.uri, :isLeaf => leaf}
+ end
+ end
+ # Renders folder.html.erb
+ end
+
+ # Get a folder's contents when it is expanded in the UI
+ def folder_contents
+ @session = ROSRS::Session.new(BASE_URI, API_KEY)
+ @ro = ROSRS::ResearchObject.new(@session, params[:ro_uri])
+ folder = ROSRS::Folder.new(@ro, params[:folder_uri])
+ @contents = folder.contents.map {|fe| [fe.resource.uri, fe.name]}
+ # Renders folder_contents.js.erb
+ end
+
Added: branches/wf4ever/app/views/folders/_header.html.erb (0 => 3265)
--- branches/wf4ever/app/views/folders/_header.html.erb (rev 0)
+++ branches/wf4ever/app/views/folders/_header.html.erb 2012-12-14 16:56:06 UTC (rev 3265)
@@ -0,0 +1 @@
+<h1>RO Mockup - Folder view</h1>
\ No newline at end of file
Added: branches/wf4ever/app/views/folders/_navigation.html.erb (0 => 3265)
--- branches/wf4ever/app/views/folders/_navigation.html.erb (rev 0)
+++ branches/wf4ever/app/views/folders/_navigation.html.erb 2012-12-14 16:56:06 UTC (rev 3265)
@@ -0,0 +1,59 @@
+<div id="nav-tabs" class="yui-navset">
+ <ul class="yui-nav">
+ <li class="selected"><a href="" View</em></a></li>
+ <!---<li><a href=""
+ </ul>
+ <div class="yui-content">
+ <div>
+ <!---<div id="tree-controls">
+ <a id="expand_all" href="" All</a> | <a id="collapse_all" href="" All</a>
+ </div> --->
+ <div id="tree"></div>
+ </div>
+ <!---<div id="relations">
+ <img src="" style="width:200px; height:200px"/>
+ </div>--->
+ </div>
+</div>
+
+<script type="text/_javascript_">
+ var tree = new YAHOO.widget.TreeView("tree", <%= @structure.to_json.html_safe -%> );
+ var resourceData = <%= @resources.to_json.html_safe -%>; // Hash of RO resource data
+
+ // Handle users clicking on nodes
+ tree.subscribe("labelClick", function(node) {
+ if(node.data.uri != null) {
+ $('#open-url').text(node.data.uri);
+ }
+ });
+
+ tree.setDynamicLoad(loadNodeData); //Trigger request when expanding a node
+ tree.render();
+
+ function loadNodeData(node, fnLoadComplete) {
+ var nodeLabel = encodeURI(node.label);
+ var sUrl = "<%= get_folder_url -%>?folder_uri=" + node.data.uri + "&ro_uri=" + "<%= @ro.uri -%>";
+ var callback = {
+ success: function(oResponse) {
+ var oResults = eval("(" + oResponse.responseText + ")");
+ for(var i = 0; i < oResults.length; i++) {
+ var newNode = new YAHOO.widget.TextNode(resourceData[oResults[i][0]], node, false);
+ newNode.label = oResults[i][1];
+ }
+ tree.render();
+ oResponse.argument.fnLoadComplete();
+ },
+ failure: function(oResponse) {
+ oResponse.argument.fnLoadComplete();
+ },
+ argument: {
+ "node": node,
+ "fnLoadComplete": fnLoadComplete
+ },
+ timeout: 7000
+ };
+ YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);
+ }
+
+
+</script>
Added: branches/wf4ever/app/views/folders/folder.html.erb (0 => 3265)
--- branches/wf4ever/app/views/folders/folder.html.erb (rev 0)
+++ branches/wf4ever/app/views/folders/folder.html.erb 2012-12-14 16:56:06 UTC (rev 3265)
@@ -0,0 +1,28 @@
+<div class="header">
+ <%= render "folders/header" %>
+</div>
+
+<div class="content">
+
+ <div class="navigation">
+ <%= render "folders/navigation" %>
+ </div>
+ <div class="main">
+ <div id="demo" class="yui-navset">
+ <div class="yui-content">
+ <h3><-- Click on a folder to expand it and see its contents.</h3>
+ <%= form_tag mockups_folder_url do %>
+ <p>
+ <strong>RO URI</strong>:<br/>
+ <%= text_field_tag(:ro_uri, params[:ro_uri], :size => 100) %> <%= submit_tag("Go") %>
+ </p>
+ <% end %>
+ <p>
+ <strong>Selected resource URI:</strong> <span id="open-url">-</span>
+ </p>
+ </div>
+ </div>
+ </div>
+
+</div>
+
Added: branches/wf4ever/app/views/folders/folder_contents.js.erb (0 => 3265)
--- branches/wf4ever/app/views/folders/folder_contents.js.erb (rev 0)
+++ branches/wf4ever/app/views/folders/folder_contents.js.erb 2012-12-14 16:56:06 UTC (rev 3265)
@@ -0,0 +1 @@
+<%= @contents.to_json.html_safe -%>
Added: branches/wf4ever/public/images/resource.png (0 => 3265)
--- branches/wf4ever/public/images/resource.png (rev 0)
+++ branches/wf4ever/public/images/resource.png 2012-12-14 16:56:06 UTC (rev 3265)
@@ -0,0 +1,12 @@
+\x89PNG
+
+
+IHDR \xF3\xFFa pHYs \x9A\x9C gAMA \xD8\xEB\xF5\xAA cHRM n' s\xAF \xF67 \x80\xA5 p# \xDD 0>