Updated Module Store to Install a Module directly from Store.tp
This commit is contained in:
parent
a154d16a7e
commit
a108426412
|
@ -1,9 +1,49 @@
|
|||
class Admin::ModuleStoreController < OrbitBackendController
|
||||
|
||||
@@store = STORE_CONFIG[:store_settings]["url"]
|
||||
|
||||
def index
|
||||
@extensions = get_extensions
|
||||
end
|
||||
|
||||
def show
|
||||
@extension = get_extension(params[:id]) rescue nil
|
||||
end
|
||||
|
||||
def download
|
||||
#get extension related values
|
||||
extension = get_extension(params[:id]) rescue nil
|
||||
download_link = @@store + "/"+ extension["extension"]["extension"]["url"]
|
||||
downloaded_file_name = extension["extension_filename"]
|
||||
module_app_name = downloaded_file_name.split(/(.zip)/).first
|
||||
|
||||
#check if the directory exists or not
|
||||
if Dir.exists?("#{Rails.root}/vendor/built_in_modules/#{module_app_name}")
|
||||
flash[:notice] = "This module is already installed"
|
||||
else
|
||||
download_extension(download_link, downloaded_file_name,module_app_name)
|
||||
flash[:notice] = "This module has been successfully installed"
|
||||
end
|
||||
redirect_to admin_module_store_path
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def get_extensions
|
||||
JSON.parse(open("#{@@store}/api/extensions").read)
|
||||
end
|
||||
|
||||
def get_extension(id)
|
||||
JSON.parse(open("#{@@store}/api/extensions/#{id}").read)
|
||||
end
|
||||
|
||||
def download_extension(download_link, downloaded_file_name,module_app_name)
|
||||
puts %x(wget "#{download_link}")
|
||||
puts %x(unzip "#{downloaded_file_name}")
|
||||
puts %x(mv #{module_app_name} "#{Rails.root}/vendor/built_in_modules/")
|
||||
puts %x(rm "#{downloaded_file_name}")
|
||||
|
||||
Rails.logger.info"@@@@@@@@"+Dir.exists?("#{Rails.root}/vendor/built_in_modules/location").inspect
|
||||
site_restart
|
||||
end
|
||||
end
|
|
@ -1,7 +1,7 @@
|
|||
class Admin::TemplateStoreController < OrbitBackendController
|
||||
|
||||
|
||||
@@store_domain = "http://store.tp.rulingcom.com"
|
||||
@@store_domain = STORE_CONFIG[:store_settings]["url"]
|
||||
def index
|
||||
@store = @@store_domain
|
||||
@templates = JSON.parse(get_templates)
|
||||
|
@ -33,6 +33,4 @@ class Admin::TemplateStoreController < OrbitBackendController
|
|||
response.body
|
||||
end
|
||||
|
||||
|
||||
|
||||
end
|
|
@ -14,8 +14,14 @@
|
|||
<%= javascript_include_tag 'lib/retina' %>
|
||||
<%= javascript_include_tag 'lib/mudole_templates_status' %>
|
||||
</head>
|
||||
<!--
|
||||
<% @extensions.each do |extension|%>
|
||||
<%=link_to extension["title"], admin_module_store_show_path(extension["_slugs"][0])%>
|
||||
<%end%> -->
|
||||
|
||||
<table id="mt-list" class="table main-list">
|
||||
<%= flash[:notice] rescue nil%>
|
||||
|
||||
<table id="mt-list" class="table main-list">
|
||||
<thead>
|
||||
<tr class="sort-header">
|
||||
<th class="first"><a href="#">Module Title</a></th>
|
||||
|
@ -25,6 +31,28 @@
|
|||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% @extensions.each do |extension|%>
|
||||
<tr>
|
||||
<td class="detail-row">
|
||||
<div class="module_icon pull-left">
|
||||
<%= image_tag "module_icon.png"%>
|
||||
</div>
|
||||
<h5 class="mt_title"><span><%=link_to extension["title"], admin_module_store_show_path(extension["_slugs"][0])%></span></h5>
|
||||
<p class="mt_dev muted"><%=extension["author"]%></p>
|
||||
</td>
|
||||
<td class="detail-row">2013/07/12</td>
|
||||
<td>
|
||||
<%= extension["description"].html_safe%> <%= link_to 'Read More', admin_module_store_show_path(extension["_slugs"][0]) %>
|
||||
</td>
|
||||
<!-- <td class="active"><button class="act btn btn-mini" type="button">Uninstall</button></td>
|
||||
--> <td class="active"><%= link_to 'Download', admin_module_store_download_path(:id => extension["_slugs"][0]), :class=>"act btn btn-mini btn-success" %></td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
<!--
|
||||
<tr>
|
||||
<td class="detail-row">
|
||||
<div class="module_icon pull-left">
|
||||
|
@ -80,6 +108,5 @@
|
|||
@detail
|
||||
</td>
|
||||
<td class="active"><button class="act btn btn-mini btn-info" type="button">Update</button></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</tr> -->
|
||||
|
|
@ -22,7 +22,7 @@
|
|||
<div class="side">
|
||||
<div id="item-info">
|
||||
<img src="/assets/module/thumb/mt<%= params[:m] %>.jpg" alt="" class="item-thumb">
|
||||
<h2 class="item-name">Module Name</h2>
|
||||
<h2 class="item-name"><%= @extension.first["title"] %></h2>
|
||||
<a id="download" href="">free download</a>
|
||||
<ul class="item-extra-info">
|
||||
<li><span class="title">downloads</span><span class="count"><%= Random.new.rand(10..100) %></span></li>
|
||||
|
@ -38,16 +38,12 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="main clearfix">
|
||||
<h3>description</h3>
|
||||
<div id="desc-holder" class="paragraph">Pixel Union’s Jitensha defines storefront minimalism. Japanese for “bicycle,” Jitensha offers clean typography and easy usability, including full color, font, logo, and footer customization. With its painless social media and blog integration, Jitensha gorgeously accomodates every aspect of your business. Any questions before you launch? Don’t hesitate to email us: Support@PixelUnion.net.</div>
|
||||
<h3>Description</h3>
|
||||
<div id="desc-holder" class="paragraph"><%= @extension.first["description"].html_safe%></div>
|
||||
<h3>screen shot</h3>
|
||||
<div id="screen-shot">
|
||||
<div class="holder">
|
||||
<img src="" alt="Thumbnail 1" class="preview item-thumb">
|
||||
<img src="" alt="Thumbnail 2" class="preview item-thumb">
|
||||
<img src="" alt="Thumbnail 3" class="preview item-thumb">
|
||||
<img src="" alt="Thumbnail 4" class="preview item-thumb">
|
||||
<img src="" alt="Thumbnail 5" class="preview item-thumb">
|
||||
<%= image_tag "#{STORE_CONFIG[:store_settings]["url"]}/#{@extension.first['preview']['preview']['url']}"%>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
data = File.open(File.join(Rails.root, 'config', 'store_config.yml')).read
|
||||
STORE_CONFIG = YAML::load(ERB.new(data).result(binding)).symbolize_keys
|
|
@ -262,6 +262,7 @@ Orbit::Application.routes.draw do
|
|||
|
||||
match 'module_store' => 'module_store#index'
|
||||
match 'module_store/show' => 'module_store#show'
|
||||
match 'module_store/download' => 'module_store#download'
|
||||
match 'template_store' => 'template_store#index'
|
||||
match 'template_store/download_theme' => "template_store#download_theme"
|
||||
match 'template_store/template/:id' => 'template_store#show', :as => :template_store_template
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
store_settings:
|
||||
url: "http://store.tp.rulingcom.com"
|
|
@ -1,131 +0,0 @@
|
|||
var Locations = function(ls){
|
||||
l = this;
|
||||
this.name = "Locations";
|
||||
this.locations = ls;
|
||||
this.markerCounts = 0;
|
||||
var map = null,
|
||||
infowindow = new google.maps.InfoWindow(),
|
||||
default_location = new google.maps.LatLng( 24.8043107, 121.03042159999995 ),
|
||||
infowindow_template = "<div class='title'></div><div class='image'><img class='thumbnail' src='' /></div>",
|
||||
markers = [];
|
||||
|
||||
|
||||
var initialize = function() {
|
||||
google.maps.visualRefresh = true;
|
||||
var location = ( l.locations.length ? new google.maps.LatLng( l.locations[0].latitude, l.locations[0].longitude ) : default_location ),
|
||||
mapOptions = {
|
||||
zoom: 16,
|
||||
center: location,
|
||||
mapTypeId: google.maps.MapTypeId.ROADMAP
|
||||
};
|
||||
|
||||
map = new google.maps.Map( document.getElementById('map'), mapOptions );
|
||||
|
||||
for( i = 0; i < l.locations.length; i++ ){
|
||||
markers.push( addMarker( new google.maps.LatLng(l.locations[i].latitude, l.locations[i].longitude), l.locations[i].color, i, function( index ){
|
||||
|
||||
}) );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var addMarker = function( location, pinColor, index, markerCallback ){
|
||||
|
||||
var pin = getPin(( pinColor.substr( 0, 1 ) == "#" ? pinColor.replace("#","") : pinColor )),
|
||||
marker = new google.maps.Marker({
|
||||
map: map,
|
||||
icon: pin.image,
|
||||
shadow: pin.shadow,
|
||||
position: location,
|
||||
zIndex: 10
|
||||
});
|
||||
|
||||
google.maps.event.addListener( marker, 'click', function() {
|
||||
|
||||
infowindow.setContent( getTemplate( index ) );
|
||||
infowindow.open( map, marker );
|
||||
if( typeof markerCallback == "function" )
|
||||
markerCallback.call( this, index );
|
||||
|
||||
});
|
||||
|
||||
l.markerCounts++;
|
||||
return {"marker" : marker, "category_id" : l.locations[index].category_id};
|
||||
}
|
||||
|
||||
|
||||
|
||||
var getTemplate = function( obj ){
|
||||
|
||||
var object = ( typeof obj == "number" ? l.locations[obj] : ( typeof obj == "object" ? obj : null ) );
|
||||
|
||||
if ( object ){
|
||||
|
||||
var template = $( "<div></div>" );
|
||||
template.html( infowindow_template );
|
||||
template.find( '.title' ).text( object.name );
|
||||
template.find( "img.thumbnail" ).attr( "src", object.file.thumb.url );
|
||||
return template.html();
|
||||
|
||||
}else{
|
||||
|
||||
throw new InvalidObjectError();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var getPin = function( color ){
|
||||
|
||||
var pinImage = new google.maps.MarkerImage("http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=%E2%80%A2|" + color,
|
||||
new google.maps.Size(21, 34),
|
||||
new google.maps.Point(0,0),
|
||||
new google.maps.Point(10, 34));
|
||||
|
||||
var pinShadow = new google.maps.MarkerImage("http://chart.apis.google.com/chart?chst=d_map_pin_shadow",
|
||||
new google.maps.Size(40, 37),
|
||||
new google.maps.Point(0, 0),
|
||||
new google.maps.Point(12, 35));
|
||||
|
||||
return {"image":pinImage,"shadow":pinShadow};
|
||||
}
|
||||
|
||||
this.getMarker = function( index ){
|
||||
return markers[index];
|
||||
}
|
||||
this.getAllMarkers = function( ){
|
||||
return markers;
|
||||
}
|
||||
|
||||
this.clearFilter = function(){
|
||||
var m = l.getAllMarkers();
|
||||
for( i = 0; i < m.length; i++ ){
|
||||
m[i].marker.setVisible(true);
|
||||
}
|
||||
}
|
||||
|
||||
this.filterMarkers = function( categories ){
|
||||
var filtered = [],
|
||||
m = l.getAllMarkers();
|
||||
|
||||
for( i = 0; i < m.length; i++ ){
|
||||
m[i].marker.setVisible(false);
|
||||
}
|
||||
for( i = 0; i < categories.length; i++ ){
|
||||
filtered = filtered.concat(m.filter(function(a){return a.category_id == categories[i]}));
|
||||
}
|
||||
for( i = 0; i < filtered.length; i++ ){
|
||||
filtered[i].marker.setVisible(true);
|
||||
}
|
||||
return filtered;
|
||||
}
|
||||
initialize();
|
||||
|
||||
}
|
||||
|
||||
var InvalidObjectError = function(){
|
||||
this.name = "InvalidObjectError";
|
||||
this.message = "Object not valid";
|
||||
}
|
||||
|
||||
InvalidObjectError.prototype = new Error();
|
||||
InvalidObjectError.prototype.constructor = InvalidObjectError;
|
2
vendor/built_in_modules/location/app/assets/javascripts/panel/gprs/back_end/locations.js
vendored
Normal file
2
vendor/built_in_modules/location/app/assets/javascripts/panel/gprs/back_end/locations.js
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
// Place all the behaviors and hooks related to the matching controller here.
|
||||
// All this logic will automatically be available in application.js.
|
|
@ -1,19 +0,0 @@
|
|||
class Panel::Location::BackEnd::LocationCategoriesController < OrbitBackendController
|
||||
def index
|
||||
@module_app_id = @module_app.id rescue nil
|
||||
@categories = get_categories_for_index
|
||||
@categories = @categories.page(params[:page]).per(10)
|
||||
respond_to do |format|
|
||||
format.html # index.html.erb
|
||||
format.json { render json: @categories }
|
||||
end
|
||||
end
|
||||
|
||||
def list
|
||||
@module_app_id = @module_app.id rescue nil
|
||||
@categories = get_categories_for_index
|
||||
@categories = @categories.page(params[:page]).per(10)
|
||||
render :layout => false
|
||||
end
|
||||
|
||||
end
|
|
@ -1,15 +1,9 @@
|
|||
class Panel::Location::BackEnd::LocationsController < OrbitBackendController
|
||||
include AdminHelper
|
||||
open_for_visitor :only => [:get_location_categories, :get_categorywise_locations]
|
||||
|
||||
def index
|
||||
@locations = LocationInfo.all
|
||||
@location_infos = LocationInfo.all
|
||||
@categories = get_categories_for_index
|
||||
@location_infos = [];
|
||||
@locations.each do |loc|
|
||||
loc['color'] = Category.find(loc.category_id).custom_value
|
||||
@location_infos << loc
|
||||
end
|
||||
respond_to do |format|
|
||||
format.html # new.html.erb
|
||||
format.json { render json: @locations }
|
||||
|
@ -28,8 +22,6 @@ class Panel::Location::BackEnd::LocationsController < OrbitBackendController
|
|||
|
||||
def edit
|
||||
@location_info = LocationInfo.find(params[:id])
|
||||
@categories = get_categories_for_index
|
||||
|
||||
end
|
||||
|
||||
def show
|
||||
|
@ -42,7 +34,6 @@ class Panel::Location::BackEnd::LocationsController < OrbitBackendController
|
|||
|
||||
def create
|
||||
@location_info = LocationInfo.new(params[:location_info])
|
||||
@categories = get_categories_for_index
|
||||
if @location_info.save
|
||||
flash[:success] = "Success!!"
|
||||
redirect_to panel_location_back_end_locations_url
|
||||
|
@ -90,43 +81,4 @@ class Panel::Location::BackEnd::LocationsController < OrbitBackendController
|
|||
|
||||
render :json => JSON.pretty_generate(@data)
|
||||
end
|
||||
|
||||
def get_location_categories
|
||||
check_mobile_api_openness
|
||||
location_categories = get_categories_for_index
|
||||
@data = Array.new
|
||||
|
||||
location_categories.each do |category|
|
||||
I18n.locale = :en
|
||||
name_en = category.title
|
||||
I18n.locale = :zh_tw
|
||||
name_zh_tw = category.title
|
||||
category_id = category.id.to_s
|
||||
@data << { name_en: name_en, name_zh_tw: name_zh_tw, category_id: category_id, location_link: "http://#{request.host_with_port}"+"/#{panel_location_back_end_locations_get_categorywise_locations_path}"+"?category_id=#{category_id}"}
|
||||
end
|
||||
|
||||
render :json => JSON.pretty_generate(@data)
|
||||
end
|
||||
|
||||
def get_categorywise_locations
|
||||
check_mobile_api_openness
|
||||
location_infos = LocationInfo.where(:category_id => params[:category_id])
|
||||
@data = Array.new
|
||||
|
||||
location_infos.each do |location|
|
||||
|
||||
picurl = location.file.blank? ? '' : "http://#{request.host_with_port + location.file.url}"
|
||||
thumburl = location.file.blank? ? '' : "http://#{request.host_with_port + location.file.thumb.url}"
|
||||
|
||||
@data << { id: location.id.to_s,
|
||||
name: location.name,
|
||||
pic_url: picurl,
|
||||
thumb_url: thumburl,
|
||||
longitude: location.longitude,
|
||||
latitude: location.latitude,
|
||||
description: location.description }
|
||||
end
|
||||
|
||||
render :json => JSON.pretty_generate(@data)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
class Panel::Location::FrontEnd::LocationsController < OrbitWidgetController
|
||||
def index
|
||||
@categories = @module_app.categories.enabled
|
||||
@locations = LocationInfo.all
|
||||
|
||||
@location_infos = [];
|
||||
@locations.each do |loc|
|
||||
loc['color'] = Category.find(loc.category_id).custom_value
|
||||
@location_infos << loc
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,17 +0,0 @@
|
|||
class Panel::Location::Widget::LocationsController < OrbitWidgetController
|
||||
def location_widget
|
||||
@categories = params[:category_id]
|
||||
locations = LocationInfo.where(:category_id.in => @categories)
|
||||
@url = "http://maps.googleapis.com/maps/api/staticmap?zoom=16&size=400x400&maptype=roadmap%20&sensor=false&"
|
||||
markers = ""
|
||||
locations.each do |loc|
|
||||
color = Category.find(loc.category_id).custom_value
|
||||
color.gsub!("#","")
|
||||
markers = markers + "markers=color:0x#{color}|#{loc.latitude},#{loc.longitude}&"
|
||||
end
|
||||
@url = @url + markers.chop
|
||||
# http://maps.googleapis.com/maps/api/staticmap?zoom=13&size=600x300&maptype=roadmap%20&markers=color:0xCF2C9B|40.702147,-74.015794&markers=color:CF2C9B|label:G|40.711614,-74.012318%20&markers=color:red|color:red|label:C|40.718217,-73.998284&sensor=false
|
||||
|
||||
|
||||
end
|
||||
end
|
|
@ -1,21 +0,0 @@
|
|||
<tr class="<%= 'disable' if category.disable %>">
|
||||
<% @site_valid_locales.each_with_index do |locale, i| %>
|
||||
<td>
|
||||
<%= category.title_translations[locale] %>
|
||||
<% if i == 0 %>
|
||||
<div class="quick-edit">
|
||||
<ul class="nav nav-pills">
|
||||
<% if is_admin?%>
|
||||
<li><%= link_to t(:edit), '#', class: "open-slide", data: {title: t(:edit_category), id: category.id.to_s, module: @module_app_id.to_s, form: category.title_translations.merge(color: category.custom_value)} %></li>
|
||||
<li><%= link_to show_toggle_archive_btn(category), toggle_admin_module_app_category_path(@module_app_id, category), method: :post, remote: true, class: "archive_toggle" %></li>
|
||||
<% end %>
|
||||
<% if is_manager? || is_admin? %>
|
||||
<li><%= link_to t(:category_auth), admin_authorizations_path(@module_app.key, 'category_authorization', category.id) %></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
<% end %>
|
||||
</td>
|
||||
<% end %>
|
||||
<td><span class="badge" style="background-color: <%= category.custom_value %>;"><%= category.custom_value %></span></td>
|
||||
</tr>
|
|
@ -1,12 +0,0 @@
|
|||
<%= flash_messages %>
|
||||
<%= f.error_messages %>
|
||||
<%= label_tag("color", t("location.color")) %>
|
||||
<div class="input-append">
|
||||
<%= f.text_field :custom_value, id: "color", :class => "color-picker miniColors input-small", :size => "7", :maxlength => "7", :autocomplete=>"off",:value=>"9100FF" %>
|
||||
</div>
|
||||
<%= f.fields_for :title_translations do |f| %>
|
||||
<% @site_valid_locales.each do |locale| %>
|
||||
<%= label_tag "name-#{locale}", "#{t(:name)} (#{I18nVariable.from_locale(locale)})" %>
|
||||
<%= f.text_field locale, :class => 'input-large', :value => (@category.title_translations[locale] rescue ''), placeholder: t(:name), id: locale %>
|
||||
<% end %>
|
||||
<% end %>
|
|
@ -1,66 +0,0 @@
|
|||
<%= stylesheet_link_tag "jquery.miniColors" %>
|
||||
|
||||
<%= javascript_include_tag "jquery.miniColors.min" %>
|
||||
|
||||
<%= javascript_include_tag "admin/categories" %>
|
||||
|
||||
<div id="categories_index">
|
||||
<table class="table main-list">
|
||||
<thead>
|
||||
<tr class="sort-header">
|
||||
<% @site_valid_locales.each_with_index do |locale, i| %>
|
||||
<th class="<%= 'span5' if i <= 1 %>"><a href="#"><%= t(:_locale, :locale => locale) %></a></th>
|
||||
<% end %>
|
||||
<th class="span2"><a href="#"><%= t('event_category.color') %></a></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<%= render partial: 'category', collection: @categories %>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
<div class="bottomnav clearfix">
|
||||
<div class="action pull-right">
|
||||
<%= link_to content_tag(:i, nil, class: "icons-plus") + " " + t(:add), '#', class: "btn btn-primary open-slide", data: {title: t(:add_category), id: 'new', module: @module_app_id.to_s } %>
|
||||
</div>
|
||||
<div class="pagination pagination-centered">
|
||||
<%= paginate @categories unless @categories.blank? %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="pageslide">
|
||||
<div class="page-title clearfix">
|
||||
<a class="pull-right" href="javascript:$.pageslide.close()">
|
||||
<i class="icons-arrow-left-2"></i>
|
||||
</a>
|
||||
<span></span>
|
||||
</div>
|
||||
<div class="view-page">
|
||||
<div class="nano">
|
||||
<div class="content">
|
||||
<%= form_for :category, url: nil, html:{:id=>"color"}, remote: true do |f| %>
|
||||
<fieldset>
|
||||
<%= render :partial => "form", :locals => { :f => f } %>
|
||||
<div class="form-actions">
|
||||
<a href="javascript:$.pageslide.close()" class="btn btn-small"><%= t(:cancel) %></a>
|
||||
<%= f.submit t(:submit), class: 'btn btn-primary btn-small' %>
|
||||
</div>
|
||||
</fieldset>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
if($('.color-picker').length > 0){
|
||||
$('.color-picker').miniColors(); // just in category view
|
||||
$('.miniColors-trigger').addClass('btn');
|
||||
}
|
||||
$("form#color").bind("ajax:complete",function(){
|
||||
$.get("<%= panel_location_back_end_location_categories_list_path %>",function(data){
|
||||
$("#categories_index").html(data);
|
||||
openSlide();
|
||||
})
|
||||
})
|
||||
</script>
|
|
@ -1,21 +0,0 @@
|
|||
<table class="table main-list">
|
||||
<thead>
|
||||
<tr class="sort-header">
|
||||
<% @site_valid_locales.each_with_index do |locale, i| %>
|
||||
<th class="<%= 'span5' if i <= 1 %>"><a href="#"><%= t(:_locale, :locale => locale) %></a></th>
|
||||
<% end %>
|
||||
<th class="span2"><a href="#"><%= t('location_category.color') %></a></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<%= render partial: 'category', collection: @categories %>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="bottomnav clearfix">
|
||||
<div class="action pull-right">
|
||||
<%= link_to content_tag(:i, nil, class: "icons-plus") + " " + t(:add), '#', class: "btn btn-primary open-slide", data: {title: t(:add_category), id: 'new', module: @module_app_id.to_s } %>
|
||||
</div>
|
||||
<div class="pagination pagination-centered">
|
||||
<%= paginate @categories unless @categories.blank? %>
|
||||
</div>
|
||||
</div>
|
|
@ -19,8 +19,8 @@
|
|||
<div class="control-group">
|
||||
<label class="control-label" for=""><%= t 'coordinates' %></label>
|
||||
<div class="controls">
|
||||
<%= f.text_field :latitude, :class=>"span2", :placeholder => "Latitude" %>
|
||||
<%= f.text_field :longitude, :class=>"span2", :placeholder => "Longitude" %>
|
||||
<%= f.text_field :latitude, :class=>"span2", :placeholder => "Langitude" %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
<script src="http://maps.google.com/maps/api/js?sensor=true"></script>
|
||||
<%= javascript_include_tag "location" %>
|
||||
<table class="table main-list">
|
||||
<thead>
|
||||
<tr>
|
||||
|
@ -30,44 +28,6 @@
|
|||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
<div>
|
||||
Categories :
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<% @categories.each do |category| %>
|
||||
<button class="btn cat-filter" data-category='<%= category.id %>'><%= category.title %></button>
|
||||
<% end %>
|
||||
</div>
|
||||
<a href="javascript:void(0);" id="clear_filter">Clear Filter</a>
|
||||
<div id="map" style="width: 100%; height: 500px;"></div>
|
||||
<%if is_manager? %>
|
||||
<td><%= link_to 'Add', new_panel_location_back_end_location_path, :class => "btn btn-primary pull-right", :id=>"create_event_btn", :ref=>"add-btn"%></td>
|
||||
<% end %>
|
||||
<script>
|
||||
|
||||
var loc = new Locations(<%= @location_infos.to_json.html_safe %>);
|
||||
jQuery(document).ready(function($) {
|
||||
var filterCategories = [];
|
||||
$("button.cat-filter").bind( clickEvent,function(){
|
||||
var catid = $( this ).data('category');
|
||||
|
||||
if ( $( this ).hasClass('active') ){
|
||||
$( this ).removeClass('active');
|
||||
var index = filterCategories.indexOf(filterCategories.filter(function(a,i){ return a == catid })[0]);
|
||||
filterCategories.splice( index, 1 );
|
||||
}else{
|
||||
$( this ).addClass('active');
|
||||
filterCategories.push( catid );
|
||||
}
|
||||
loc.filterMarkers(filterCategories);
|
||||
})
|
||||
|
||||
$("a#clear_filter").bind( clickEvent, function(){
|
||||
filterCategories = [];
|
||||
$("button.cat-filter").removeClass('active');
|
||||
loc.clearFilter();
|
||||
})
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
|
|
|
@ -1,40 +0,0 @@
|
|||
<%= javascript_include_tag "location" %>
|
||||
<div>
|
||||
Categories :
|
||||
<% @categories.each do |category| %>
|
||||
<input type="checkbox" class="btn cat-filter" data-category='<%= category.id %>' /><%= category.title %>
|
||||
<% end %>
|
||||
</div>
|
||||
<a href="javascript:void(0);" id="clear_filter">Clear Filter</a>
|
||||
<div id="map" style="width: 100%; height: 500px;"></div>
|
||||
<script>
|
||||
var loc = null;
|
||||
var initialize = function(){
|
||||
loc = new Locations(<%= @location_infos.to_json.html_safe %>);
|
||||
}
|
||||
|
||||
jQuery(document).ready(function($) {
|
||||
var filterCategories = [];
|
||||
$("input.cat-filter").bind( "click",function(){
|
||||
var catid = $( this ).data('category');
|
||||
|
||||
if ( !$( this ).is(':checked') ){
|
||||
|
||||
var index = filterCategories.indexOf(filterCategories.filter(function(a,i){ return a == catid })[0]);
|
||||
filterCategories.splice( index, 1 );
|
||||
}else{
|
||||
|
||||
filterCategories.push( catid );
|
||||
}
|
||||
loc.filterMarkers(filterCategories);
|
||||
})
|
||||
|
||||
$("a#clear_filter").bind( "click", function(){
|
||||
filterCategories = [];
|
||||
$("input.cat-filter").prop('checked',false);
|
||||
loc.clearFilter();
|
||||
})
|
||||
|
||||
});
|
||||
</script>
|
||||
<script src="http://maps.google.com/maps/api/js?sensor=true&callback=initialize"></script>
|
|
@ -1,3 +0,0 @@
|
|||
<a href="<%= panel_location_front_end_locations_path %>" >
|
||||
<%= image_tag @url, :width=>"300", :height=>"300" %>
|
||||
</a>
|
|
@ -2,22 +2,12 @@ Rails.application.routes.draw do
|
|||
namespace :panel do
|
||||
namespace :location do
|
||||
namespace :back_end do
|
||||
match 'location_categories/list' => "location_categories#list"
|
||||
match "locations/get_locations" => "locations#get_locations"
|
||||
match "locations/get_categorywise_locations" => "locations#get_categorywise_locations"
|
||||
match "locations/get_location_categories" => "locations#get_location_categories"
|
||||
resources :location_categories
|
||||
|
||||
match "locations/get_locations" => "locations#get_locations"
|
||||
match "locations/get_categories" => "locations#get_categories"
|
||||
|
||||
resources :locations
|
||||
end
|
||||
namespace :front_end do
|
||||
resources :locations
|
||||
end
|
||||
namespace :widget do
|
||||
match "location_widget" => "locations#location_widget"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -4,17 +4,15 @@ module Location
|
|||
base_url File.expand_path File.dirname(__FILE__)
|
||||
# personal_plugin :enable => true,:path=>"panel/location/plugin/profile",:i18n=>'admin.location'
|
||||
|
||||
version "0.1"
|
||||
organization "Rulingcom"
|
||||
author "RD dep"
|
||||
intro "I am intro"
|
||||
update_info 'some update_info'
|
||||
# version "0.1"
|
||||
# organization "Rulingcom"
|
||||
# author "RD dep"
|
||||
# intro "I am intro"
|
||||
# update_info 'some update_info'
|
||||
|
||||
front_end do
|
||||
app_page 'locations' do
|
||||
frontend_i18n 'location.location'
|
||||
end
|
||||
end
|
||||
# front_end do
|
||||
# app_page 'bulletins'
|
||||
# end
|
||||
|
||||
# category ["BulletinCategory"]
|
||||
|
||||
|
@ -35,37 +33,31 @@ module Location
|
|||
|
||||
categorizable
|
||||
authorizable
|
||||
|
||||
widgets do
|
||||
customize_widget "location_widget" do
|
||||
widget_i18n "location.location"
|
||||
end
|
||||
end
|
||||
|
||||
side_bar do
|
||||
head_label_i18n 'location.location',:icon_class=>"icons-location"
|
||||
available_for [:admin,:guest,:manager,:sub_manager]
|
||||
active_for_controllers ({:private=>['locations','location_categories']})
|
||||
active_for_controllers ({:private=>['locations']})
|
||||
|
||||
head_link_path "panel_location_back_end_locations_path"
|
||||
|
||||
context_link 'location.all_locations',
|
||||
:link_path=>"panel_location_back_end_locations_path" ,
|
||||
:priority=>1,
|
||||
:active_for_action=>{:locations=>:index},
|
||||
:active_for_action=>{:localtions=>:index},
|
||||
:available_for => [:manager]
|
||||
|
||||
context_link 'location.add_location',
|
||||
:link_path=>"new_panel_location_back_end_location_path" ,
|
||||
:priority=>1,
|
||||
:active_for_action=>{:locations=>:new},
|
||||
:active_for_action=>{:localtions=>:new},
|
||||
:available_for => [:manager]
|
||||
|
||||
|
||||
context_link 'location.categories',
|
||||
:link_path=>"panel_location_back_end_location_categories_path" ,
|
||||
:link_path=>"admin_module_app_categories_path(get_module_app)" ,
|
||||
:priority=>1,
|
||||
:active_for_category => 'Location',
|
||||
:active_for_action=>{:localtion_categories=>:index},
|
||||
:available_for => [:manager]
|
||||
|
||||
end
|
||||
|
|
Reference in New Issue