permissions not fully fully functional yet, don't push to staging. editing of maps as cards in place. raw data available as json at maps/:id/json, or topics/:id/json, or synapses/:id/json
This commit is contained in:
parent
e6029e59c8
commit
1633b61637
16 changed files with 219 additions and 38 deletions
BIN
app/assets/images/settings.png
Normal file
BIN
app/assets/images/settings.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3 KiB |
|
@ -83,7 +83,40 @@ var labelType, useGradients, nativeTextSupport, animate, json, Mconsole = null,
|
|||
},800);
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
||||
// controls the sliding hover of the settings for cards
|
||||
var sliding2 = false;
|
||||
var lT2;
|
||||
$(".permActivator").hover(
|
||||
function () {
|
||||
clearTimeout(lT2);
|
||||
if (! sliding2) {
|
||||
sliding2 = true;
|
||||
$(this).animate({
|
||||
width: '203px',
|
||||
height: '37px'
|
||||
}, 300, function() {
|
||||
sliding2 = false;
|
||||
});
|
||||
}
|
||||
},
|
||||
function () {
|
||||
that = this;
|
||||
lT2 = setTimeout(function() {
|
||||
if (! sliding2) {
|
||||
sliding2 = true;
|
||||
$(that).animate({
|
||||
height: '16px',
|
||||
width: '16px'
|
||||
}, 300, function() {
|
||||
sliding2 = false;
|
||||
});
|
||||
}
|
||||
},800);
|
||||
}
|
||||
);
|
||||
|
||||
// this is to save the layout of maps when you're on a map page
|
||||
$("#saveLayout").click(function(event) {
|
||||
event.preventDefault();
|
||||
|
|
|
@ -3,4 +3,4 @@
|
|||
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
|
||||
|
||||
jQuery ->
|
||||
$('.authenticated .best_in_place').best_in_place()
|
||||
$('.authenticated div.permission.canEdit .best_in_place').best_in_place()
|
|
@ -135,3 +135,44 @@ margin-right: -8px;
|
|||
.CardOnGraph .go-link {
|
||||
float:left;
|
||||
}
|
||||
|
||||
.cardSettings {
|
||||
position: absolute;
|
||||
left: 12px;
|
||||
top: 13px;
|
||||
}
|
||||
|
||||
.editSettings {
|
||||
background: #ddd;
|
||||
border-radius: 10px;
|
||||
padding: 5px 0 5px 5px;
|
||||
position: relative;
|
||||
left: 16px;
|
||||
width: 172px;
|
||||
opacity: 0.98;
|
||||
box-shadow: 4px 4px 5px #888888;
|
||||
border: 1px solid #AAA;
|
||||
}
|
||||
|
||||
.editSettings span {
|
||||
float:left;
|
||||
}
|
||||
|
||||
.permActivator {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background: url('settings.png') no-repeat 0 0;
|
||||
overflow:hidden;
|
||||
}
|
||||
|
||||
.mapPerm {
|
||||
background: #fff;
|
||||
padding: 0 4px 4px 4px;
|
||||
border-radius: 15px;
|
||||
border: 1px solid #AAA;
|
||||
position: absolute;
|
||||
left: -7px;
|
||||
top: 18px;
|
||||
width:16px;
|
||||
text-align:center;
|
||||
}
|
||||
|
|
|
@ -6,9 +6,12 @@ class MainController < ApplicationController
|
|||
respond_to :html, :js, :json
|
||||
|
||||
def home
|
||||
@topics = Topic.order("created_at DESC").limit(3).visibleToUser(@current, nil)
|
||||
@synapses = Synapse.order("created_at DESC").limit(3).visibleToUser(@current, nil)
|
||||
@maps = Map.order("created_at DESC").limit(3).visibleToUser(@current, nil)
|
||||
@topics = Topic.visibleToUser(@current, nil).sort! { |a,b| b.created_at <=> a.created_at }
|
||||
@topics = @topics.slice(0,3)
|
||||
@synapses = Synapse.visibleToUser(@current, nil).sort! { |a,b| b.created_at <=> a.created_at }
|
||||
@synapses = @synapses.slice(0,3)
|
||||
@maps = Map.visibleToUser(@current, nil).sort! { |a,b| b.created_at <=> a.created_at }
|
||||
@maps = @maps.slice(0,3)
|
||||
|
||||
respond_with(@topics, @synapses, @maps)
|
||||
end
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
class MapsController < ApplicationController
|
||||
|
||||
before_filter :require_user, only: [:new, :create, :edit, :update, :savelayout]
|
||||
before_filter :require_user, only: [:new, :create, :edit, :update, :savelayout, :destroy]
|
||||
|
||||
respond_to :html, :js, :json
|
||||
|
||||
|
@ -48,6 +48,21 @@ class MapsController < ApplicationController
|
|||
end
|
||||
end
|
||||
|
||||
# GET maps/:id/json
|
||||
def json
|
||||
|
||||
@current = current_user
|
||||
@map = Map.find(params[:id]).authorize_to_show(@current)
|
||||
|
||||
if not @map
|
||||
redirect_to root_url and return
|
||||
end
|
||||
|
||||
respond_to do |format|
|
||||
format.json { render :json => @map.self_as_json(@current) }
|
||||
end
|
||||
end
|
||||
|
||||
# POST maps
|
||||
def create
|
||||
|
||||
|
@ -116,13 +131,19 @@ class MapsController < ApplicationController
|
|||
|
||||
# PUT maps/:id
|
||||
def update
|
||||
@map = Map.find(params[:id])
|
||||
@current = current_user
|
||||
@map = Map.find(params[:id]).authorize_to_edit(@current)
|
||||
|
||||
@map.attributes = params[:map]
|
||||
@map.save
|
||||
|
||||
respond_with(@user, location: map_path(@map)) do |format|
|
||||
if @map
|
||||
if params[:map]
|
||||
@map.name = params[:map][:name] if params[:map][:name]
|
||||
@map.desc = params[:map][:desc] if params[:map][:desc]
|
||||
@map.permission = params[:map][:permission] if params[:map][:permission]
|
||||
end
|
||||
@map.save
|
||||
end
|
||||
|
||||
respond_with @map
|
||||
end
|
||||
|
||||
# PUT maps/:id/savelayout
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
class SynapsesController < ApplicationController
|
||||
include TopicsHelper
|
||||
|
||||
before_filter :require_user, only: [:new, :create, :edit, :update]
|
||||
before_filter :require_user, only: [:new, :create, :edit, :update, :destroy]
|
||||
|
||||
respond_to :html, :js, :json
|
||||
|
||||
|
@ -54,6 +54,20 @@ class SynapsesController < ApplicationController
|
|||
end
|
||||
end
|
||||
|
||||
# GET synapses/:id/json
|
||||
def json
|
||||
@current = current_user
|
||||
@synapse = Synapse.find(params[:id]).authorize_to_show(@current)
|
||||
|
||||
if not @synapse
|
||||
redirect_to root_url and return
|
||||
end
|
||||
|
||||
respond_to do |format|
|
||||
format.json { render :json => @synapse.selfplusnodes_as_json }
|
||||
end
|
||||
end
|
||||
|
||||
# POST synapses
|
||||
def create
|
||||
|
||||
|
@ -69,12 +83,18 @@ class SynapsesController < ApplicationController
|
|||
@synapse.save
|
||||
|
||||
if params[:synapse][:map]
|
||||
@mapping = Mapping.new()
|
||||
@map = Map.find(params[:synapse][:map])
|
||||
|
||||
@mapping = Mapping.new()
|
||||
@mapping.category = "Synapse"
|
||||
@mapping.user = @user
|
||||
@mapping.map = Map.find(params[:synapse][:map])
|
||||
@mapping.map = @map
|
||||
@mapping.synapse = @synapse
|
||||
@mapping.save
|
||||
|
||||
# set the permission of the synapse to whatever the permission of the map is
|
||||
@synapse.permission = @map.permission
|
||||
@synapse.save
|
||||
end
|
||||
|
||||
respond_to do |format|
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
class TopicsController < ApplicationController
|
||||
before_filter :require_user, only: [:new, :create, :edit, :update]
|
||||
before_filter :require_user, only: [:new, :create, :edit, :update, :destroy]
|
||||
|
||||
respond_to :html, :js, :json
|
||||
|
||||
|
@ -45,6 +45,20 @@ class TopicsController < ApplicationController
|
|||
format.json { respond_with(@relatives) }
|
||||
end
|
||||
end
|
||||
|
||||
# GET topics/:id/json
|
||||
def json
|
||||
@current = current_user
|
||||
@topic = Topic.find(params[:id]).authorize_to_show(@current)
|
||||
|
||||
if not @topic
|
||||
redirect_to root_url and return
|
||||
end
|
||||
|
||||
respond_to do |format|
|
||||
format.json { render :json => @topic.self_as_json }
|
||||
end
|
||||
end
|
||||
|
||||
# POST topics
|
||||
def create
|
||||
|
@ -63,6 +77,12 @@ class TopicsController < ApplicationController
|
|||
@topic.permission = 'commons'
|
||||
@topic.metacode = Metacode.find_by_name(params[:topic][:metacode])
|
||||
@topic.user = @user
|
||||
|
||||
#if being created on a map, set topic by default to whatever permissions the map is
|
||||
if params[:topic][:map]
|
||||
@map = Map.find(params[:topic][:map])
|
||||
@topic.permission = @map.permission
|
||||
end
|
||||
|
||||
@topic.save
|
||||
end
|
||||
|
@ -81,9 +101,11 @@ class TopicsController < ApplicationController
|
|||
# set this for the case where the topic is being created on a map.
|
||||
@mapping = Mapping.new()
|
||||
if params[:topic][:map]
|
||||
@map = Map.find(params[:topic][:map])
|
||||
|
||||
@mapping.category = "Topic"
|
||||
@mapping.user = @user
|
||||
@mapping.map = Map.find(params[:topic][:map])
|
||||
@mapping.map = @map
|
||||
@mapping.topic = @topic
|
||||
@mapping.xloc = params[:topic][:x]
|
||||
@mapping.yloc = params[:topic][:y]
|
||||
|
@ -116,18 +138,15 @@ class TopicsController < ApplicationController
|
|||
if @topic
|
||||
if params[:topic]
|
||||
@topic.name = params[:topic][:name] if params[:topic][:name]
|
||||
@topic.desc = params[:topic][:desc] if params[:topic][:desc]
|
||||
@topic.link = params[:topic][:link] if params[:topic][:link]
|
||||
@topic.permission = params[:topic][:permission] if params[:topic][:permission]
|
||||
@topic.desc = params[:topic][:desc] if params[:topic][:desc]
|
||||
@topic.link = params[:topic][:link] if params[:topic][:link]
|
||||
@topic.permission = params[:topic][:permission] if params[:topic][:permission]
|
||||
@topic.metacode = Metacode.find_by_name(params[:topic][:metacode]) if params[:topic][:metacode]
|
||||
end
|
||||
@topic.save
|
||||
end
|
||||
end
|
||||
|
||||
respond_with @topic
|
||||
|
||||
# respond_with(@user, location: topic_url(@topic)) do |format|
|
||||
# end
|
||||
respond_with @topic
|
||||
end
|
||||
|
||||
# GET mappings/:map_id/:topic_id/removefrommap
|
||||
|
|
|
@ -21,12 +21,15 @@ class UsersController < ApplicationController
|
|||
respond_with(@user)
|
||||
end
|
||||
|
||||
# GET /user
|
||||
# GET /user/:id
|
||||
def show
|
||||
@user = User.find(params[:id])
|
||||
@topics = @user.topics.order("created_at DESC").limit(3)
|
||||
@synapses = @user.synapses.order("created_at DESC").limit(3)
|
||||
@maps = @user.maps.order("created_at DESC").limit(3)
|
||||
@topics = Topic.visibleToUser(@current, @user).sort! { |a,b| b.created_at <=> a.created_at }
|
||||
@topics = @topics.slice(0,3)
|
||||
@synapses = Synapse.visibleToUser(@current, @user).sort! { |a,b| b.created_at <=> a.created_at }
|
||||
@synapses = @synapses.slice(0,3)
|
||||
@maps = Map.visibleToUser(@current, @user).sort! { |a,b| b.created_at <=> a.created_at }
|
||||
@maps = @maps.slice(0,3)
|
||||
|
||||
respond_with(@user, @topics, @synapses, @maps)
|
||||
end
|
||||
|
|
|
@ -11,6 +11,16 @@ has_many :synapses, :through => :synapsemappings
|
|||
def mappings
|
||||
topicmappings + synapsemappings
|
||||
end
|
||||
|
||||
def mk_permission
|
||||
if self.permission == "commons"
|
||||
"co"
|
||||
elsif self.permission == "public"
|
||||
"pu"
|
||||
elsif self.permission == "private"
|
||||
"pr"
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
###### JSON ######
|
||||
|
|
|
@ -25,6 +25,16 @@ belongs_to :metacode
|
|||
def topic_autocomplete_method
|
||||
"Get: #{self.name}"
|
||||
end
|
||||
|
||||
def mk_permission
|
||||
if self.permission == "commons"
|
||||
"cc"
|
||||
elsif self.permission == "public"
|
||||
"pu"
|
||||
elsif self.permission == "private"
|
||||
"pr"
|
||||
end
|
||||
end
|
||||
|
||||
# has no viewable synapses helper function
|
||||
def has_viewable_synapses(current)
|
||||
|
|
|
@ -1,16 +1,30 @@
|
|||
<%#
|
||||
# @file
|
||||
# Shows a map as a card.
|
||||
# I believe this is rendered on the profile pages.
|
||||
# TODO: Am I correct?
|
||||
# TODO: Is it rendered on any other pages?
|
||||
# Any list of maps uses this rendering.
|
||||
#%>
|
||||
<%= div_for map do %>
|
||||
<% if map.authorize_to_edit(user) %>
|
||||
<div class="permission canEdit">
|
||||
<% end %>
|
||||
|
||||
<% if map.user == user %><%= link_to 'Delete', map_path(map), :class => 'delete', :confirm => 'Delete this map (nodes and synapses will remain)?', :method => :delete, :remote => true %><% end %>
|
||||
<p class="type">Map</p>
|
||||
<%= image_tag 'map.png', :class => 'icon', :size => '50x50' %>
|
||||
<div class="cardSettings">
|
||||
<% if map.user == user %>
|
||||
<div class="permActivator">
|
||||
<div class="editSettings">
|
||||
<span>Permissions: </span>
|
||||
<span title="Click to Edit"><%= best_in_place map, :permission, :type => :select, :collection => [['commons', 'commons'], ['public','public'], ['private','private']] %></span>
|
||||
<div class="clearfloat"></div>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
<div class="mapPerm"><%= map.mk_permission %></div>
|
||||
</div>
|
||||
<span class="title">
|
||||
<span><%=map.name %></span>
|
||||
<span><%= best_in_place map, :name, :type => :input %></span>
|
||||
<a href="/maps/<%=map.id %>" class="topic-go-arrow">
|
||||
<img class="topic-go-arrow"
|
||||
title="Go to map"
|
||||
|
@ -25,7 +39,11 @@
|
|||
<div class="scroll">
|
||||
<div class="desc">
|
||||
<p class="mapdata"><%= map.topics.count %> topics and <%= map.synapses.count %> synapses</p>
|
||||
<p><%= map.desc %></p>
|
||||
<p><%= best_in_place map, :desc, :type => :textarea, :nil => "<span class='gray'>Click to add description.</span>" %></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<% if map.authorize_to_edit(user) %>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
|
|
@ -9,8 +9,9 @@
|
|||
<%= form.text_field :name %>
|
||||
<label for="map_desc">Description</label>
|
||||
<%= form.text_area :desc, class: "description", :rows => 5 %>
|
||||
<label for="map_permission">Permission</label>
|
||||
<label for="map_permission">Permission</label>
|
||||
<%= form.select(:permission, options_for_select(['commons', 'public', 'private'])) %>
|
||||
<p>Topics and synapses you create newly on this map will be set by default to the permissions of your map.</p>
|
||||
<%= form.hidden_field :topicsToMap, :value => 0 %>
|
||||
<%= form.hidden_field :synapsesToMap, :value => 0 %>
|
||||
<%= form.submit "Save", class: "add" %>
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
<%#
|
||||
# @file
|
||||
# Form for editing a map
|
||||
# TODO: I think this code is no longer in use. Is it?
|
||||
# TODO: What URL is this accessible at?
|
||||
# Located at addresses /maps/:id/edit. In use.
|
||||
#%>
|
||||
<%= form_for @map, url: map_url(@map) do |form| %>
|
||||
<h3>Edit Map</h3>
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
<%#
|
||||
# @file
|
||||
# Form to create a new map.
|
||||
# TODO: What URL is this accessible from?
|
||||
# TODO: Is this code being used anymore?
|
||||
# Accessible from /maps/new. Still in use.
|
||||
#%>
|
||||
<div class="nothidden">
|
||||
<%= form_for @map || Map.new, url: maps_url do |form|%>
|
||||
|
@ -13,6 +12,7 @@
|
|||
<%= form.text_area :desc, class: "description", :rows => 5 %>
|
||||
<label for="map_permission">Permission</label>
|
||||
<%= form.select(:permission, options_for_select(['commons', 'public', 'private'])) %>
|
||||
<p>Topics and synapses you create newly on this map will be set by default to the permissions of your map.</p>
|
||||
<%= form.submit "Add Map", class: "add" %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
|
|
@ -18,14 +18,17 @@ ISSAD::Application.routes.draw do
|
|||
resources :topics do
|
||||
get :autocomplete_topic_name, :on => :collection
|
||||
end
|
||||
match 'topics/:id/:format', to: 'topics#json', via: :get, as: :json
|
||||
|
||||
resources :synapses do
|
||||
get :autocomplete_synapse_desc, :on => :collection
|
||||
end
|
||||
match 'synapses/:id/:format', to: 'synapses#json', via: :get, as: :json
|
||||
|
||||
resources :maps do
|
||||
get :autocomplete_map_name, :on => :collection
|
||||
end
|
||||
match 'maps/:id/:format', to: 'maps#json', via: :get, as: :json
|
||||
|
||||
resources :users do
|
||||
get :autocomplete_user_name, :on => :collection
|
||||
|
|
Loading…
Reference in a new issue