completed locations frontend and widget using categories filtering etc.
This commit is contained in:
parent
eeb7f72876
commit
8f3a68b3d7
|
@ -1,6 +1,6 @@
|
|||
var Locations = function(ls){
|
||||
|
||||
l = this;
|
||||
this.name = "Locations";
|
||||
this.locations = ls;
|
||||
this.markerCounts = 0;
|
||||
var map = null,
|
||||
|
@ -11,7 +11,6 @@ var Locations = function(ls){
|
|||
|
||||
|
||||
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 = {
|
||||
|
@ -119,10 +118,10 @@ var Locations = function(ls){
|
|||
}
|
||||
return filtered;
|
||||
}
|
||||
|
||||
google.maps.event.addDomListener(window, 'load', initialize);
|
||||
initialize();
|
||||
|
||||
}
|
||||
|
||||
var InvalidObjectError = function(){
|
||||
this.name = "InvalidObjectError";
|
||||
this.message = "Object not valid";
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
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
|
17
vendor/built_in_modules/location/app/controllers/panel/location/widget/locations_controller.rb
vendored
Normal file
17
vendor/built_in_modules/location/app/controllers/panel/location/widget/locations_controller.rb
vendored
Normal file
|
@ -0,0 +1,17 @@
|
|||
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
|
40
vendor/built_in_modules/location/app/views/panel/location/front_end/locations/index.html.erb
vendored
Normal file
40
vendor/built_in_modules/location/app/views/panel/location/front_end/locations/index.html.erb
vendored
Normal file
|
@ -0,0 +1,40 @@
|
|||
<%= 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>
|
|
@ -0,0 +1,3 @@
|
|||
<a href="<%= panel_location_front_end_locations_path %>" >
|
||||
<%= image_tag @url, :width=>"300", :height=>"300" %>
|
||||
</a>
|
|
@ -9,6 +9,12 @@ Rails.application.routes.draw do
|
|||
|
||||
resources :locations
|
||||
end
|
||||
namespace :front_end do
|
||||
resources :locations
|
||||
end
|
||||
namespace :widget do
|
||||
match "location_widget" => "locations#location_widget"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -4,15 +4,17 @@ 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 'bulletins'
|
||||
# end
|
||||
front_end do
|
||||
app_page 'locations' do
|
||||
frontend_i18n 'location.location'
|
||||
end
|
||||
end
|
||||
|
||||
# category ["BulletinCategory"]
|
||||
|
||||
|
@ -34,6 +36,12 @@ 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]
|
||||
|
|
Reference in New Issue