Compare commits

..
161 Commits
Author SHA1 Message Date
harrybomrah 6e809ff2b3 changed the frontend loading to more rails specific. and also fixed the filter reload in thumbnali and summary view of members 2013-11-07 14:13:55 +08:00
saurabhbhatia 4e706fab0c Fixed gallery and video widgets 2013-11-07 11:00:10 +08:00
harrybomrah 8c532e7241 fixed gallery frontend for category display 2013-11-07 09:34:52 +08:00
harrybomrah 49217d4705 fixed all button for page settings and also filter display after page refresh 2013-11-06 22:36:59 +08:00
saurabhbhatia 591a3e0bc4 Updated redirect path after saving a page 2013-11-06 17:20:40 +08:00
Manson Wang 3744e1c3e7 By Ray, Fix structure page editinh bug 2013-11-06 17:16:14 +08:00
Manson Wang 5df8ff2e52 By Ray, Fix structure page editing bug 2013-11-06 16:48:56 +08:00
harrybomrah f191029279 design change in album view 2013-11-06 16:39:21 +08:00
harrybomrah c158108576 gallery all bugs fixed.. 2013-11-06 16:39:18 +08:00
saurabhbhatia 9760100b69 Removed the logger 2013-11-06 16:38:55 +08:00
Manson Wang ff6eb5d674 Fix annoucement preview image bug 2013-11-06 16:31:27 +08:00
saurabhbhatia 2d0fd1d2e4 Fixed select all checkboxes 2013-11-06 15:29:15 +08:00
saurabhbhatia ef67941ba5 Fix for widgets edit form 2013-11-06 15:11:09 +08:00
Manson Wang 18d0657321 Fix dashboard system usage refresh bug 2013-11-06 09:29:57 +08:00
harrybomrah 3c4f22234b fixed template updation from site preferences 2013-11-05 20:50:05 +08:00
harrybomrah bae1c0da7d now only approved announcement can be viewed when backend is open 2013-11-05 20:50:02 +08:00
Manson Wang 7401a6ae59 Update for dashboard and Fix site.rake,new_site.rake for missing "menu_enabled_for" 2013-11-05 19:38:47 +08:00
harrybomrah 9d7af2ccac fixed the edit link problem in site settings 2013-11-05 16:54:33 +08:00
harrybomrah af103fa427 gallery frontend ui fixed. 2013-11-05 13:28:10 +08:00
saurabhbhatia 1945921fcb authorized user now able edit page context 2013-11-05 13:01:58 +08:00
Spen ced7a59555 fix new ui archive and link frontend 2013-11-05 11:27:35 +08:00
saurabhbhatia 3d758cabb3 Updated orbit core lib for module app 2013-11-05 11:25:35 +08:00
saurabhbhatia 54f778f17d Updated Calendar frontend 2013-11-04 23:03:28 +08:00
rulingcom b1867dd47a new code logic for saving tree.. should work fine even if the node positions fail 2013-11-04 22:20:50 +08:00
harrybomrah 3db075b9d2 side bar for calendar fixed. 2013-11-04 18:31:10 +08:00
Manson Wang 7ad05ef034 Dashboard with Google Chart 2013-11-04 17:48:51 +08:00
harrybomrah 2c8705ac3e fixed site structure and also member roles side bar problem. 2013-11-04 17:39:16 +08:00
saurabhbhatia 2b97d4ca22 Updated Theme in design 2013-11-04 16:31:09 +08:00
saurabhbhatia 3816314b5b Fixed Temaplte Module with Info and Images 2013-11-04 16:12:30 +08:00
saurabhbhatia 1f3f9831ad Fixed Openness Issue 2013-11-04 15:44:51 +08:00
harrybomrah eaa87b3dd8 new categories for calendar with colors inside.. plus changed the working of calendar. it has now categories like all other modules 2013-11-04 15:17:50 +08:00
saurabhbhatia 17f31d1e25 Fix for Site preference 2013-11-04 09:41:28 +08:00
saurabhbhatia d636248073 Updated Sidebar, Application Controllers 2013-11-01 16:42:39 +08:00
chris 8a4242aae9 Fix data count for page form in structure 2013-10-31 18:12:07 +08:00
chris c541e84254 Remove include of ParserBackEnd 2013-10-31 16:17:51 +08:00
chris 49bb8304c0 Fix approval authorized_users_by_title and get_authorization_by_title 2013-10-31 16:15:08 +08:00
chris 778f7c7863 Delete Archive folder in assets and useless files in lib 2013-10-31 14:13:24 +08:00
chris 68e12fd737 Add format validation to link.rb 2013-10-31 14:09:59 +08:00
chris 00010867a4 Fix link in structure 2013-10-30 18:53:23 +08:00
Manson Wang a885313e75 Dashboard with HighChart 2013-10-30 18:23:46 +08:00
chris 62c663d699 Fix for togglebox and menu_enabled_for 2013-10-30 17:26:31 +08:00
rulingcom dfd0b5c1fb Add authorization rake tasks 2013-10-30 16:36:21 +08:00
saurabhbhatia 3aac221c4e removed site restart after site preferences update 2013-10-30 14:18:03 +08:00
Spen 9746ae4676 fix new ui announcement init data count 2013-10-29 14:45:29 +08:00
chris 36ddbf68e0 Fix menu_enabled_for 2013-10-29 14:39:23 +08:00
chris f2508e79cb Fix edit_title for nil module_app 2013-10-29 14:00:56 +08:00
saurabhbhatia fead457616 Updated path for theme 2013-10-29 12:21:55 +08:00
saurabhbhatia b55a9ce535 Added email as argument in the rake task 2013-10-29 11:40:10 +08:00
saurabhbhatia 976c047a7f New Site rake task path 2013-10-29 11:27:08 +08:00
chris 6bc00ce3a3 Use module_app label instead of title 2013-10-29 11:17:02 +08:00
saurabhbhatia 49c1bff005 Updated new_site rake task with upload package 2013-10-29 11:13:47 +08:00
chris 454e36b4ae iFrame ajaxStop 2013-10-29 11:09:20 +08:00
chris 16659d79cd Fix asset:precompile error and delete useless file 2013-10-28 17:04:36 +08:00
chris a14d69211b PagePart widgets for "system widget"
Delete useless code
2013-10-28 16:29:23 +08:00
chris 218cb03641 PagePart widgets except "system widget" 2013-10-28 16:29:23 +08:00
chris 42d0afe65c Page form with front end style 2013-10-28 16:29:23 +08:00
saurabhbhatia 2f41828abd Rake task fix args 2013-10-28 12:17:12 +08:00
saurabhbhatia f396493e44 Updated rake task to accept right attrbites and generate site 2013-10-28 11:54:14 +08:00
chris f3b3c94b42 Item control iframe dom
Css for preview
2013-10-26 18:58:53 +08:00
saurabhbhatia 13da6fc6a1 Added a new rake task with arguments 2013-10-25 21:59:03 +08:00
Spen 254f926093 fix new ui announcement preview 2013-10-24 15:03:20 +08:00
chris 3a3f913ae6 Put back old js 2013-10-23 18:39:46 +08:00
chris 8ebfac2b99 Structure link with json 2013-10-23 18:39:40 +08:00
chris a4d1c68299 Structure page with json 2013-10-23 18:39:35 +08:00
chris 6d5f1a2f12 Fix in js and css for pageslide and ad_banner 2013-10-23 18:39:30 +08:00
chris 94c1d7d5a0 Fix homepage in structure, ajaxStop for structure edit, setForm in pageslide.js 2013-10-23 18:39:21 +08:00
Manson Wang 52fa11a429 Fix filemanager delete url path 2013-10-23 10:42:54 +08:00
saurabhbhatia 0a69bbb653 Updated Favicon display and wording 2013-10-22 10:34:10 +08:00
saurabhbhatia 11ef2a13d6 Updated Site preference with Remove Image functionality for orbit bar 2013-10-21 18:45:49 +08:00
saurabhbhatia cf89ed108a Fixed Site Preferences Language 2013-10-21 17:46:29 +08:00
saurabhbhatia e42cf8720e Updated Site Preferences with language fix 2013-10-21 16:53:11 +08:00
Spen ace582be0c fix new ui survey module authorization 2013-10-21 16:52:32 +08:00
Spen c76adc1896 new ui member account privilege fix 2013-10-21 10:42:50 +08:00
chris f9f2232259 Add setForm and resetForm to pageslide.js
Category, AdBanner and Tag are using js to load the values in the form
2013-10-21 06:34:55 +08:00
chris 8e168b0fe1 Remove erro-cover on close and loadComplete 2013-10-20 21:16:17 +08:00
chris 606ac05563 Pageslide fix for error message and focused element 2013-10-20 20:54:23 +08:00
chris 4403ca3504 Add timeout before running script on window load 2013-10-20 19:13:20 +08:00
chris a9343e9a82 Fix new_ui:save_pages 2013-10-20 19:05:19 +08:00
chris 2530dace02 Change the parser_front_end to be used in the structure for page edit, new_ui:save_pages must be run 2013-10-20 18:44:04 +08:00
chris 1ea8d9faf9 Fix typo for ad_banner 2013-10-20 16:31:34 +08:00
chris 9f5bce9351 Review of the uploaders
Rake task to recreate version: uploader:recreate or uploader:recreate name1 name2 ...
2013-10-20 16:07:20 +08:00
chris cce8f1be9b Add migration task for ad_banner 2013-10-19 20:20:40 +08:00
chris 1d32552b51 Add missing effect to banner 2013-10-19 19:54:37 +08:00
chris 9e74d6d47b Add missing js and css for mobile and fix ad_banner 2013-10-19 19:35:33 +08:00
chris 7353b48212 Finalize ad_banner changes: front-end, back-end, mobile 2013-10-19 19:17:59 +08:00
chris fea86ba3a9 Page slide does not reload from server for ad_banner 2013-10-19 19:17:24 +08:00
chris 92d2af13f2 changes for ad_banner 2013-10-19 19:17:04 +08:00
chris 19bf2f2be5 Modify "can_display" to add "postdate" and "deadline" 2013-10-19 19:14:37 +08:00
chris 68a379f8a4 Some fixes for tags: authorization, translation…
can_use now takes all the open_for into account
2013-10-19 19:14:31 +08:00
chris d2602a3a84 Change code for new page slide.js
Conflicts:
	app/views/admin/pages/_form.html.erb
2013-10-19 19:14:14 +08:00
chris f694134150 Remove useless code
Add data-title
2013-10-19 19:14:07 +08:00
Spen 00e9a5df5b new ui member settings account data
Conflicts:
	app/controllers/admin/users_new_interface_controller.rb
	app/views/admin/users_new_interface/show.html.erb
	config/locales/en.yml
	config/routes.rb
2013-10-18 22:28:27 +08:00
saurabhbhatia 32c1defba0 Updated Site Preferences Templates 2013-10-18 20:03:58 +08:00
Spen 14d2b0cc76 fix new ui member account privilege 2013-10-18 19:52:36 +08:00
saurabhbhatia e453efeb6b Revert "add ntu_ga survey init sorting"
This reverts commit 9076d5496a.
2013-10-18 19:51:16 +08:00
saurabhbhatia 3e491380cd Revert "new ui member settings account data"
This reverts commit e1f4ee464b.
2013-10-18 19:51:02 +08:00
Spen e1f4ee464b new ui member settings account data 2013-10-18 19:12:27 +08:00
Spen 9076d5496a add ntu_ga survey init sorting 2013-10-18 19:10:22 +08:00
saurabhbhatia 14fea3638f Updated with some locale fixes in site preferences 2013-10-18 15:26:41 +08:00
chris 7b1b1fa2d3 Fix bug in open_for, it now takes all the open_for into account
Add open_for_user
2013-10-17 14:20:49 +08:00
Manson Wang a67be030c5 Fix JS Path 2013-10-17 11:21:46 +08:00
chris a76164465e Fix editing a tag module 2013-10-16 23:34:51 +08:00
saurabhbhatia d2459f42c0 Added Favicon and default image for orbitbar 2013-10-16 18:50:22 +08:00
saurabhbhatia 155039ac16 Updated fixes for site info - desktop openess, title always displayed 2013-10-16 18:33:57 +08:00
Manson Wang 2bcecc322e Update Ad_Banner for new jQuery
Removed loading module.js in module_widget.html.erb
2013-10-16 12:28:21 +08:00
Spen fbe6017382 new ui ask module lose 2 file 2013-10-16 10:31:16 +08:00
harrybomrah df5cda7a98 new feature added for not loading submenus inside api for desktop 2013-10-16 09:37:39 +08:00
harrybomrah fbea249782 jquery update and also fixed app manager bug .. jquery updated to 1.10.2 and jquery ui updated to 1.10.0 .. gem jquery-rails vs 2.1.4 changed to 3.0.4 and jquery-ui-rails changed to 4.0.5 2013-10-16 09:37:33 +08:00
chris 279ac774d4 Migrate form old ui to new ui (categories, tags and authorizations) 2013-10-15 23:38:44 +08:00
Manson Wang 11b880752d Fix Ad_Banner backend refresh page after edit banner 2013-10-15 19:50:01 +08:00
Manson Wang 76ba7087b2 Fix Ad_Banner frontend for IE8
Fix backend bug in editing banner
Translation Added
2013-10-15 19:37:12 +08:00
Spen b9fbba2962 fix new ui ask module frontend 2013-10-15 17:01:07 +08:00
saurabhbhatia 96c3be68f7 Fixed Enable and Disable, Sitemap and Terms of Use for header and footer 2013-10-15 10:37:49 +08:00
saurabhbhatia 5fb3731430 Show Custom orbit bar icon only for frontend and desktop 2013-10-15 10:07:46 +08:00
saurabhbhatia fb34dc673f Changeable Orbitbar logo 2013-10-14 18:20:26 +08:00
harrybomrah 14ea611f8c fixed file view on server for desktop 2013-10-14 16:49:54 +08:00
harrybomrah 4f04eca74f test for fileview in desktop on server 2013-10-14 16:49:51 +08:00
saurabhbhatia 4120be6f8e fixes in sitemap, site preference 2013-10-14 16:48:50 +08:00
saurabhbhatia ae66e7257f Added Rackprofile to development assets 2013-10-14 10:55:01 +08:00
saurabhbhatia 55fa1cef4f Added Enable and disable terms of use, sitemap 2013-10-11 13:14:37 +00:00
saurabhbhatia 5c8a57e700 Fixed Sitemap Toggle 2013-10-09 09:06:21 +00:00
saurabhbhatia 7ef2dacf00 Fix links in member module 2013-10-09 05:22:51 +00:00
chris 08a8d668ec Display de page contexts in the mobile version as set in structure 2013-10-08 18:11:29 +08:00
chris b4f5fddc5c Add option to skip authorization 2013-10-08 17:18:58 +08:00
chris 315a24556c Fix parser common to skip not found module_app
Do not show default widget if there's no data
2013-10-08 16:42:20 +08:00
chris cce68beff1 Quick fix for front end reloading 2013-10-08 14:52:24 +08:00
chris cf7f7aa29c Fix tag page slide issues 2013-10-08 12:47:31 +08:00
chris 5328a26440 Fix structure position 2013-10-08 12:33:24 +08:00
chris fe1869199e Fix typo, it wasn't executing the filtering on tags 2013-10-07 19:01:59 +08:00
chris 061225f56c Override mongoid-tree callback condition for default position 2013-10-07 18:23:54 +08:00
saurabhbhatia b3e16ce23b Updated desktop widgets controller 2013-10-07 18:13:55 +08:00
saurabhbhatia fad191aefe Updated Desktop Inheritence class 2013-10-07 17:47:13 +08:00
chris 2f866891b1 Limit rubyzip version 2013-10-07 16:25:47 +08:00
chris 48aa7ed638 Update rake for resetting position
Fix codemirror css
2013-10-07 16:23:07 +08:00
chris 21db2a2cba Drag and drop to reorder users 2013-10-07 15:53:54 +08:00
saurabhbhatia 1194bdd9b4 Updated Sitemap with UI fixes - checkbox tag pending 2013-10-07 15:05:50 +08:00
Manson Wang 831bd722b8 Fix site preference openness problem 2013-10-07 14:37:52 +08:00
saurabhbhatia 940a915125 Updated Sitemap with new UI 2013-10-07 09:43:47 +08:00
Manson Wang 792785f7ba Fix relation for Ad_banner and Ad_image
Update site.rake for New UI
2013-10-04 19:20:04 +08:00
chris 43cf6b70b7 Fix structure reorder position 2013-10-04 15:07:24 +08:00
saurabhbhatia ba8da9b6bb Updated button class in template form 2013-10-04 14:41:48 +08:00
saurabhbhatia ff93670949 Updated template editing 2013-10-04 14:41:31 +08:00
Spen f85354c2b6 fix new ui link and archive frontend and widget index 2013-10-04 11:51:36 +08:00
chris 06c48524fd Fix tag to remove ['0', '1'] from the form 2013-10-02 18:36:08 +08:00
chris 31ef12b3da Fix approval link in side bar 2013-10-02 15:35:42 +08:00
saurabhbhatia 08907aa8c1 Search Engine Preferences complete 2013-10-02 15:23:12 +08:00
saurabhbhatia 31b55a0635 Revert "Updated Orbit js to latest version"
This reverts commit b18e61a6c0.
2013-10-02 12:32:45 +08:00
chris 433c8d5da6 Fix link in category for authorization, fix update of auth users 2013-10-02 12:18:20 +08:00
saurabhbhatia b18e61a6c0 Updated Orbit js to latest version 2013-10-02 12:09:44 +08:00
saurabhbhatia 4fe2e31f0e Updated Global css to fix the line height 2013-10-01 17:51:07 +08:00
saurabhbhatia 31e4fb9f39 Updated sidebar line height 2013-10-01 17:47:58 +08:00
saurabhbhatia 9bdb633157 Updated with UI Changes 2013-10-01 17:39:21 +08:00
harrybomrah caca264b50 isotope fixed for all plugins for list and form. 2013-10-01 15:06:49 +08:00
saurabhbhatia 9a0e9ddc82 Revert "Updated Bulletins controller with announcement approval fix"
This reverts commit a9431ad17e.
2013-10-01 15:03:34 +08:00
saurabhbhatia 9f490c87d2 Fixed issue with member plugin delete label 2013-10-01 10:43:37 +08:00
saurabhbhatia a9431ad17e Updated Bulletins controller with announcement approval fix 2013-10-01 10:03:18 +08:00
saurabhbhatia d9ac24470f Updated Member plugin names to remove spaces and generate correct links 2013-09-30 18:25:18 +08:00
harrybomrah 2f673b20ad disabling changes in desktop, missed out in last one 2013-09-30 17:25:02 +08:00
harrybomrah 0a9fd6a4b5 some needed changes in api for desktop 2013-09-30 16:59:50 +08:00
harrybomrah 74ca99a581 delete and sequencing fixed for survey questions 2013-09-30 16:49:27 +08:00
chris dfec6f7642 Fix for user order 2013-09-27 12:46:19 +08:00
461 changed files with 11173 additions and 9206 deletions

No files matched your search

+9 -4
View File
@@ -11,14 +11,14 @@ gem "net-ldap", "~> 0.3.1"
gem 'devise', '1.5.3'
gem 'exception_notification' # Send error trace
gem 'execjs'
gem 'jquery-rails', '2.1.4'
gem 'jquery-ui-rails'
gem 'jquery-rails', '3.0.4'
gem 'jquery-ui-rails', "4.0.5"
gem "select2-rails", '3.3.1'
gem 'kaminari'
gem 'time_difference'
gem "acts_as_unvlogable"
gem 'youtube_it'
gem 'whenever', :require => false
gem 'gotcha'
# gem "memcached", "~> 1.4.3"
# gem "memcache-client"
@@ -39,7 +39,7 @@ gem 'resque-scheduler' # job scheduling
gem 'resque-restriction'
#gem 'rb-readline'
# gem 'ruby-debug19'
gem 'rubyzip'
gem 'rubyzip', '< 1.0.0'
gem 'sunspot_mongo'
gem 'sunspot_solr'
@@ -71,6 +71,9 @@ gem 'redis-search'
gem 'syslog-logger'
gem "recaptcha", :require => "recaptcha/rails"
gem "chartkick"
gem 'usagewatch'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
@@ -98,6 +101,8 @@ group :test, :development do
gem "watchr"
gem "spork"
gem "capybara"
#gem 'rack-mini-profiler'
gem "better_errors"
# gem 'yard'
# gem "bluecloth"
end
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 123 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 127 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 126 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 126 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

@@ -0,0 +1,21 @@
$(function() {
$.pageslide.closeCallback(function(pageslide, item) {
$("tr").removeClass("active");
pageslide.find('.preview').cycle('destroy');
});
$.pageslide.loadComplete(function(pageslide, item) {
$("tr").removeClass("active");
item.closest('tr').addClass('active');
if(item.data('id') == 'new') {
resetForm();
pageslide.find('form').attr('action', '/admin/ad_banners/');
pageslide.find('form').attr('method', 'post');
}
else {
setForm(item.data('form'));
pageslide.find('form').attr('action', '/admin/ad_banners/' + item.data('id'));
pageslide.find('form').attr('method', 'put');
}
setSlideshow(pageslide.find('.preview'), item.data());
});
})
@@ -0,0 +1,20 @@
$(function() {
$.pageslide.closeCallback(function(pageslide, item) {
$("tr").removeClass("active");
});
$.pageslide.loadComplete(function(pageslide, item) {
$("tr").removeClass("active");
item.closest('tr').addClass('active');
if(item.data('id') == 'new') {
resetForm();
pageslide.find('form').attr('action', '/admin/module_apps/' + item.data('module') + '/categories/');
pageslide.find('form').attr('method', 'post');
}
else {
setForm(item.data('form'));
if( $( ".color-picker" ).length ) $(".color-picker").miniColors("value",item.data("form").color);
pageslide.find('form').attr('action', '/admin/module_apps/' + item.data('module') + '/categories/' + item.data('id'));
pageslide.find('form').attr('method', 'put');
}
});
})
+18 -1
View File
@@ -1 +1,18 @@
//= require admin/tags
//= require lib/tags
$(function() {
$.pageslide.closeCallback(function(pageslide, item) {
$('.filter-item').removeClass("active");
});
$.pageslide.loadComplete(function(pageslide, item) {
$('.filter-item').removeClass("active");
item.closest('li').addClass('active');
if(item.hasClass('btn')) {
addTagsTab();
$('#filter-default-tag').fastLiveFilter('.add-default-tags-list', '.filter-item', '.tag');
$('.tags-groups').cardCheck({
item: '.card',
});
};
});
})
+21 -1
View File
@@ -1 +1,21 @@
//= require lib/tags
//= require lib/tags
$(function() {
$.pageslide.closeCallback(function(pageslide, item) {
$('.filter-item').removeClass("active");
});
$.pageslide.loadComplete(function(pageslide, item) {
$('.filter-item').removeClass("active");
item.closest('li').addClass('active');
if(item.data('id') == 'new') {
resetForm();
pageslide.find('form').attr('action', '/admin/tags/');
pageslide.find('form').attr('method', 'post');
}
else {
setForm(item.data('form'));
pageslide.find('form').attr('action', '/admin/tags/' + item.data('id'));
pageslide.find('form').attr('method', 'put');
}
});
})
+83 -57
View File
@@ -65,36 +65,38 @@ if($.support.touch) {
$checked.each(function(i) {
if($(this).attr('type') == "checkbox") {
if($(this).data().disabled) {
$(this).parent('.togglebox').addClass('disabled').closest('li').addClass('disabled');
console.log("d")
$(this).parent('.togglebox').addClass('disable').closest('li').addClass('disabled');
if($(this).prop('checked')) {
$(this).parent('.togglebox').removeClass('disabled').closest('li').removeClass('disabled');
$(this).parent('.togglebox').removeClass('disable').closest('li').removeClass('disabled');
};
} else {
console.log($(this))
if($(this).prop('checked')) {
$(this).parent('.togglebox').addClass('disabled').closest('li').addClass('disabled');
$(this).parent('.togglebox').addClass('disable').closest('li').addClass('disabled');
};
}
$(this).on({
change: function() {
$(this).parent('.togglebox').toggleClass('disabled');
$(this).parent('.togglebox').toggleClass('disable');
$(this).closest('tr').toggleClass('disable');
}
});
};
if($(this).attr('type') == "radio") {
if(!$(this).prop('checked')) {
$(this).parent('.togglebox').addClass('disabled').closest('li').addClass('disabled');
$(this).parent('.togglebox').addClass('disable').closest('li').addClass('disabled');
$(this).closest('tr').addClass('disable');
};
$(this).on({
change: function() {
$checked.not($(".toggle-check[type='checkbox']")).each(function(i) {
if(!$(this).parent('.togglebox').hasClass('disabled')) {
$(this).parent('.togglebox').toggleClass('disabled');
if(!$(this).parent('.togglebox').hasClass('disable')) {
$(this).parent('.togglebox').toggleClass('disable');
$(this).closest('tr').toggleClass('disable');
};
});
$(this).parent('.togglebox').toggleClass('disabled')
$(this).parent('.togglebox').toggleClass('disable')
$(this).closest('tr').toggleClass('disable');
}
});
@@ -110,7 +112,7 @@ if($.support.touch) {
.find('li')
.addClass('disabled')
.find('h6 .togglebox')
.addClass('disabled')
.addClass('disable')
.find('input[type="checkbox"]')
.prop('checked', true)
.attr('checked', 'checked');
@@ -121,37 +123,37 @@ if($.support.touch) {
.find('li')
.removeClass('disabled')
.find('h6 .togglebox')
.removeClass('disabled')
.removeClass('disable')
.find('input[type="checkbox"]')
.prop('checked', false)
.removeAttr('checked');
};
$('.toggle-check').each(function(i) {
var len = $(this).closest('ul').children('li').length,
checLen = $(this).closest('ul').children('li').find('input[checked]').length,
checLen = checLen - $(this).closest('ul').children('li').find('ul').find('input[checked]').length;
if(len == checLen) {
$(this).closest('ul')
.parent('li')
.addClass('disabled')
.children('h6')
.find('.togglebox')
.addClass('disabled')
.find('input[type="checkbox"]')
.prop('checked', true)
.attr('checked', 'checked');
} else {
$(this).closest('ul')
.parent('li')
.removeClass('disabled')
.children('h6')
.find('.togglebox')
.removeClass('disabled')
.find('input[type="checkbox"]')
.prop('checked', false)
.removeAttr('checked');
};
});
// $('.toggle-check').each(function(i) {
// var len = $(this).closest('ul').children('li').length,
// checLen = $(this).closest('ul').children('li').find('input[checked]').length,
// checLen = checLen - $(this).closest('ul').children('li').find('ul').find('input[checked]').length;
// if(len == checLen) {
// $(this).closest('ul')
// .parent('li')
// .addClass('disabled')
// .children('h6')
// .find('.togglebox')
// .addClass('disable')
// .find('input[type="checkbox"]')
// .prop('checked', true)
// .attr('checked', 'checked');
// } else {
// $(this).closest('ul')
// .parent('li')
// .removeClass('disabled')
// .children('h6')
// .find('.togglebox')
// .removeClass('disable')
// .find('input[type="checkbox"]')
// .prop('checked', false)
// .removeAttr('checked');
// };
// });
},
});
};
@@ -473,6 +475,14 @@ if($.support.touch) {
// }
// }
};
$.fn.delayKeyup = function(callback, ms){
var timer = 0;
$(this).keyup(function(){
clearTimeout (timer);
timer = setTimeout(callback, ms);
});
return $(this);
};
}(window.jQuery);
@@ -496,25 +506,8 @@ var ini = function() {
// Open Slide
function openSlide() {
var $openSlide = $('.open-slide'),
$pageslideW;
$(window).width() > 1440 ? $pageslideW = 1024 : $pageslideW = 954;
$(window).resize(function() {
$(this).width() > 1440 ? $pageslideW = 1024 : $pageslideW = 954;
})
if($('.item-groups').length) {
$os = $openSlide.not('.view-page');
$vp = $openSlide.filter('.view-page.open-slide');
$os.pageslide({ W: 624 });
$vp.pageslide({ W: $pageslideW, iframe: true });
} else {
$openSlide.pageslide();
};
$('.bottomnav .open-slide').on('click', function() {
$('.table tr').removeClass('active');
$('.filter-item').removeClass('active')
});
var $openSlide = $('.open-slide');
typeof customOpenSlide === 'function' ? customOpenSlide($openSlide) : $openSlide.pageslide();
}
function formTip() {
@@ -548,8 +541,10 @@ function changeStatusHidden() {
// Document Ready
$(function() {
showFiltersOnPageRefresh();
new ini();
$('.delete').on('click', function() {
$('#main-wrap').on('click', '.delete', function() {
api.modal($(this).attr('rel'));
})
initialState();
@@ -596,4 +591,35 @@ $(function() {
}
formTip()
sidebarNav();
});
});
var showFiltersOnPageRefresh = function(){
var params = getUrlVars(),
paramfilter = params['new_filter[type]'];
// switch (paramfilter){
// case "role":
// paramfilter = "status";
// break;
// }
if( paramfilter ){
$( "#filter" ).addClass('open');
$( '#filter a[href="#collapse-' + paramfilter + '"]').parent().parent().addClass('active');
$( '#filter #collapse-' + paramfilter ).addClass('in');
}
}
var getUrlVars = function(){
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++){
hash = hashes[i].split('=');
vars.push(decodeURIComponent(hash[0]));
vars[decodeURIComponent(hash[0])] = decodeURIComponent(hash[1]);
}
if(vars[0] == window.location.href){
vars =[];
}
return vars;
}
+4
View File
@@ -0,0 +1,4 @@
//= require lib/cycle2/jquery.cycle2.min.js
//= require lib/cycle2/transition/jquery.cycle2.flip.min.js
//= require lib/cycle2/transition/jquery.cycle2.scrollVert.min.js
//= require lib/cycle2/transition/jquery.cycle2.tile.min.js
+1 -1
View File
@@ -6,7 +6,7 @@
//
//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require jquery.ui.all
//= require desktop/jquery.form
//= require desktop/jquery.tinyscrollbar
//= require desktop/jquery.miniColors.min
+37 -38
View File
@@ -168,7 +168,7 @@ var orbitDesktop = function(dom){
o.loadIconCache();
var custom_load = window.location.hash;
if(!custom_load){
$(o.contentHolder).empty().load("/desktop/desktop",function(){
$(o.contentHolder).empty().load("/desktop/desktop_container",function(){
o.desktopData["d_desktop"] = "";
o.initializeDesktop("d_desktop","",false);
})
@@ -226,7 +226,7 @@ var orbitDesktop = function(dom){
this.bindDesktopEvents = function(){ //this function will bind the global handlers to thd desktop, for example doc
$(".docklist a").click(function(){
if( !$( this ).hasClass( 'disable' ) )
if( !$( this ).parent().hasClass( 'disable' ) )
o.menu_item($(this));
return false;
});
@@ -605,10 +605,11 @@ var orbitDesktop = function(dom){
this.menu_item = function(dom,customload,submenuitem){
if(!customload)customload=false;
var target = dom.attr("id");
var url = dom.attr("href");
var target = dom.attr("id"),
url = dom.attr("href"),
submenu_pass = ( dom.attr("sub-menu") == "false" ? false : true);
if(!url)return false;
o.data_method = dom.attr("callback-method");
if(o.currenthtml!=target){
if(o.desktopData[o.currentface] == "undefined"){
@@ -629,33 +630,37 @@ var orbitDesktop = function(dom){
window.o[o.data_method](target,url,cache);
}
}
try {
if(!customload){
o.sub_menu_item($(o.contentHolder).find("*[content-type=menu] a[load=true]"),data);
} else {
if(submenuitem){
o.sub_menu_item($(o.contentHolder).find("*[content-type=menu] a[custom-load="+submenuitem+"]"));
} else {
if( submenu_pass ){
try {
if(!customload){
o.sub_menu_item($(o.contentHolder).find("*[content-type=menu] a[load=true]"),data);
} else {
if(submenuitem){
o.sub_menu_item($(o.contentHolder).find("*[content-type=menu] a[custom-load="+submenuitem+"]"));
} else {
o.sub_menu_item($(o.contentHolder).find("*[content-type=menu] a[load=true]"),data);
}
}
}
} catch(EX){}
} catch(EX){}
}
header_ani();
});
}else{
$(o.contentHolder).html(o.desktopData[o.currentface]);
try{
if(!customload){
o.sub_menu_item($(o.contentHolder).find("*[content-type=menu] a[load=true]"),o.desktopData[o.currentface]);
}else{
if(submenuitem)
o.sub_menu_item($(o.contentHolder).find("*[content-type=menu] a[custom-load="+submenuitem+"]"),o.desktopData[o.currentface]);
else
o.sub_menu_item($(o.contentHolder).find("*[content-type=menu] a[load=true]"),o.desktopData[o.currentface]);
}
}catch(EX){}
if( submenu_pass ){
try{
if(!customload){
o.sub_menu_item($(o.contentHolder).find("*[content-type=menu] a[load=true]"),o.desktopData[o.currentface]);
}else{
if(submenuitem)
o.sub_menu_item($(o.contentHolder).find("*[content-type=menu] a[custom-load="+submenuitem+"]"),o.desktopData[o.currentface]);
else
o.sub_menu_item($(o.contentHolder).find("*[content-type=menu] a[load=true]"),o.desktopData[o.currentface]);
}
}catch(EX){}
}
cache = (o.lastlink == "/desktop/app_manager" ? false : true);
// cache = (o.lastlink == "/desktop/app_manager" ? false : true);
if(typeof o.data_method != "undefined"){
if(o.data_method != ""){
window.o[o.data_method](target,url,cache);
@@ -1095,7 +1100,7 @@ var orbitDesktop = function(dom){
data : options,
success : function(data){
if(data.success == "true"){
if(dom.is(":checked")){ console.log("true");
if(dom.is(":checked")){
elementSettingsData[$e.data("id")].sections.push({"id" : dom.data("section"),"name":sectionDetails.name});
o.notify("Added to " + sectionDetails.name,"success");
}else{
@@ -1119,20 +1124,16 @@ var orbitDesktop = function(dom){
var info_open = function(){
if($appinfo.is(":hidden")){
$('.overview').stop().animate({'width': '+=480'},0 , function(){
$('.tinycanvas').tinyscrollbar_update();
// $('.tinycanvas').tinyscrollbar_update('relative');
});
$appinfo
.css({
'display': 'block',
'margin-left': -480
})
.delay(300)
}).fadeIn(200)
.animate({
'margin-left': 0
}, 500, 'easeInOutQuint');
} else {
$('.tinycanvas').tinyscrollbar_update();
}
}
}
var info_close = function(){
@@ -1143,13 +1144,11 @@ var orbitDesktop = function(dom){
'margin-left': -480
},500 , 'easeInOutQuint', function(){
$('.overview').animate({'width': '-=480'}, 0, function(){
$('.tinycanvas').tinyscrollbar_update();
// $('.tinycanvas').tinyscrollbar_update();
});
$(this).attr("style","");
$(this).fadeOut(300).attr("style","");
});
} else {
$('.tinycanvas').tinyscrollbar_update();
}
}
}
$(window).on('keydown', function(){
if($('#searchbox').val() == 'Search'){
+18 -21
View File
@@ -1,33 +1,30 @@
var banners = [];
var banner_index = 0;
$(document).ready(function() {
$.each($(".dymanic_load"),function(){
if($(this).attr("path")==''){$(this).html("App setting Failed");}
if($(this).attr("path")!=''){
ajax_load_proc($(this),$(this).attr("path"));
}
}
);
$("#main_content").addClass("module");
if($(this).attr("path")==''){
$(this).html("App setting Failed");
}else{
ajax_load_proc($(this),$(this).attr("path"));
}
});
function ajax_load_proc(wapper,url){
$("#main_content").addClass("module");
});
function ajax_load_proc(wapper,url,isBanner){
$.get(encodeURI(url), {}, function(respText,textSta,XML){
if (textSta == 'success') {
wapper.html(respText);
};
if(textSta == 'error')
wapper.html("Loading Failed<br/> <a href='"+$(this).attr('path')+"'>Go See</a>");
if (textSta == 'success') {
wapper.html(respText);
};
if(textSta == 'error')
wapper.html("Loading Failed<br/> <a href='"+$(this).attr('path')+"'>Go See</a>");
});
}
// Ad Banner FX code [start]
function getTimeout() {
return $(this).attr('time_to_next');
}
$(document).ready(function() {
$(document).on('click', '.slideshow img', function()
$(document).on('click', '.orbit-cycle-slideshow img', function()
{
if($(this).attr('link_url')!='')
{
@@ -1,79 +1,81 @@
$(function() {
var bannerEffect,
bannerTime,
bannerSpeed,
bannerW,
bannerH;
$(".ad_banner_ad_fx").change(function () {
bannerTime = $("#pageslide #timeout").val()*1000;
bannerSpeed = $("#pageslide #speed").val()*1000;
bannerTime = parseInt(bannerTime) || 300;
bannerSpeed = parseInt(bannerSpeed) || 300;
slideshow($(this).val(), bannerTime, bannerSpeed);
function slideshow (element, bannerEffect, bannerTime, bannerSpeed) {
element.cycle('destroy');
element.children('img').removeAttr('class');;
element.cycle({
fx: bannerEffect,
timeout: bannerTime,
speed: bannerSpeed,
});
slideshow = function (bannerEffect, bannerTime, bannerSpeed) {
var $preview = $('#pageslide .preview'),
$previewImg = $('#pageslide .preview img');
$preview.cycle('destroy');
$previewImg.removeAttr('style');
$preview.cycle({
fx: bannerEffect,
timeout: bannerTime,
speed: bannerSpeed,
});
}
$('.open-slide').on('click', function() {
var $preview = $('#pageslide .preview'),
$data = $(this).data(),
effect = $data.fx,
time = $data.time,
speed = $data.speed,
W = $data.w,
H = $data.h;
$("#pageslide #timeout").attr("value", time/1000);
$("#pageslide #speed").attr("value", speed/1000);
$("#pageslide #banner_width").attr("value", W);
$("#pageslide #banner_height").attr("value", H);
$("#pageslide #ad_banner_ad_fx option").each(function(i) {
if($(this).attr("value") == effect) {
this.selected = true;
}
});
slideshow(effect, time, speed)
})
};
function setSlideshow(element, data) {
$("#pageslide .ad_banner_ad_fx").children('option:selected').each(function(index, el) {
$(this).val() == 'flipHorz' || $(this).val() == 'flipVert' ? $('.suckIE').show() : $('.suckIE').hide();
});
slideshow(element, data['fx'], 2000, 1000);
}
function preview() {
$('.open-modal').on('click', function() {
var $data = $(this).data()
bannerEffect = $data.fx;
bannerTime = $data.time;
bannerSpeed = $data.speed;
bannerW = $data.w;
bannerH = $data.h;
var _data = $(this).data();
bannerName = _data.name;
bannerEffect = _data.fx;
bannerTime = _data.time;
bannerSpeed = _data.speed;
bannerW = _data.w;
bannerH = _data.h;
$('#preview').modal('show');
});
$('#preview').on('shown', function() {
$(this).attr('aria-labelledby', bannerName.toString()).find('h3').text(bannerName.toString())
if(bannerW > 500) {
var resize = 500/bannerW
bannerW = Math.floor(bannerW*resize);
bannerH = Math.floor(bannerH*resize);
console.log(bannerW)
};
if(bannerH > 300) {
var resize = 300/bannerH
bannerW = Math.floor(bannerW*resize);
bannerH = Math.floor(bannerH*resize);
}
$(this).find('.preview').cycle({
fx: bannerEffect,
timeout: bannerTime,
speed: bannerSpeed,
fit: 1,
width: bannerW,
height: bannerH,
slideshow($(this).find('.preview'), bannerEffect, bannerTime, bannerSpeed);
$(this).find('.preview').css({
'width': bannerW,
'height': bannerH
});
$(this).find('.preview img').css({
'width': '100%',
'height': '100%'
});
});
$('#preview').on('hidden', function() {
$(this).attr('aria-labelledby', '').find('h3').text('')
$(this).find('.preview').cycle('destroy');
$(this).find('.preview img').removeAttr('style');
});
});
};
$(function() {
var bannerName = null,
bannerEffect = null,
bannerTime = null,
bannerSpeed = null,
bannerW = null,
bannerH = null,
$preview = $('#pageslide .preview');
$(".ad_banner_ad_fx").change(function () {
var suckIE = false;
// bannerTime = $("#pageslide #timeout").val()*1000;
// bannerSpeed = $("#pageslide #speed").val()*1000;
bannerTime = parseInt(bannerTime) || 300;
bannerSpeed = parseInt(bannerSpeed) || 300;
$(this).children('option:selected').each(function(index, el) {
$(this).val() == 'flipHorz' || $(this).val() == 'flipVert' ? $('.suckIE').show() : $('.suckIE').hide();
});
slideshow($preview, $(this).val(), 2000, 1000);
});
preview();
});
+17
View File
@@ -0,0 +1,17 @@
/*!
* jQuery Cycle2; build: v20131005
* http://jquery.malsup.com/cycle2/
* Copyright (c) 2013 M. Alsup; Dual licensed: MIT/GPL
*/
/*! core engine; version: 20131003 */
(function(e){"use strict";function t(e){return(e||"").toLowerCase()}var i="20131003";e.fn.cycle=function(i){var n;return 0!==this.length||e.isReady?this.each(function(){var n,s,o,c,r=e(this),l=e.fn.cycle.log;if(!r.data("cycle.opts")){(r.data("cycle-log")===!1||i&&i.log===!1||s&&s.log===!1)&&(l=e.noop),l("--c2 init--"),n=r.data();for(var a in n)n.hasOwnProperty(a)&&/^cycle[A-Z]+/.test(a)&&(c=n[a],o=a.match(/^cycle(.*)/)[1].replace(/^[A-Z]/,t),l(o+":",c,"("+typeof c+")"),n[o]=c);s=e.extend({},e.fn.cycle.defaults,n,i||{}),s.timeoutId=0,s.paused=s.paused||!1,s.container=r,s._maxZ=s.maxZ,s.API=e.extend({_container:r},e.fn.cycle.API),s.API.log=l,s.API.trigger=function(e,t){return s.container.trigger(e,t),s.API},r.data("cycle.opts",s),r.data("cycle.API",s.API),s.API.trigger("cycle-bootstrap",[s,s.API]),s.API.addInitialSlides(),s.API.preInitSlideshow(),s.slides.length&&s.API.initSlideshow()}}):(n={s:this.selector,c:this.context},e.fn.cycle.log("requeuing slideshow (dom not ready)"),e(function(){e(n.s,n.c).cycle(i)}),this)},e.fn.cycle.API={opts:function(){return this._container.data("cycle.opts")},addInitialSlides:function(){var t=this.opts(),i=t.slides;t.slideCount=0,t.slides=e(),i=i.jquery?i:t.container.find(i),t.random&&i.sort(function(){return Math.random()-.5}),t.API.add(i)},preInitSlideshow:function(){var t=this.opts();t.API.trigger("cycle-pre-initialize",[t]);var i=e.fn.cycle.transitions[t.fx];i&&e.isFunction(i.preInit)&&i.preInit(t),t._preInitialized=!0},postInitSlideshow:function(){var t=this.opts();t.API.trigger("cycle-post-initialize",[t]);var i=e.fn.cycle.transitions[t.fx];i&&e.isFunction(i.postInit)&&i.postInit(t)},initSlideshow:function(){var t,i=this.opts(),n=i.container;i.API.calcFirstSlide(),"static"==i.container.css("position")&&i.container.css("position","relative"),e(i.slides[i.currSlide]).css("opacity",1).show(),i.API.stackSlides(i.slides[i.currSlide],i.slides[i.nextSlide],!i.reverse),i.pauseOnHover&&(i.pauseOnHover!==!0&&(n=e(i.pauseOnHover)),n.hover(function(){i.API.pause(!0)},function(){i.API.resume(!0)})),i.timeout&&(t=i.API.getSlideOpts(i.currSlide),i.API.queueTransition(t,t.timeout+i.delay)),i._initialized=!0,i.API.updateView(!0),i.API.trigger("cycle-initialized",[i]),i.API.postInitSlideshow()},pause:function(t){var i=this.opts(),n=i.API.getSlideOpts(),s=i.hoverPaused||i.paused;t?i.hoverPaused=!0:i.paused=!0,s||(i.container.addClass("cycle-paused"),i.API.trigger("cycle-paused",[i]).log("cycle-paused"),n.timeout&&(clearTimeout(i.timeoutId),i.timeoutId=0,i._remainingTimeout-=e.now()-i._lastQueue,(0>i._remainingTimeout||isNaN(i._remainingTimeout))&&(i._remainingTimeout=void 0)))},resume:function(e){var t=this.opts(),i=!t.hoverPaused&&!t.paused;e?t.hoverPaused=!1:t.paused=!1,i||(t.container.removeClass("cycle-paused"),0===t.slides.filter(":animated").length&&t.API.queueTransition(t.API.getSlideOpts(),t._remainingTimeout),t.API.trigger("cycle-resumed",[t,t._remainingTimeout]).log("cycle-resumed"))},add:function(t,i){var n,s=this.opts(),o=s.slideCount,c=!1;"string"==e.type(t)&&(t=e.trim(t)),e(t).each(function(){var t,n=e(this);i?s.container.prepend(n):s.container.append(n),s.slideCount++,t=s.API.buildSlideOpts(n),s.slides=i?e(n).add(s.slides):s.slides.add(n),s.API.initSlide(t,n,--s._maxZ),n.data("cycle.opts",t),s.API.trigger("cycle-slide-added",[s,t,n])}),s.API.updateView(!0),c=s._preInitialized&&2>o&&s.slideCount>=1,c&&(s._initialized?s.timeout&&(n=s.slides.length,s.nextSlide=s.reverse?n-1:1,s.timeoutId||s.API.queueTransition(s)):s.API.initSlideshow())},calcFirstSlide:function(){var e,t=this.opts();e=parseInt(t.startingSlide||0,10),(e>=t.slides.length||0>e)&&(e=0),t.currSlide=e,t.reverse?(t.nextSlide=e-1,0>t.nextSlide&&(t.nextSlide=t.slides.length-1)):(t.nextSlide=e+1,t.nextSlide==t.slides.length&&(t.nextSlide=0))},calcNextSlide:function(){var e,t=this.opts();t.reverse?(e=0>t.nextSlide-1,t.nextSlide=e?t.slideCount-1:t.nextSlide-1,t.currSlide=e?0:t.nextSlide+1):(e=t.nextSlide+1==t.slides.length,t.nextSlide=e?0:t.nextSlide+1,t.currSlide=e?t.slides.length-1:t.nextSlide-1)},calcTx:function(t,i){var n,s=t;return i&&s.manualFx&&(n=e.fn.cycle.transitions[s.manualFx]),n||(n=e.fn.cycle.transitions[s.fx]),n||(n=e.fn.cycle.transitions.fade,s.API.log('Transition "'+s.fx+'" not found. Using fade.')),n},prepareTx:function(e,t){var i,n,s,o,c,r=this.opts();return 2>r.slideCount?(r.timeoutId=0,void 0):(!e||r.busy&&!r.manualTrump||(r.API.stopTransition(),r.busy=!1,clearTimeout(r.timeoutId),r.timeoutId=0),r.busy||(0!==r.timeoutId||e)&&(n=r.slides[r.currSlide],s=r.slides[r.nextSlide],o=r.API.getSlideOpts(r.nextSlide),c=r.API.calcTx(o,e),r._tx=c,e&&void 0!==o.manualSpeed&&(o.speed=o.manualSpeed),r.nextSlide!=r.currSlide&&(e||!r.paused&&!r.hoverPaused&&r.timeout)?(r.API.trigger("cycle-before",[o,n,s,t]),c.before&&c.before(o,n,s,t),i=function(){r.busy=!1,r.container.data("cycle.opts")&&(c.after&&c.after(o,n,s,t),r.API.trigger("cycle-after",[o,n,s,t]),r.API.queueTransition(o),r.API.updateView(!0))},r.busy=!0,c.transLine truncated
function(e){"use strict";function t(t,n){var s,o,c,r=n.autoHeight;if("container"==r)o=e(n.slides[n.currSlide]).outerHeight(),n.container.height(o);else if(n._autoHeightRatio)n.container.height(n.container.width()/n._autoHeightRatio);else if("calc"===r||"number"==e.type(r)&&r>=0){if(c="calc"===r?i(t,n):r>=n.slides.length?0:r,c==n._sentinelIndex)return;n._sentinelIndex=c,n._sentinel&&n._sentinel.remove(),s=e(n.slides[c].cloneNode(!0)),s.removeAttr("id name rel").find("[id],[name],[rel]").removeAttr("id name rel"),s.css({position:"static",visibility:"hidden",display:"block"}).prependTo(n.container).addClass("cycle-sentinel cycle-slide").removeClass("cycle-slide-active"),s.find("*").css("visibility","hidden"),n._sentinel=s}}function i(t,i){var n=0,s=-1;return i.slides.each(function(t){var i=e(this).height();i>s&&(s=i,n=t)}),n}function n(t,i,n,s){var o=e(s).outerHeight(),c=i.sync?i.speed/2:i.speed;i.container.animate({height:o},c)}function s(i,o){o._autoHeightOnResize&&(e(window).off("resize orientationchange",o._autoHeightOnResize),o._autoHeightOnResize=null),o.container.off("cycle-slide-added cycle-slide-removed",t),o.container.off("cycle-destroyed",s),o.container.off("cycle-before",n),o._sentinel&&(o._sentinel.remove(),o._sentinel=null)}e.extend(e.fn.cycle.defaults,{autoHeight:0}),e(document).on("cycle-initialized",function(i,o){function c(){t(i,o)}var r,l=o.autoHeight,a=e.type(l),d=null;("string"===a||"number"===a)&&(o.container.on("cycle-slide-added cycle-slide-removed",t),o.container.on("cycle-destroyed",s),"container"==l?o.container.on("cycle-before",n):"string"===a&&/\d+\:\d+/.test(l)&&(r=l.match(/(\d+)\:(\d+)/),r=r[1]/r[2],o._autoHeightRatio=r),"number"!==a&&(o._autoHeightOnResize=function(){clearTimeout(d),d=setTimeout(c,50)},e(window).on("resize orientationchange",o._autoHeightOnResize)),setTimeout(c,30))})}(jQuery),/*! caption plugin for Cycle2; version: 20130306 */
function(e){"use strict";e.extend(e.fn.cycle.defaults,{caption:"> .cycle-caption",captionTemplate:"{{slideNum}} / {{slideCount}}",overlay:"> .cycle-overlay",overlayTemplate:"<div>{{title}}</div><div>{{desc}}</div>",captionModule:"caption"}),e(document).on("cycle-update-view",function(t,i,n,s){"caption"===i.captionModule&&e.each(["caption","overlay"],function(){var e=this,t=n[e+"Template"],o=i.API.getComponent(e);o.length&&t?(o.html(i.API.tmpl(t,n,i,s)),o.show()):o.hide()})}),e(document).on("cycle-destroyed",function(t,i){var n;e.each(["caption","overlay"],function(){var e=this,t=i[e+"Template"];i[e]&&t&&(n=i.API.getComponent("caption"),n.empty())})})}(jQuery),/*! command plugin for Cycle2; version: 20130707 */
function(e){"use strict";var t=e.fn.cycle;e.fn.cycle=function(i){var n,s,o,c=e.makeArray(arguments);return"number"==e.type(i)?this.cycle("goto",i):"string"==e.type(i)?this.each(function(){var r;return n=i,o=e(this).data("cycle.opts"),void 0===o?(t.log('slideshow must be initialized before sending commands; "'+n+'" ignored'),void 0):(n="goto"==n?"jump":n,s=o.API[n],e.isFunction(s)?(r=e.makeArray(c),r.shift(),s.apply(o.API,r)):(t.log("unknown command: ",n),void 0))}):t.apply(this,arguments)},e.extend(e.fn.cycle,t),e.extend(t.API,{next:function(){var e=this.opts();if(!e.busy||e.manualTrump){var t=e.reverse?-1:1;e.allowWrap===!1&&e.currSlide+t>=e.slideCount||(e.API.advanceSlide(t),e.API.trigger("cycle-next",[e]).log("cycle-next"))}},prev:function(){var e=this.opts();if(!e.busy||e.manualTrump){var t=e.reverse?1:-1;e.allowWrap===!1&&0>e.currSlide+t||(e.API.advanceSlide(t),e.API.trigger("cycle-prev",[e]).log("cycle-prev"))}},destroy:function(){this.stop();var t=this.opts(),i=e.isFunction(e._data)?e._data:e.noop;clearTimeout(t.timeoutId),t.timeoutId=0,t.API.stop(),t.API.trigger("cycle-destroyed",[t]).log("cycle-destroyed"),t.container.removeData(),i(t.container[0],"parsedAttrs",!1),t.retainStylesOnDestroy||(t.container.removeAttr("style"),t.slides.removeAttr("style"),t.slides.removeClass(t.slideActiveClass)),t.slides.each(function(){e(this).removeData(),i(this,"parsedAttrs",!1)})},jump:function(e){var t,i=this.opts();if(!i.busy||i.manualTrump){var n=parseInt(e,10);if(isNaN(n)||0>n||n>=i.slides.length)return i.API.log("goto: invalid slide index: "+n),void 0;if(n==i.currSlide)return i.API.log("goto: skipping, already on slide",n),void 0;i.nextSlide=n,clearTimeout(i.timeoutId),i.timeoutId=0,i.API.log("goto: ",n," (zero-index)"),t=i.currSlide<i.nextSlide,i.API.prepareTx(!0,t)}},stop:function(){var t=this.opts(),i=t.container;clearTimeout(t.timeoutId),t.timeoutId=0,t.API.stopTransition(),t.pauseOnHover&&(t.pauseOnHover!==!0&&(i=e(t.pauseOnHover)),i.off("mouseenter mouseleave")),t.API.trigger("cycle-stopped",[t]).log("cycle-stopped")},reinit:function(){var e=this.opts();e.API.destroy(),e.container.cycle()},remove:function(t){for(var i,n,s=this.opts(),o=[],c=1,r=0;s.slides.length>r;r++)i=s.slides[r],r==t?n=i:(o.push(i),e(i).data("cycle.opts").slideNum=c,c++);n&&(s.slides=e(o),s.slideCount--,e(n).remove(),t==s.currSlide?s.API.advanceSlide(1):s.currSlide>t?s.currSlide--:s.currSlide++,s.API.trigger("cycle-slide-removed",[s,t,n]).log("cycle-slide-removed"),s.API.updateView())}}),e(document).on("click.cycle","[data-cycle-cmd]",function(t){t.preventDefault();var i=e(this),n=i.data("cycle-cmd"),s=i.data("cycle-context")||".cycle-slideshow";e(s).cycle(n,i.data("cycle-arg"))})}(jQuery),/*! hash plugin for Cycle2; version: 20130905 */
function(e){"use strict";function t(t,i){var n;return t._hashFence?(t._hashFence=!1,void 0):(n=window.location.hash.substring(1),t.slides.each(function(s){if(e(this).data("cycle-hash")==n){if(i===!0)t.startingSlide=s;else{var o=s>t.currSlide;t.nextSlide=s,t.API.prepareTx(!0,o)}return!1}}),void 0)}e(document).on("cycle-pre-initialize",function(i,n){t(n,!0),n._onHashChange=function(){t(n,!1)},e(window).on("hashchange",n._onHashChange)}),e(document).on("cycle-update-view",function(e,t,i){i.hash&&"#"+i.hash!=window.location.hash&&(t._hashFence=!0,window.location.hash=i.hash)}),e(document).on("cycle-destroyed",function(t,i){i._onHashChange&&e(window).off("hashchange",i._onHashChange)})}(jQuery),/*! loader plugin for Cycle2; version: 20130307 */
function(e){"use strict";e.extend(e.fn.cycle.defaults,{loader:!1}),e(document).on("cycle-bootstrap",function(t,i){function n(t,n){function o(t){var o;"wait"==i.loader?(r.push(t),0===a&&(r.sort(c),s.apply(i.API,[r,n]),i.container.removeClass("cycle-loading"))):(o=e(i.slides[i.currSlide]),s.apply(i.API,[t,n]),o.show(),i.container.removeClass("cycle-loading"))}function c(e,t){return e.data("index")-t.data("index")}var r=[];if("string"==e.type(t))t=e.trim(t);else if("array"===e.type(t))for(var l=0;t.length>l;l++)t[l]=e(t[l])[0];t=e(t);var a=t.length;a&&(t.hide().appendTo("body").each(function(t){function c(){0===--l&&(--a,o(d))}var l=0,d=e(this),u=d.is("img")?d:d.find("img");return d.data("index",t),u=u.filter(":not(.cycle-loader-ignore)").filter(':not([src=""])'),u.length?(l=u.length,u.each(function(){this.complete?c():e(this).load(function(){c()}).error(function(){0===--l&&(i.API.log("slide skipped; img not loaded:",this.src),0===--a&&"wait"==i.loader&&s.apply(i.API,[r,n]))})}),void 0):(--a,r.push(d),void 0)}),a&&i.container.addClass("cycle-loading"))}var s;i.loader&&(s=i.API.add,i.API.add=n)})}(jQuery),/*! pager plugin for Cycle2; version: 20130525 */
function(e){"use strict";function t(t,i,n){var s,o=t.API.getComponent("pager");o.each(function(){var o=e(this);if(i.pagerTemplate){var c=t.API.tmpl(i.pagerTemplate,i,t,n[0]);s=e(c).appendTo(o)}else s=o.children().eq(t.slideCount-1);s.on(t.pagerEvent,function(e){e.preventDefault(),t.API.page(o,e.currentTarget)})})}function i(e,t){var i=this.opts();if(!i.busy||i.manualTrump){var n=e.children().index(t),s=n,o=s>i.currSlide;i.currSlide!=s&&(i.nextSlide=s,i.API.prepareTx(!0,o),i.API.trigger("cycle-pager-activated",[i,e,t]))}}e.extend(e.fn.cycle.defaults,{pager:"> .cycle-pager",pagerActiveClass:"cycle-pager-active",pagerEvent:"click.cycle",pagerTemplate:"<span>&bull;</span>"}),e(document).on("cycle-bootstrap",function(e,i,n){n.buildPagerLink=t}),e(document).on("cycle-slide-added",function(e,t,n,s){t.pager&&(t.API.buildPagerLink(t,n,s),t.API.page=i)}),e(document).on("cycle-slide-removed",function(t,i,n){if(i.pager){var s=i.API.getComponent("pager");s.each(function(){var t=e(this);e(t.children()[n]).remove()})}}),e(document).on("cycle-update-view",function(t,i){var n;i.pager&&(n=i.API.getComponent("pager"),n.each(function(){e(this).children().removeClass(i.pagerActiveClass).eq(i.currSlide).addClass(i.pagerActiveClass)}))}),e(document).on("cycle-destroyed",function(e,t){var i=t.API.getComponent("pager");i&&(i.children().off(t.pagerEvent),t.pagerTemplate&&i.empty())})}(jQuery),/*! prevnext plugin for Cycle2; version: 20130709 */
function(e){"use strict";e.extend(e.fn.cycle.defaults,{next:"> .cycle-next",nextEvent:"click.cycle",disabledClass:"disabled",prev:"> .cycle-prev",prevEvent:"click.cycle",swipe:!1}),e(document).on("cycle-initialized",function(e,t){if(t.API.getComponent("next").on(t.nextEvent,function(e){e.preventDefault(),t.API.next()}),t.API.getComponent("prev").on(t.prevEvent,function(e){e.preventDefault(),t.API.prev()}),t.swipe){var i=t.swipeVert?"swipeUp.cycle":"swipeLeft.cycle swipeleft.cycle",n=t.swipeVert?"swipeDown.cycle":"swipeRight.cycle swiperight.cycle";t.container.on(i,function(){t.API.next()}),t.container.on(n,function(){t.API.prev()})}}),e(document).on("cycle-update-view",function(e,t){if(!t.allowWrap){var i=t.disabledClass,n=t.API.getComponent("next"),s=t.API.getComponent("prev"),o=t._prevBoundry||0,c=void 0!==t._nextBoundry?t._nextBoundry:t.slideCount-1;t.currSlide==c?n.addClass(i).prop("disabled",!0):n.removeClass(i).prop("disabled",!1),t.currSlide===o?s.addClass(i).prop("disabled",!0):s.removeClass(i).prop("disabled",!1)}}),e(document).on("cycle-destroyed",function(e,t){t.API.getComponent("prev").off(t.nextEvent),t.API.getComponent("next").off(t.prevEvent),t.container.off("swipeleft.cycle swiperight.cycle swipeLeft.cycle swipeRight.cycle swipeUp.cycle swipeDown.cycle")})}(jQuery),/*! progressive loader plugin for Cycle2; version: 20130315 */
function(e){"use strict";e.extend(e.fn.cycle.defaults,{progressive:!1}),e(document).on("cycle-pre-initialize",function(t,i){if(i.progressive){var n,s,o=i.API,c=o.next,r=o.prev,l=o.prepareTx,a=e.type(i.progressive);if("array"==a)n=i.progressive;else if(e.isFunction(i.progressive))n=i.progressive(i);else if("string"==a){if(s=e(i.progressive),n=e.trim(s.html()),!n)return;if(/^(\[)/.test(n))try{n=e.parseJSON(n)}catch(d){return o.log("error parsing progressive slides",d),void 0}else n=n.split(RegExp(s.data("cycle-split")||"\n")),n[n.length-1]||n.pop()}l&&(o.prepareTx=function(e,t){var s,o;return e||0===n.length?(l.apply(i.API,[e,t]),void 0):(t&&i.currSlide==i.slideCount-1?(o=n[0],n=n.slice(1),i.container.one("cycle-slide-added",function(e,t){setTimeout(function(){t.API.advanceSlide(1)},50)}),i.API.add(o)):t||0!==i.currSlide?l.apply(i.API,[e,t]):(s=n.length-1,o=n[s],n=n.slice(0,s),i.container.one("cycle-slide-added",function(e,t){setTimeout(function(){t.currSlide=1,t.API.advanceSlide(-1)},50)}),i.API.add(o,!0)),void 0)}),c&&(o.next=function(){var e=this.opts();if(n.length&&e.currSlide==e.slideCount-1){var t=n[0];n=n.slice(1),e.container.one("cycle-slide-added",function(e,t){c.apply(t.API),t.container.removeClass("cycle-loading")}),e.container.addClass("cycle-loading"),e.API.add(t)}else c.apply(e.API)}),r&&(o.prev=function(){var e=this.opts();if(n.length&&0===e.currSlide){var t=n.length-1,i=n[t];n=n.slice(0,t),e.container.one("cycle-slide-added",function(e,t){t.currSlide=1,t.API.advanceSlide(-1),t.container.removeClass("cycle-loading")}),e.container.addClass("cycle-loading"),e.API.add(i,!0)}else r.apply(e.API)})}})}(jQuery),/*! tmpl plugin for Cycle2; version: 20121227 */
function(e){"use strict";e.extend(e.fn.cycle.defaults,{tmplRegex:"{{((.)?.*?)}}"}),e.extend(e.fn.cycle.API,{tmpl:function(t,i){var n=RegExp(i.tmplRegex||e.fn.cycle.defaults.tmplRegex,"g"),s=e.makeArray(arguments);return s.shift(),t.replace(n,function(t,i){var n,o,c,r,l=i.split(".");for(n=0;s.length>n;n++)if(c=s[n]){if(l.length>1)for(r=c,o=0;l.length>o;o++)c=r,r=r[l[o]]||i;else r=c[i];if(e.isFunction(r))return r.apply(c,s);if(void 0!==r&&null!==r&&r!=i)return r}return i})}})}(jQuery);
//@ sourceMappingURL=jquery.cycle2.js.map
@@ -0,0 +1,2 @@
/* Plugin for Cycle2; Copyright (c) 2012 M. Alsup; v20130909 */
(function(e){"use strict";function t(t){return{preInit:function(e){e.slides.css(n)},transition:function(i,n,s,o,r){var l=i,c=e(n),a=e(s),d=l.speed/2;t.call(a,-90),a.css({display:"block","background-position":"-90px",opacity:1}),c.css("background-position","0px"),c.animate({backgroundPosition:90},{step:t,duration:d,easing:l.easeOut||l.easing,complete:function(){i.API.updateView(!1,!0),a.animate({backgroundPosition:0},{step:t,duration:d,easing:l.easeIn||l.easing,complete:r})}})}}}function i(t){return function(i){var n=e(this);n.css({"-webkit-transform":"rotate"+t+"("+i+"deg)","-moz-transform":"rotate"+t+"("+i+"deg)","-ms-transform":"rotate"+t+"("+i+"deg)","-o-transform":"rotate"+t+"("+i+"deg)",transform:"rotate"+t+"("+i+"deg)"})}}var n,s=document.createElement("div").style,o=e.fn.cycle.transitions,r=void 0!==s.transform||void 0!==s.MozTransform||void 0!==s.webkitTransform||void 0!==s.oTransform||void 0!==s.msTransform;r&&void 0!==s.msTransform&&(s.msTransform="rotateY(0deg)",s.msTransform||(r=!1)),r?(o.flipHorz=t(i("Y")),o.flipVert=t(i("X")),n={"-webkit-backface-visibility":"hidden","-moz-backface-visibility":"hidden","-o-backface-visibility":"hidden","backface-visibility":"hidden"}):(o.flipHorz=o.scrollHorz,o.flipVert=o.scrollVert||o.scrollHorz)})(jQuery);
@@ -0,0 +1,2 @@
/*! Plugin for Cycle2; Copyright (c) 2012 M. Alsup; ver: 20121120 */
(function(a){function b(a,b,c){if(a&&c.style.filter){b._filter=c.style.filter;try{c.style.removeAttribute("filter")}catch(d){}}else!a&&b._filter&&(c.style.filter=b._filter)}"use strict",a.extend(a.fn.cycle.transitions,{fade:{before:function(c,d,e,f){var g=c.API.getSlideOpts(c.nextSlide).slideCss||{};c.API.stackSlides(d,e,f),c.cssBefore=a.extend(g,{opacity:0,display:"block"}),c.animIn={opacity:1},c.animOut={opacity:0},b(!0,c,e)},after:function(a,c,d){b(!1,a,d)}},fadeout:{before:function(c,d,e,f){var g=c.API.getSlideOpts(c.nextSlide).slideCss||{};c.API.stackSlides(d,e,f),c.cssBefore=a.extend(g,{opacity:1,display:"block"}),c.animOut={opacity:0},b(!0,c,e)},after:function(a,c,d){b(!1,a,d)}}})})(jQuery);
@@ -0,0 +1,2 @@
/*! Plugin for Cycle2; Copyright (c) 2012 M. Alsup; ver: 20121120 */
(function(a){"use strict",a.fn.cycle.transitions.scrollVert={before:function(a,b,c,d){a.API.stackSlides(a,b,c,d);var e=a.container.css("overflow","hidden").height();a.cssBefore={top:d?-e:e,left:0,opacity:1,display:"block"},a.animIn={top:0},a.animOut={top:d?e:-e}}}})(jQuery);
@@ -0,0 +1,2 @@
/* Plugin for Cycle2; Copyright (c) 2012 M. Alsup; v20130721 */
(function(e){"use strict";e.fn.cycle.transitions.tileSlide=e.fn.cycle.transitions.tileBlind={before:function(t,i,n,s){t.API.stackSlides(i,n,s),e(i).show(),t.container.css("overflow","hidden"),t.tileDelay=t.tileDelay||"tileSlide"==t.fx?100:125,t.tileCount=t.tileCount||7,t.tileVertical=t.tileVertical!==!1,t.container.data("cycleTileInitialized")||(t.container.on("cycle-destroyed",e.proxy(this.onDestroy,t.API)),t.container.data("cycleTileInitialized",!0))},transition:function(t,i,n,s,o){function r(e){p.eq(e).animate(I,{duration:t.speed,easing:t.easing,complete:function(){(s?v-1===e:0===e)&&t._tileAniCallback()}}),setTimeout(function(){(s?v-1!==e:0!==e)&&r(s?e+1:e-1)},t.tileDelay)}t.slides.not(i).not(n).hide();var c,l,a,d,u,p=e(),f=e(i),y=e(n),v=t.tileCount,h=t.tileVertical,g=t.container.height(),m=t.container.width();h?(l=Math.floor(m/v),d=m-l*(v-1),a=u=g):(l=d=m,a=Math.floor(g/v),u=g-a*(v-1)),t.container.find(".cycle-tiles-container").remove();var I,A={left:0,top:0,overflow:"hidden",position:"absolute",margin:0,padding:0};I=h?"tileSlide"==t.fx?{top:g}:{width:0}:"tileSlide"==t.fx?{left:m}:{height:0};var S=e('<div class="cycle-tiles-container"></div>');S.css({zIndex:f.css("z-index"),overflow:"visible",position:"absolute",top:0,left:0,direction:"ltr"}),S.insertBefore(n);for(var x=0;v>x;x++)c=e("<div></div>").css(A).css({width:v-1===x?d:l,height:v-1===x?u:a,marginLeft:h?x*l:0,marginTop:h?0:x*a}).append(f.clone().css({position:"relative",maxWidth:"none",width:f.width(),margin:0,padding:0,marginLeft:h?-(x*l):0,marginTop:h?0:-(x*a)})),p=p.add(c);S.append(p),f.hide(),y.show().css("opacity",1),r(s?0:v-1),t._tileAniCallback=function(){y.show(),f.hide(),S.remove(),o()}},stopTransition:function(e){e.container.find("*").stop(!0,!0),e._tileAniCallback&&e._tileAniCallback()},onDestroy:function(){var e=this.opts();e.container.find(".cycle-tiles-container").remove()}}})(jQuery);
+440 -4
View File
@@ -32,8 +32,288 @@ function touchSupport() {
})
}
}
function customOpenSlide() {
var $openSlide = $('.open-slide'),
$pageslideW;
$(function(){
$(window).width() > 1440 ? $pageslideW = 1024 : $pageslideW = 954;
$(window).resize(function() {
$(this).width() > 1440 ? $pageslideW = 1024 : $pageslideW = 954;
});
$noiFrame = $openSlide.not('.view-page');
$iFrame = $openSlide.filter('.view-page.open-slide');
$noiFrame.pageslide({
W: 314,
openFn: function(pageslide, element) {
element.addClass('active')
.closest('.item-menu')
.css('display', 'inline-block')
.closest('.navbar-inner')
.addClass('active');
},
closeFn: function(pageslide, element) {
$('.item-menu').removeAttr('style');
element.removeClass('active')
.closest('.navbar-inner')
.removeClass('active');
},
loadComplete: function(pageslide, element) {
$openSlide.removeClass('active');
$('.navbar-inner').removeClass('active');
$('.item-menu').removeAttr('style');
element.addClass('active')
.closest('.item-menu')
.css('display', 'inline-block')
.closest('.navbar-inner')
.addClass('active');
_type = element.hasClass('page') ? 'page' : 'link';
var _id = element.data('id'),
_parent = element.data('parent'),
_edit = element.hasClass('edit') ? true : false;
$('#pageslide .parent').val(_parent);
if(_id !== 'new') {
$('#pageslide form').attr({
'action': $('#pageslide form').attr('action') + '/' + _id,
'id': 'edit_' + _type + '_' + _id,
'method': 'put'
});
setForm(element.data('form'));
} else {
$('#pageslide form').prop('method', 'post')
};
_type == 'page' ? pageSetting(element.data('id'), _edit, pageslide) : linkSetting(element.data('id'), _edit, pageslide);
}
});
$iFrame.pageslide({
W: $pageslideW,
iframe: true,
openFn: function(pageslide, element) {
element.addClass('active')
.closest('.item-menu')
.css('display', 'inline-block')
.closest('.navbar-inner')
.addClass('active');
},
closeFn: function(pageslide, element) {
$('.item-menu').removeAttr('style');
element.removeClass('active')
.closest('.navbar-inner')
.removeClass('active');
$('#main-wrap').css('width', 'auto')
},
loadComplete: function(pageslide, element) {
$openSlide.removeClass('active');
$('.navbar-inner').removeClass('active');
$('.item-menu').removeAttr('style');
element.addClass('active')
.closest('.item-menu')
.css('display', 'inline-block')
.closest('.navbar-inner')
.addClass('active');
pageslide.find('.content').css('padding', 0);
iFrameContent()
}
});
}
function iFrameContent() {
function iFrameFunction(iContents, pc) {
pc.each(function(index, el) {
if($(this).siblings('*').length == 0) {
var _parentH = $(this).parent('*').outerHeight();
$(this).css('height', _parentH);
}
});
iContents.find('#orbit-bar').hide();
iContents.find('.main_wrap').css('margin-top', 0);
iContents.find('a').not('.edit_link a').on('click', function(event) {
event.preventDefault();
}).css('cursor', 'default');
}
$('#pageslide_iframe').load(function() {
var $iContents = $(this).contents(),
$pc = $iContents.find('.page_content');
iFrameFunction($iContents, $pc);
});
}
function pageSetting(id, edit, ps) {
$pageModule = $('#pageslide #page_module_app_id');
$pageF2E = $('#pageslide #page_app_frontend_url');
$pageDivF2E = $('#pageslide #front_url');
$pageDesign = $('#pageslide #page_design');
$pageTheme = $('#pageslide #page_theme_id');
$pageCategory = $('#pageslide #page-category');
$pageCategoryGroup = $('#pageslide #page-category-groups');
$pageTags = $('#pageslide #page-tags');
$pageTagsGroup = $('#pageslide #page-tags-groups');
$pagePublishedTrue = $('#pageslide #page_is_published_true');
$pageCount = $('#pageslide #page_count');
$pageDivCount = $('#pageslide #front_count');
_status = edit;
_ID = id;
if(_status) {
$.ajax({
url: "<%= Rails.application.routes.url_helpers.get_page_setting_json_admin_pages_path %>",
contentType: "application/json; charset=utf-8",
dataType: 'json',
data: {id: id},
cache: false,
})
.done(function(data) {
_boolean = true;
_selectData = data;
$.each(_pageData.design, function(index, val) {
$pageDesign.append('<option value="' + val.main[1] + '" ' + (val.main[1] == _selectData.design.main ? 'selected="selected"' : '') + '>' + val.main[0] + '</option>');
if(val.main[1] == _selectData.design.main) {
$.each(val.sub, function(index, val) {
$pageTheme.append('<option value="' + $(this)[1] + '" ' + ($(this)[1] == _selectData.design.sub ? 'selected="selected"' : '') + '>' + $(this)[0]+ '</option>')
});
};
});
$.each(_pageData.module, function(index, val) {
$pageModule.append('<option value="' + val.main[1] + '" ' + (val.main[1] == _selectData.module.main ? 'selected="selected"' : '') + '>' + val.main[0] + '</option>');
if(_selectData.module.main && val.main[1] == _selectData.module.main) {
$pageDivF2E.show();
$.each(val.sub, function(index, val) {
$pageF2E.append('<option value="' + $(this)[1] + '" ' + ($(this)[1] == _selectData.module.sub ? 'selected="selected"' : '') + '>' + $(this)[0]+ '</option>')
});
$.each(val.count, function(index, val) {
$pageCount.append('<option value="' + val + '" ' + (val == _selectData.module.count ? 'selected="selected"' : '') + '>' + val+ '</option>');
});
$pageDivCount.show();
if(val.category.length > 0) {
$.each(val.category, function(index, val) {
var _arr = $.inArray($(this)[1], _selectData.module.category);
$pageCategory.append('<label class="checkbox"><input type="checkbox" name="page[category][]" value="'+ $(this)[1] + '">'+ $(this)[0] +'</label>');
if(_arr !== -1) {
$pageCategory.find('input[type="checkbox"]').eq(index).prop('checked', true);
}
var $all = $pageCategory.siblings('.checkbox').children('.select_all')
_selectData.module.category.length > 1 && _selectData.module.category.length == index + 1 ? $all.prop('checked', true) : $all.prop('checked', false);
});
$pageCategoryGroup.show();
}
if(val.tags.length > 0) {
$.each(val.tags, function(index, val) {
var _arr = $.inArray($(this)[1], _selectData.module.tags);
$pageTags.append('<label class="checkbox"><input type="checkbox" name="page[tag][]" value="'+ $(this)[1] + '">'+ $(this)[0] +'</label>');
if(_arr !== -1) {
$pageTags.find('input[type="checkbox"]').eq(index).prop('checked', true);
}
var $all = $pageTags.siblings('.checkbox').children('.select_all')
_selectData.module.tags.length > 1 && _selectData.module.tags.length == index + 1 ? $all.prop('checked', true) : $all.prop('checked', false);
});
$pageTagsGroup.show();
}
getView(_selectData.module.main, id);
};
});
_selectData.module.public ? $pagePublishedTrue.prop('checked', true) : $pagePublishedTrue.prop('checked', false);
$.each(_selectData.module.link, function(index, val) {
if(val[1]) {
$('#pageslide .active-link.' + val[0]).find('input[type="checkbox"]').prop('checked', true).end().find('.active-mune').slideDown(300);
$('#pageslide .active-link.' + val[0]).find('input[type="radio"]').eq(val[2]).prop('checked', true);
}
});
$('#pageslide').find('.nano').nanoScroller({ scrollTop: 0, iOSNativeScrolling: true });
$pagePublishedTrue.prop('checked') ? $('.link-options').slideDown(300) : $('.link-options').slideUp(300);
})
.fail(function(jqXHR, textStatus) {
console.log(jqXHR.status, textStatus)
var $errorMsg = '<div class="error-cover"><div class="msg"><i class="icons-warning"></i><p>Sorry! Something is wrong</p></div></div>'
$('#pageslide .view-page').append($errorMsg);
});
} else {
_boolean = false;
$.each(_pageData.design, function(index, val) {
$pageDesign.append('<option value="' + val.main[1] + '" ' + (val.main[2] ? 'selected="selected"' : '') + '>' + val.main[0] + '</option>');
if(val.main[2]) {
$.each(val.sub, function(index, val) {
$pageTheme.append('<option value="' + $(this)[1] + '">' + $(this)[0]+ '</option>')
});
};
});
$.each(_pageData.module, function(index, val) {
$pageModule.append('<option value="' + val.main[1] + '">' + val.main[0] + '</option>');
});
};
};
function linkSetting(id, edit, ps) {
$linkPublishedTrue = ps.find('#link_is_published_true');
_status = edit;
if(_status) {
$.ajax({
url: "<%= Rails.application.routes.url_helpers.get_link_setting_json_admin_links_path %>",
contentType: "application/json; charset=utf-8",
dataType: 'json',
data: {id: id},
cache: false,
})
.done(function(data) {
_linkData = data;
console.log($linkPublishedTrue)
data.public ? $linkPublishedTrue.prop('checked', true) : $linkPublishedTrue.prop('checked', false);
$linkPublishedTrue.prop('checked') ? $('.link-options').slideDown(300) : $('.link-options').slideUp(300);
$.each(_linkData.link, function(index, val) {
if(val[1]) {
$('#pageslide .active-link.' + val[0]).find('input[type="checkbox"]').prop('checked', true).end().find('.active-mune').slideDown(300);
$('#pageslide .active-link.' + val[0]).find('input[type="radio"]').eq(val[2]).prop('checked', true);
}
});
$('#pageslide').find('.nano').nanoScroller({ scrollTop: 0, iOSNativeScrolling: true });
})
.fail(function(jqXHR, textStatus) {
console.log(jqXHR.status, textStatus)
var $errorMsg = '<div class="error-cover"><div class="msg"><i class="icons-warning"></i><p>Sorry! Something is wrong</p></div></div>'
$('#pageslide .view-page').append($errorMsg);
});
}
}
function getPageData() {
$.getJSON("<%= Rails.application.routes.url_helpers.get_page_design_module_json_admin_items_path %>").done(function(data) {
_pageData = data;
});
}
function getView(module_id, id) {
var _data = {};
_data.val = $('#pageslide #page_app_frontend_url option:selected').val();
_data.id = id;
_data.module_id = module_id
$.ajax({
url: "<%= Rails.application.routes.url_helpers.get_display_style_admin_pages_path %>",
dataType: "script",
data: _data,
contentType: "application/html; charset=utf-8",
cache: false,
});
}
$(function() {
$pageModule = null,
$pageF2E = null,
$pageDivF2E = null,
$pageDesign = null,
$pageTheme = null,
$pageCategory = null,
$pageCategoryGroup = null,
$pageTags = null,
$pageTagsGroup = null,
$pagePublishedTrue = null,
$pageCount = null,
$pageDivCount = null,
$linkKey = null,
$linkUrl = null,
$linkTitle = null,
$linkPublishedTrue = null,
_boolean = null,
_ID = null,
_type = null,
_status = null,
_pageData = null,
_selectData = null,
_linkData = null;
$('.sortable').nestedSortable({
handle: '.brand',
items: 'li',
@@ -43,8 +323,18 @@ $(function(){
placeholder: 'placeholder',
startCollapsed: true,
disableNesting: 'no-nest',
stop: function(event, ui) {
$.post("<%= Rails.application.routes.url_helpers.admin_update_position_path %>", { id: ui.item.attr('id'), parent_id: (ui.item.parent().closest('li').attr('id') || ui.item.parent().closest('ol').attr('id')), position: ui.item.index() } );
update: function(event, ui) {
var position = null;
if($(ui.item).closest('ol').hasClass('item-groups')) {
position = $(ui.item).index() - 1;
} else {
position = $(ui.item).index();
};
var next_sibling = $(ui.item).next(),
next_sibling_id = null;
if( next_sibling )
next_sibling_id = next_sibling.attr("id");
$.post("<%= Rails.application.routes.url_helpers.update_position_admin_items_path %>", { id: ui.item.attr('id'), parent_id: (ui.item.parent().closest('li').attr('id') || ui.item.parent().closest('ol').attr('id')), position: position, "next_sibling_id" : next_sibling_id } );
}
});
$(".sortable").delegate(".brand, .delete", clickEvent, function(e){
@@ -59,15 +349,161 @@ $(function(){
}
e.preventDefault();
});
$("#dialog").on('show', function (e) {
$(this).find('.delete-item').on(clickEvent, function() {
$target.parents('.navbar').parent('li').remove();
$('ol').not('.sortable').each(function() {
if($(this).children('li').index() == -1) {
$(this).remove();
}
});
itemsQuantity();
$('#dialog').modal('hide');
e.preventDefault();
})
});
$('#pageslide').on('change', '.change', function(event) {
var _data, _select, _subData, $subSelete;
if(event.target.id !== 'page_app_frontend_url') {
if(event.target.id == 'page_design') {
_data = _pageData.design;
_select = _boolean ? _selectData.design : null;
_subData = 'template';
$subSelete = $('#pageslide #page_theme_id');
} else {
_data = _pageData.module;
_select = _boolean ? _selectData.module : null;
_subData = 'module';
$subSelete = $('#pageslide #page_app_frontend_url');
$pageDivF2E.show();
};
$(this).children("option:selected").each(function () {
var _val = $(this).val();
$subSelete.empty();
$pageCount.empty();
if(_val) {
$.each(_data, function(index, val) {
if(_val == val.main[1]) {
$.each(val.sub, function(index, val) {
var _selected = _select && $(this)[1] == _select.sub ? 'selected="selected"' : '';
$subSelete.append('<option value="' + $(this)[1] + '" ' + _selected.sub + '>' + $(this)[0] + '</option>');
});
$.each(val.count, function(index, val) {
$pageCount.append('<option value="' + val + '" ' + (_select && _select.main == _val && val == _selectData.module.count ? 'selected="selected"' : '') + '>' + val+ '</option>');
});
getView(val.main[1]);
$pageDivCount.show();
if(event.target.id == 'page_module_app_id') {
$pageCategory.empty();
if(val.category.length > 0) {
$.each(val.category, function(index, val) {
if(val !== 0) {
var _arr = _select ? $.inArray($(this)[1], _select.category) : '';
$pageCategory.append('<label class="checkbox"><input type="checkbox" name="page[category][]" value="'+ $(this)[1] + '">'+ $(this)[0] +'</label>');
if(_boolean && _arr !== -1) {
$pageCategory.find('input[type="checkbox"]').eq(index).prop('checked', true);
}
var $all = $pageCategory.siblings('.checkbox').children('.select_all');
_boolean && _val == _select.main && _select.category.length > 1 && _select.category.length == index + 1 ? $all.prop('checked', true) : $all.prop('checked', false);
}
});
$pageCategoryGroup.show();
} else {
$pageCategoryGroup.hide();
}
$pageTags.empty();
if(val.tags.length > 0) {
$.each(val.tags, function(index, val) {
if(val !== 0) {
var _arr = _select ? $.inArray($(this)[1], _select.tags) : '';
$pageTags.append('<label class="checkbox"><input type="checkbox" name="page[tag][]" value="'+ $(this)[1] + '">'+ $(this)[0] +'</label>');
if(_boolean && _arr !== -1) {
$pageTags.find('input[type="checkbox"]').eq(index).prop('checked', true);
}
var $all = $pageTags.siblings('.checkbox').children('.select_all');
_boolean && _val == _select.main && _select.tags.length > 1 && _select.tags.length == index + 1 ? $all.prop('checked', true) : $all.prop('checked', false);
}
});
$pageTagsGroup.show();
} else {
$pageTagsGroup.hide();
}
}
return false;
};
});
} else {
$pageCategory.empty();
$pageCategoryGroup.hide();
$pageTags.empty();
$pageTagsGroup.hide();
$pageF2E.empty();
$pageDivF2E.hide();
$pageCount.empty();
$pageDivCount.hide();
}
});
}
else {
getView($pageModule.val());
}
event.preventDefault();
});
$('#pageslide').on('change', '.checkbox-groups input', function(event) {
var $checked = $(this);
if($checked.attr('type') == 'checkbox') {
if($checked.hasClass('select_all')) {
if($checked.prop('checked')) {
$checked.closest('.checkbox').siblings('.groups').find('input[type="checkbox"]').prop('checked', true);
} else {
$checked.closest('.checkbox').siblings('.groups').find('input[type="checkbox"]').prop('checked', false);
}
} else if($checked.hasClass('lang-enable')) {
var checkboxes = $checked.closest('.groups').find('input[type="checkbox"]');
if($checked.prop('checked')) {
$checked.closest('.active-link').addClass('active').siblings('active-link').removeClass('active').end().find('.active-mune').slideDown(300);
if(_status) {
var _index = $checked.closest('.link-options').find('.active').index() - 1,
_index = _type == 'page' ? _selectData.module.link[_index][1] : _linkData.link[_index][1] ;
$checked.closest('.active-link').find('.active-mune input').eq(_index).prop('checked', true);
}
} else {
$('.active-link').removeClass('active');
$checked.closest('.active-link').find('.active-mune').slideUp(300, function() {
$(this).find('input:eq(0)').prop('checked', true);
})
}
} else {
var _l = $checked.closest('.groups').find('input[type="checkbox"]').length,
_c = $checked.closest('.groups').find('input[type="checkbox"]:checked').length;
if(_l == _c) {
$checked.closest('.groups').siblings('.checkbox').find('.select_all').prop('checked', true)
} else {
$checked.closest('.groups').siblings('.checkbox').find('.select_all').prop('checked', false)
};
}
return false;
} else if($checked.attr('type') == 'radio' && !$(this).closest('div').hasClass('active-mune')) {
$('#pageslide #page_is_published_true').prop('checked') || $('#pageslide #link_is_published_true').prop('checked') ? $('.link-options').slideDown(300) : $('.link-options').slideUp(300);
return false;
}
event.preventDefault();
});
tip();
touchSupport()
itemsQuantity();
getPageData();
});
function reloadStructure(){
$.pageslide.close();
openSlide();
customOpenSlide();
tip();
touchSupport()
itemsQuantity();
@@ -0,0 +1,142 @@
function getPageData() {
$.getJSON("<%= Rails.application.routes.url_helpers.get_page_module_json_admin_page_parts_path %>").done(function(data) {
_pageData = data;
});
}
function getView(module_id, id) {
var _data = {};
_data.val = $('#module_widget #page_part_widget_path option:selected').val();
_data.id = id;
_data.module_id = module_id
$.ajax({
url: "<%= Rails.application.routes.url_helpers.get_display_style_admin_page_parts_path %>",
dataType: "script",
data: _data,
contentType: "application/html; charset=utf-8",
cache: false,
});
}
$(function() {
$pageModule = $('#module_widget #page_part_module_app'),
$pageF2E = $('#module_widget #page_part_widget_path'),
$pageCategory = $('#module_widget #page-category'),
$pageCategoryGroup = $('#module_widget #page-category-groups'),
$pageTags = $('#module_widget #page-tags'),
$pageTagsGroup = $('#module_widget #page-tags-groups'),
$pageCount = $('#module_widget #page_count'),
_boolean = null,
_ID = null,
_type = null,
_status = null,
_pageData = null,
_selectData = null;
$('#module_widget').on('change', '.change', function(event) {
var _data, _select, $subSelete;
if(event.target.id !== 'page_part_widget_path') {
_data = _pageData.module;
_select = _boolean ? _selectData.module : null;
$subSelete = $('#module_widget #page_part_widget_path');
$(this).children("option:selected").each(function () {
var _val = $(this).val();
$subSelete.empty();
$pageCount.empty();
if(_val) {
$.each(_data, function(index, val) {
if(_val == val.main[1]) {
$.each(val.sub, function(index, val) {
var _selected = _select && $(this)[1] == _select.sub ? 'selected="selected"' : '';
$subSelete.append('<option value="' + $(this)[1] + '" ' + _selected.sub + '>' + $(this)[0] + '</option>');
});
$.each(val.count, function(index, val) {
$pageCount.append('<option value="' + val + '" ' + (_select && _select.main == _val && val == _selectData.module.count ? 'selected="selected"' : '') + '>' + val+ '</option>');
});
getView(val.main[1]);
if(event.target.id == 'page_part_module_app') {
$pageCategory.empty();
if(val.category.length > 0) {
$.each(val.category, function(index, val) {
if(val !== 0) {
var _arr = _select ? $.inArray($(this)[1], _select.category[1]) : '';
$pageCategory.append('<label class="checkbox"><input type="checkbox" name="page[category][]" value="'+ $(this)[1] + '">'+ $(this)[0] +'</label>');
if(_select && !_select.category[0] && _arr !== -1) {
$pageCategory.find('input[type="checkbox"]').eq(index).prop('checked', true);
}
_select && _val == _select.main && _select.category[0] ? $pageCategory.siblings('.checkbox').children('.select_all').prop('checked', true) : '';
}
});
$pageCategoryGroup.show();
} else {
$pageCategoryGroup.hide();
}
if(val.tags.length > 0) {
$pageTags.empty();
$.each(val.tags, function(index, val) {
if(val !== 0) {
var _arr = _select ? $.inArray($(this)[1], _select.tags[1]) : '';
$pageTags.append('<label class="checkbox"><input type="checkbox" name="page[tag][]" value="'+ $(this)[1] + '">'+ $(this)[0] +'</label>');
if(_select && !_select.tags[0] && _arr !== -1) {
$pageTags.find('input[type="checkbox"]').eq(index).prop('checked', true);
}
_select && _val == _select.main && _select.tags[0] ? $pageTags.siblings('.checkbox').children('.select_all').prop('checked', true) : '';
}
});
$pageTagsGroup.show();
} else {
$pageTagsGroup.hide();
}
}
return false;
};
});
} else {
$pageCategory.empty();
$pageCategoryGroup.hide();
$pageTags.empty();
$pageTagsGroup.hide();
$pageF2E.empty();
$pageCount.empty();
}
});
}
else {
getView($pageModule.val());
}
event.preventDefault();
});
$('#module_widget').on('change', '.checkbox-groups input', function(event) {
var $checked = $(this);
if($checked.attr('type') == 'checkbox') {
if($checked.hasClass('select_all') && $checked.prop('checked')) {
$checked.closest('.checkbox').siblings('.groups').find('input[type="checkbox"]').prop('checked', false);
} else if($checked.prop('checked') && !$checked.hasClass('lang-enable')) {
$checked.closest('.groups').siblings('.checkbox').find('.select_all').prop('checked', false);
} else {
if($checked.prop('checked')) {
$checked.closest('.active-link').addClass('active').siblings('active-link').removeClass('active').end().find('.active-mune').slideDown(300);
if(_status) {
var _index = $checked.closest('.link-options').find('.active').index() - 1,
_index = _type == 'page' ? _selectData.module.link[_index][1] : _linkData.link[_index][1] ;
$checked.closest('.active-link').find('.active-mune input').eq(_index).prop('checked', true);
}
} else {
$('.active-link').removeClass('active');
$checked.closest('.active-link').find('.active-mune').slideUp(300, function() {
$(this).find('input:eq(0)').prop('checked', true);
})
}
}
return false;
} else if($checked.attr('type') == 'radio' && !$(this).closest('div').hasClass('active-mune')) {
$('#module_widget #page_is_published_true').prop('checked') || $('#module_widget #link_is_published_true').prop('checked') ? $('.link-options').slideDown(300) : $('.link-options').slideUp(300);
return false;
}
event.preventDefault();
});
getPageData();
});
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -55,6 +55,13 @@
} else {
$viewPage.find('.content').load(url, function(){
$viewPage.clone(true).appendTo( $pageslide.empty() ).show();
if($('#filter-default-tag').length) {
$('#filter-default-tag').fastLiveFilter('.add-default-tags-list', '.filter-item', '.tag');
addTagsTab();
$('#view-page .card').cardCheck({
item: $('#view-page input[type="checkbox"]'),
});
};
if(callback)callback.call(this,$viewPage,element);
});
}
-9
View File
@@ -1,9 +0,0 @@
/**
* jQuery.Preload - Multifunctional preloader
* Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com
* Dual licensed under MIT and GPL.
* Date: 3/25/2009
* @author Ariel Flesler
* @version 1.0.8
*/
;(function($){var h=$.preload=function(c,d){if(c.split)c=$(c);d=$.extend({},h.defaults,d);var f=$.map(c,function(a){if(!a)return;if(a.split)return d.base+a+d.ext;var b=a.src||a.href;if(typeof d.placeholder=='string'&&a.src)a.src=d.placeholder;if(b&&d.find)b=b.replace(d.find,d.replace);return b||null}),data={loaded:0,failed:0,next:0,done:0,total:f.length};if(!data.total)return finish();var g=$(Array(d.threshold+1).join('<img/>')).load(handler).error(handler).bind('abort',handler).each(fetch);function handler(e){data.element=this;data.found=e.type=='load';data.image=this.src;data.index=this.index;var a=data.original=c[this.index];data[data.found?'loaded':'failed']++;data.done++;if(d.enforceCache)h.cache.push($('<img/>').attr('src',data.image)[0]);if(d.placeholder&&a.src)a.src=data.found?data.image:d.notFound||a.src;if(d.onComplete)d.onComplete(data);if(data.done<data.total)fetch(0,this);else{if(g&&g.unbind)g.unbind('load').unbind('error').unbind('abort');g=null;finish()}};function fetch(i,a,b){if(a.attachEvent&&data.next&&data.next%h.gap==0&&!b){setTimeout(function(){fetch(i,a,1)},0);return!1}if(data.next==data.total)return!1;a.index=data.next;a.src=f[data.next++];if(d.onRequest){data.index=a.index;data.element=a;data.image=a.src;data.original=c[data.next-1];d.onRequest(data)}};function finish(){if(d.onFinish)d.onFinish(data)}};h.gap=14;h.cache=[];h.defaults={threshold:2,base:'',ext:'',replace:''};$.fn.preload=function(a){h(this,a);return this}})(jQuery);
+13
View File
@@ -0,0 +1,13 @@
/**
* jQuery.Preload
* https://github.com/htmlhero/jQuery.preload
*
* Created by Andrew Motoshin
* http://htmlhero.ru
*
* Version: 1.5.0
* Requires: jQuery 1.6+
*
*/
!function(a){a.preload=function(){var b=[],c=function(a){for(var c=0;c<b.length;c++)if(b[c].src===a.src)return b[c];return b.push(a),a},d=function(a,b,c){"function"==typeof b&&b.call(a,c)};return function(b,e,f){if("undefined"!=typeof b){"string"==typeof b&&(b=[b]),2===arguments.length&&"function"==typeof e&&(f=e,e=0);var g,h=b.length;if(e>0&&h>e&&(g=b.slice(e,h),b=b.slice(0,e),h=b.length),!h)return d(b,f,!0),void 0;for(var i,j=arguments.callee,k=0,l=function(){k++,k===h&&(d(b,f,!g),j(g,e,f))},m=0;m<b.length;m++)i=new Image,i.src=b[m],i=c(i),i.complete?l():a(i).on("load error",l)}}}();var b=function(b,c){var d,e,f,g,h,i=[],j=new RegExp("url\\(['\"]?([^\"')]*)['\"]?\\)","i");return c.recursive&&(b=b.find("*").add(b)),b.each(function(){for(d=a(this),e=d.css("background-image")+","+d.css("border-image-source"),e=e.split(","),h=0;h<e.length;h++)f=e[h],-1===f.indexOf("about:blank")&&-1===f.indexOf("data:image")&&(g=j.exec(f),g&&i.push(g[1]));"IMG"===this.nodeName&&i.push(this.src)}),i};a.fn.preload=function(){var c,d;1===arguments.length?"object"==typeof arguments[0]?c=arguments[0]:d=arguments[0]:arguments.length>1&&(c=arguments[0],d=arguments[1]),c=a.extend({recursive:!0,part:0},c);var e=this,f=b(e,c);return a.preload(f,c.part,function(a){a&&"function"==typeof d&&d.call(e.get())}),this}}(jQuery);
+15 -20
View File
@@ -80,27 +80,22 @@ $(function() {
_data.actionable ? $('#dialog').modal('show') : "";
e.preventDefault();
});
$("#dialog").on(clickEvent, '.delete-item', function() {
var _v = [],
_t = $t.attr("rel");
$("tbody .list-check:checked").each(function() {
_v.push(this.value);
$('.delete-item').on(clickEvent, function() {
var _v = [];
$("tbody .list-check").each(function() {
this.checked && _v.push("ids[]="+this.value)
});
$.ajax({
url : _t,
type:"get",
data : {"ids":_v},
dataType : "json",
success : function(){
actionSuccess(_data.checkAction);
}
})
var _t = $t.attr("rel");
if(_t.indexOf("?") > -1) {
$.ajax(_t + "&" + _v.join("&")).done(function() {
actionSuccess(_data.checkAction)
});
} else {
$.ajax(_t + "?" + _v.join("&")).done(function() {
actionSuccess(_data.checkAction)
});
}
$('#dialog').modal('hide');
$('.list-active-btn').addClass('disabled').data('actionable', false);
})
});
});
@@ -0,0 +1,56 @@
function dragMode() {
$('#card-list').sortable({
placeholder: "highlight",
update: function( event, ui ) {
var _userPosition = {};
_userPosition.position = $(ui.item).index();
_userPosition.id = $(ui.item).data('user-id');
$.ajax({
url: "<%= Rails.application.routes.url_helpers.update_order_card_admin_users_new_interface_index_path %>",
type: 'POST',
dataType: 'script',
data: {users: _userPosition}
});
}
});
$('#card-list').disableSelection();
}
function typeMode() {
var _userPosition = [];
$('#list-view tbody tr').each(function(i) {
$(this).data('user-index', i);
});
$('#member-list').on(clickEvent, '.edit_position', function(e){
var $input = $('<input type="text">'),
$cross = $('<a class="btn btn-mini"><i class="icons-cross"/></a>');
if($(this).siblings('input').length) {
$(this).siblings('input').attr('type', 'text').after($cross);
} else {
$(this).after($cross);
$(this).after($input);
}
$(this).hide();
$input.val($(this).text());
e.preventDefault();
$cross.click(function(event) {
$input.remove();
$(this).siblings('a').show().end().remove();
});
});
$('.bottomnav').on(clickEvent, '.btn', function(e) {
_userPosition = [];
$('#member-list tbody input').each(function(i) {
_userPosition.push([$(this).val(), $(this).siblings('a').data('user-id')]);
});
$.ajax({
url: "<%= Rails.application.routes.url_helpers.update_order_list_admin_users_new_interface_index_path %>",
type: 'POST',
dataType: 'script',
data: {users: _userPosition}
});
e.preventDefault();
});
};
+57 -63
View File
@@ -1,72 +1,66 @@
//Preview need a link in form as Ex and a corresponding PUT action in controller
//Ex preview trigger:
// <%= link_to "NewPreview", realtime_preview_admin_ad_banner_path(ad_banner_tab) , :class=>'preview_trigger'%>
$(function() {
$(".post_preview").click(function(){
$("#main-wrap").after("<span id='show_preview'></span>");
$(document).ready(function() {
// $(".post_preview").click(function(e){
// $("#main-wrap").after("<span id='show_preview'></span>");
// e.preventDefault();
// var form = $(this).parents("form").first()
// //var cont = form["content"].value;
// // $.ajax({
// // type: 'POST',
// // url: $(this).attr("href")+'?preview=true',
// // data: form.serialize(),
// // dataType: "script",
// // success: function (msg) {
// // $("#"+start_modal_with_id).modal('show'); },
// // error: function(){
// // alert("ERROR");
// // }
// // });
// url = "/panel/news/back_end/news_bulletins/preview?preview=true"
// // alert(url)
// form.attr("action",url);
// form.submit();
// //return false;
// });
$("button.post_preview").click(function(){
var btn = document.getElementById("button_for_preview");
var attrs = btn.attributes;
var url = attrs['url'];
// url = url.replace("url=","");
$("form.previewable").ajaxSubmit({
beforeSubmit: function(a,f,o){
$("#main-wrap").after("<span id='show_preview'></span>");
o.dataType = 'script';
o.url = url.nodeValue;
o.type = 'post';
},success: function(msg) { }
});
})
// $("form.nccu_ajax_form").ajaxForm({
// beforeSubmit: function(a,f,o) {
// // if(clicked_what.hasClass("post_preview")){
// // $("#main-wrap").after("<span id='show_preview'></span>");
// // o.dataType = 'script';
// // o.url = clicked_what.attr("url");
// // }
// },
// success: function(data) {
// // if(!clicked_what.hasClass("post_preview")){
// // window.location = data.redirect_url;
// // }
// }
// })
$("a.preview_trigger").on('click',function(){
$.post($(this).attr('url'), $(".previewable").serialize() ,function(data){
$('#show_preview .modal').modal();
$('#show_preview .modal').height(function() {
return $(window).height() * 0.7;
});
},'script');
});
$(".preview_trigger").click(function(){
$("#main-wrap").after("<span id='show_preview'></span>");
$.ajax({
type: 'PUT',
url:$(this).attr("href"),
data:$(this).parents("form").serialize(),
url: $(this).attr("href"),
data: $(this).parents("form").serialize(),
success: function (msg) {
$("#"+start_modal_with_id).modal('show'); },
$('#show_preview .modal').modal();
$('#show_preview .modal').height(function() {
return $(window).height() * 0.7;
});
},
error: function(){
alert("ERROR");
}
});
return false;
}
});
return false;
});
// $('#main-wrap').on(clickEvent, '.post_preview, .preview_trigger', function(e) {
// $("#main-wrap").after("<span id='show_preview'></span>");
// if($(this).hasClass('post_preview')) {
// var attrs = e.target.attributes;
// var url = attrs['url'];
// $("form.previewable").ajaxSubmit({
// beforeSubmit: function(a,f,o){
// o.dataType = 'script';
// o.url = url.nodeValue;
// o.type = 'post';
// },success: function(msg) {
// $('#show_preview .modal').modal()
// $('#show_preview .modal').height(function() {
// return $(window).height() * 0.7;
// });
// }
// });
// } else if($(this).hasClass('preview_trigger')) {
// $.ajax({
// type: 'PUT',
// url: $(this).attr("href"),
// data: $(this).parents("form").serialize(),
// success: function (msg) {
// $('#show_preview .modal').modal();
// $('#show_preview .modal').height(function() {
// return $(window).height() * 0.7;
// });
// },
// error: function(){
// alert("ERROR");
// }
// });
// return false;
// }
// });
});
+347
View File
@@ -0,0 +1,347 @@
!function ($) {
// Convenience vars for accessing elements
var $pageslide = $('#pageslide'),
$body = $('#main-wrap'),
$bottomNav = $('.bottomnav'),
$element;
if($pageslide.length == 0) {
var _html = '<div id="pageslide"><div class="page-title clearfix"><a class="pull-right" href="javascript:$.pageslide.close()"><i class="icons-arrow-left-2"/></a><span/></div><div class="view-page"><div class="nano"><div class="content"/></div></div></div>';
$pageslide = $(_html).css('display', 'none').appendTo( $body );
} else {
$pageslide.css('display', 'none')
}
var _sliding = false, // Mutex to assist closing only once
_lastCaller; // Used to keep track of last element to trigger pageslide
// $(window).resize(function(event) {
// if($pageslide.is(':visible')) {
// console.log("ddd")
// $pageslide.find('.nano').height($('body').height() - $('#orbit-bar').height() - $pageslide.find('.page-title').outerHeight(true));
// }
// });
function _checkTitle(settings) {
if(settings.pageTitle) {
$pageslide.find('.page-title').show().children('span').text(settings.pageTitle);
$pageslide.find('.view-page').css('top', 48);
} else {
$pageslide.find('.page-title').hide();
$pageslide.find('.view-page').css('top', 0);
}
}
function _load(settings) {
// Are we loading an element from the page or a URL?
if ( settings.href.indexOf("#") === 0 ) {
// Load a page element
window.console.log("in HTML");
var _contentHtml = $(settings.href).html();
var dtd = $.Deferred();
function appendHtml(dtd) {
$pageslide.find('.content').html(_contentHtml);
if($pageslide.find('.content').find('*').length !== 0) {
dtd.resolve();
} else {
dtd.reject();
}
return dtd;
}
$.when(appendHtml(dtd))
.done(function() {
$pageslide.find('.nano').nanoScroller({ scrollTop: 0, iOSNativeScrolling: true });
if(settings.loadComplete)settings.loadComplete.call(this, $pageslide, $element);
})
.fail(function() {});
} else {
// Load a URL. Into an iframe?
if(settings.iframe) {
window.console.log("iFrame");
var iframe = $('<iframe id="pageslide_iframe" />').attr({
src: settings.href,
frameborder: 0,
hspace: 0
})
.css({
width: "100%",
height: "100%"
});
$pageslide.find('.content').css('overflow', 'hidden').html(iframe).show();
if(settings.loadComplete)settings.loadComplete.call(this, $pageslide, $element);
} else {
window.console.log("Load");
$pageslide.find('.content').load(settings.href, function(response, status, xhr){
if(status == 'success') {
$pageslide.show();
if(settings.loadComplete)settings.loadComplete.call(this, $pageslide, $element);
$pageslide.find('.nano').nanoScroller({ scrollTop: 0, iOSNativeScrolling: true });
} else {
var msg = '<div style="text-align: center;"><i class="icons-warning" style="font-size: 5em;"></i><h4>Oops!</h4>System may be wrong<br/> or please try again later</div>'
$pageslide.find('.content').html(msg);
}
});
}
$pageslide.data( 'localEl', false );
}
if($pageslide.find('.error-cover').length) $pageslide.find('.error-cover').remove();
_checkTitle(settings);
}
// Function that controls opening of the pageslide
function _start(settings) {
var slideWidth = $pageslide.outerWidth(true),
bodyMove = $sidebarState && !$('.item-groups').length ? slideWidth - 241 : settings.direction == 'right' ? slideWidth - 61 : slideWidth,
bodyAnimateIn = {},
bottomnavAnimateIn = {},
slideAnimateIn = {};
// If the slide is open or opening, just ignore the call
if($pageslide.is(':visible') || _sliding) return;
_sliding = true;
switch(settings.direction) {
case 'left':
$pageslide.css({left: 'auto', right: '-' + slideWidth + 'px'});
bodyAnimateIn['padding-right'] = '+=' + bodyMove;
slideAnimateIn['right'] = '+=' + slideWidth;
break;
default:
$pageslide.css({left: '-' + slideWidth + 'px', right: 'auto'});
bodyAnimateIn['margin-left'] = '+=' + bodyMove;
bottomnavAnimateIn['left'] = '+=' + bodyMove;
if($(window).width() <= 1440 && slideWidth > 963 ) {
bodyAnimateIn['width'] = $body.width();
}
slideAnimateIn['left'] = '+=' + slideWidth;
break;
}
// Animate the slide, and attach this slide's settings to the element
$body.animate(bodyAnimateIn, settings.speed);
$bottomNav.animate(bottomnavAnimateIn, settings.speed);
$pageslide.show().animate(slideAnimateIn, settings.speed, function() {
_sliding = false;
if(typeof settings.openFn === "function") {
settings.openFn.call(this, $pageslide, $element);
};
});
}
$.fn.pageslide = function(options) {
var $elements = this;
// On click
$elements.click( function(e) {
var $self = $(this),
settings = $.extend({href: $self.attr('href'), pageTitle: $self.data('title')}, options);
$element = $self;
// Prevent the default behavior and stop propagation
e.preventDefault();
e.stopPropagation();
if ($pageslide.is(':visible') && $self[0] == _lastCaller) {
// If we clicked the same element twice, toggle closed
$.pageslide.close();
} else {
// Open
$.pageslide(settings);
// Record the last element to trigger pageslide
_lastCaller = $self[0];
}
});
};
/*
* Default settings
*/
$.fn.pageslide.defaults = {
speed: 300, // Accepts standard jQuery effects speeds (i.e. fast, normal or milliseconds)
direction: 'right', // Accepts 'left' or 'right'
modal: false, // If set to true, you must explicitly close pageslide using $.pageslide.close();
iframe: false, // By default, linked pages are loaded into an iframe. Set this to false if you don't want an iframe.
href: null, // Override the source of the content. Optional in most cases, but required when opening pageslide programmatically.
W: 264,
closeFn : null,
openFn : null,
loadComplete : null,
pageTitle: '',
};
/*
* Public methods
*/
// Open the pageslide
$.pageslide = function(options) {
// Extend the settings with those the user has provided
var settings = $.extend({}, $.fn.pageslide.defaults, options),
pageCss = {},
convertToFunction = function(fn){
var x = new Function();
x = fn;
return x;
};
pageCss['width'] = settings.W;
pageCss['margin-left'] = $sidebarState && !$('.item-groups').length ? 241 : settings.direction == 'right' ? 61 : 0;
// Change Object to Function
if(settings.openFn) {
$.fn.pageslide.defaults.openFn = convertToFunction(settings.openFn);
};
if(settings.closeFn) {
$.fn.pageslide.defaults.closeFn = convertToFunction(settings.closeFn);
};
if(settings.loadComplete) {
$.fn.pageslide.defaults.loadComplete = convertToFunction(settings.loadComplete);
};
// Are we trying to open in different direction?
if(($pageslide.is(':visible') && $pageslide.data('W') != settings.W) || ($pageslide.is(':visible') && $pageslide.data('direction') != settings.direction)) {
$.pageslide.close(function(){
$pageslide.css(pageCss);
_checkTitle(settings)
_load(settings);
_start(settings);
});
} else {
_checkTitle(settings)
_load(settings);
if($pageslide.is(':hidden')) {
$pageslide.css(pageCss);
_start(settings);
}
}
$pageslide.data(settings);
}
// Close the pageslide
$.pageslide.close = function(callback) {
var $pageslide = $('#pageslide'),
slideWidth = $pageslide.outerWidth(true),
bodyMove = $sidebarState && !$('.item-groups').length ? slideWidth - 241 : $.fn.pageslide.defaults.direction == 'right' ? slideWidth - 61 : slideWidth
speed = $pageslide.data('speed'),
bodyAnimateIn = {},
bottomnavAnimateIn = {},
slideAnimateIn = {};
// If the slide isn't open, just ignore the call
if( $pageslide.is(':hidden') || _sliding ) return;
_sliding = true;
switch($pageslide.data('direction')) {
case 'left':
bodyAnimateIn['padding-right'] = '-=' + bodyMove;
slideAnimateIn['right'] = '-=' + slideWidth;
break;
default:
bodyAnimateIn['margin-left'] = '-=' + bodyMove;
bottomnavAnimateIn['left'] = '-=' + bodyMove;
slideAnimateIn['left'] = '-=' + slideWidth;
break;
}
$pageslide.animate(slideAnimateIn, speed);
$bottomNav.animate(bottomnavAnimateIn, speed);
$body.animate(bodyAnimateIn, speed, function() {
if($pageslide.data('href') == '#') {
$pageslide.attr('style', '')
.hide()
.find('.content')
.attr('style', '')
.end()
.find('.view-page')
.attr('style', '')
.end()
.find('.pane')
.remove()
.end()
.find('.page-title')
.attr('style', '')
.children('span');
} else {
$pageslide.attr('style', '')
.hide()
.find('.content')
.attr('style', '')
.empty()
.end()
.find('.view-page')
.attr('style', '')
.end()
.find('.pane')
.remove()
.end()
.find('.page-title')
.attr('style', '')
.children('span')
.empty();
}
_sliding = false;
if($pageslide.find('.error-cover').length) $pageslide.find('.error-cover').remove();
if(typeof callback != 'undefined') callback();
if(typeof $.fn.pageslide.defaults.closeFn === "function") {
$.fn.pageslide.defaults.closeFn.call(this, $pageslide, $element);
};
});
}
// Close Callback
$.pageslide.closeCallback = function( callback ) {
if(typeof callback === "function"){
$.fn.pageslide.defaults.closeFn = callback;
};
};
// Open Callback
$.pageslide.openCallback = function( callback ) {
if(typeof callback === "function"){
$.fn.pageslide.defaults.openFn = callback;
};
};
//data load complete callback
$.pageslide.loadComplete = function( callback ) {
if(typeof callback === "function"){
$.fn.pageslide.defaults.loadComplete = callback;
};
};
/* Events */
// Don't let clicks to the pageslide close the window
$pageslide.click(function(e) {
e.stopPropagation();
});
// Close the pageslide if the document is clicked or the users presses the ESC key, unless the pageslide is modal
$(document).bind('click keyup', function(e) {
// If this is a keyup event, let's see if it's an ESC key
if( e.type == "keyup" && e.keyCode != 27) return;
// Make sure it's visible, and we're not modal
if( $pageslide.is( ':visible' ) && !$pageslide.data( 'modal' ) ) {
$.pageslide.close();
}
});
}(window.jQuery);
function setForm(data) {
$.each(data, function(key, value) {
$("#pageslide form #" + key).val(value);
});
}
function resetForm() {
$("#pageslide form").find("input[type=text], input[type=number], textarea")
.val("")
.end()
.find("select")
.prop('selectedIndex', 0)
.end()
.find("input[type=checkbox]")
.prop('checked', false)
.end()
.find("input[type=radio]")
.prop('checked', false);
}
-2
View File
@@ -197,7 +197,6 @@ function mergerTags() {
}
$(function() {
if($('.default-tags').length) {
// checkTagsQuantity();
checkedLength();
$('#tags-merger').on('hidden', function () {
$(this).find('.filter-item').remove();
@@ -205,5 +204,4 @@ $(function() {
} else {
checkedLength();
};
// addTagsTab();
});
+16
View File
@@ -0,0 +1,16 @@
// This is a manifest file that'll be compiled into including all the files listed below.
// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
// be included in the compiled file accessible from http://example.com/assets/application.js
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
//= require jquery
//= require lib/jquery.preload.min.js
//= require cycle2
//= require mobile/jquery.mu.image.resize
//= require mobile/orbit.mobile
//= require mobile/jquery.mobile-1.2.0.min
//= require mobile/jquery.swipeplanes-1.2.min
//= require mobile/add2home
//= require mobile/gmAPI
//= require mobile/jquery.ui.map
+350
View File
@@ -0,0 +1,350 @@
/*!
* Add to Homescreen v2.0.4 ~ Copyright (c) 2012 Matteo Spinelli, http://cubiq.org
* Released under MIT license, http://cubiq.org/license
*/
var addToHome = (function (w) {
var nav = w.navigator,
isIDevice = 'platform' in nav && (/iphone|ipod|ipad/gi).test(nav.platform),
isIPad,
isRetina,
isSafari,
isStandalone,
OSVersion,
startX = 0,
startY = 0,
lastVisit = 0,
isExpired,
isSessionActive,
isReturningVisitor,
balloon,
overrideChecks,
positionInterval,
closeTimeout,
options = {
autostart: true, // Automatically open the balloon
returningVisitor: false, // Show the balloon to returning visitors only (setting this to true is HIGHLY RECCOMENDED)
animationIn: 'bubble', // drop || bubble || fade
animationOut: 'drop', // drop || bubble || fade
startDelay: 2000, // 2 seconds from page load before the balloon appears
lifespan: 10000, // 15 seconds before it is automatically destroyed
bottomOffset: 14, // Distance of the balloon from bottom
expire: 0, // Minutes to wait before showing the popup again (0 = always displayed)
message: '', // Customize your message or force a language ('' = automatic)
touchIcon: true, // Display the touch icon
arrow: true, // Display the balloon arrow
hookOnLoad: true, // Should we hook to onload event? (really advanced usage)
iterations: 100 // Internal/debug use
},
intl = {
ca_es: 'Per instal·lar aquesta aplicació al vostre %device premeu %icon i llavors <strong>Afegir a pantalla d\'inici</strong>.',
cs_cz: 'Pro instalaci aplikace na Váš %device, stiskněte %icon a v nabídce <strong>Přidat na plochu</strong>.',
da_dk: 'Tilføj denne side til din %device: tryk på %icon og derefter <strong>Føj til hjemmeskærm</strong>.',
de_de: 'Installieren Sie diese App auf Ihrem %device: %icon antippen und dann <strong>Zum Home-Bildschirm</strong>.',
el_gr: 'Εγκαταστήσετε αυτήν την Εφαρμογή στήν συσκευή σας %device: %icon μετά πατάτε <strong>Προσθήκη σε Αφετηρία</strong>.',
en_us: 'Install this web app on your %device: tap %icon and then <strong>Add to Home Screen</strong>.',
es_es: 'Para instalar esta app en su %device, pulse %icon y seleccione <strong>Añadir a pantalla de inicio</strong>.',
fi_fi: 'Asenna tämä web-sovellus laitteeseesi %device: paina %icon ja sen jälkeen valitse <strong>Lisää Koti-valikkoon</strong>.',
fr_fr: 'Ajoutez cette application sur votre %device en cliquant sur %icon, puis <strong>Ajouter à l\'écran d\'accueil</strong>.',
he_il: '<span dir="rtl">התקן אפליקציה זו על ה-%device שלך: הקש %icon ואז <strong>הוסף למסך הבית</strong>.</span>',
hr_hr: 'Instaliraj ovu aplikaciju na svoj %device: klikni na %icon i odaberi <strong>Dodaj u početni zaslon</strong>.',
hu_hu: 'Telepítse ezt a web-alkalmazást az Ön %device-jára: nyomjon a %icon-ra majd a <strong>Főképernyőhöz adás</strong> gombra.',
it_it: 'Installa questa applicazione sul tuo %device: premi su %icon e poi <strong>Aggiungi a Home</strong>.',
ja_jp: 'このウェブアプリをあなたの%deviceにインストールするには%iconをタップして<strong>ホーム画面に追加</strong>を選んでください。',
ko_kr: '%device에 웹앱을 설치하려면 %icon을 터치 후 "홈화면에 추가"를 선택하세요',
nb_no: 'Installer denne appen på din %device: trykk på %icon og deretter <strong>Legg til på Hjem-skjerm</strong>',
nl_nl: 'Installeer deze webapp op uw %device: tik %icon en dan <strong>Zet in beginscherm</strong>.',
pl_pl: 'Aby zainstalować tę aplikacje na %device: naciśnij %icon a następnie <strong>Dodaj jako ikonę</strong>.',
pt_br: 'Instale este web app em seu %device: aperte %icon e selecione <strong>Adicionar à Tela Inicio</strong>.',
pt_pt: 'Para instalar esta aplicação no seu %device, prima o %icon e depois o <strong>Adicionar ao ecrã principal</strong>.',
ru_ru: 'Установите это веб-приложение на ваш %device: нажмите %icon, затем <strong>Добавить в «Домой»</strong>.',
sv_se: 'Lägg till denna webbapplikation på din %device: tryck på %icon och därefter <strong>Lägg till på hemskärmen</strong>.',
th_th: 'ติดตั้งเว็บแอพฯ นี้บน %device ของคุณ: แตะ %icon และ <strong>เพิ่มที่หน้าจอโฮม</strong>',
tr_tr: '%device için bu uygulamayı kurduktan sonra %icon simgesine dokunarak <strong>Ana Ekrana Ekle</strong>yin.',
zh_cn: '您可以将此应用程式安装到您的 %device 上。请按 %icon 然后点选<strong>添加至主屏幕</strong>。',
zh_tw: '您可以將此應用程式安裝到您的 %device 上。請按 %icon 然後點選<strong>加入主畫面螢幕</strong>。'
};
function init () {
// Preliminary check, all further checks are performed on iDevices only
if ( !isIDevice ) return;
var now = Date.now(),
i;
// Merge local with global options
if ( w.addToHomeConfig ) {
for ( i in w.addToHomeConfig ) {
options[i] = w.addToHomeConfig[i];
}
}
if ( !options.autostart ) options.hookOnLoad = false;
isIPad = (/ipad/gi).test(nav.platform);
isRetina = w.devicePixelRatio && w.devicePixelRatio > 1;
isSafari = (/Safari/i).test(nav.appVersion) && !(/CriOS/i).test(nav.appVersion);
isStandalone = nav.standalone;
OSVersion = nav.appVersion.match(/OS (\d+_\d+)/i);
OSVersion = OSVersion[1] ? +OSVersion[1].replace('_', '.') : 0;
lastVisit = +w.localStorage.getItem('addToHome');
isSessionActive = w.sessionStorage.getItem('addToHomeSession');
isReturningVisitor = options.returningVisitor ? lastVisit && lastVisit + 28*24*60*60*1000 > now : true;
if ( !lastVisit ) lastVisit = now;
// If it is expired we need to reissue a new balloon
isExpired = isReturningVisitor && lastVisit <= now;
if ( options.hookOnLoad ) w.addEventListener('load', loaded, false);
else if ( !options.hookOnLoad && options.autostart ) loaded();
}
function loaded () {
w.removeEventListener('load', loaded, false);
if ( !isReturningVisitor ) w.localStorage.setItem('addToHome', Date.now());
else if ( options.expire && isExpired ) w.localStorage.setItem('addToHome', Date.now() + options.expire * 60000);
if ( !overrideChecks && ( !isSafari || !isExpired || isSessionActive || isStandalone || !isReturningVisitor ) ) return;
var icons = options.touchIcon ? document.querySelectorAll('head link[rel=apple-touch-icon],head link[rel=apple-touch-icon-precomposed]') : [],
sizes,
touchIcon = '',
closeButton,
platform = nav.platform.split(' ')[0],
language = nav.language.replace('-', '_'),
i, l;
balloon = document.createElement('div');
balloon.id = 'addToHomeScreen';
balloon.style.cssText += 'left:-9999px;-webkit-transition-property:-webkit-transform,opacity;-webkit-transition-duration:0;-webkit-transform:translate3d(0,0,0);position:' + (OSVersion < 5 ? 'absolute' : 'fixed');
// Localize message
if ( options.message in intl ) { // You may force a language despite the user's locale
language = options.message;
options.message = '';
}
if ( options.message === '' ) { // We look for a suitable language (defaulted to en_us)
options.message = language in intl ? intl[language] : intl['en_us'];
}
// Search for the apple-touch-icon
if ( icons.length ) {
for ( i = 0, l = icons.length; i < l; i++ ) {
sizes = icons[i].getAttribute('sizes');
if ( sizes ) {
if ( isRetina && sizes == '114x114' ) {
touchIcon = icons[i].href;
break;
}
} else {
touchIcon = icons[i].href;
}
}
touchIcon = '<span style="background-image:url(' + touchIcon + ')" class="addToHomeTouchIcon"></span>';
}
balloon.className = (isIPad ? 'addToHomeIpad' : 'addToHomeIphone') + (touchIcon ? ' addToHomeWide' : '');
balloon.innerHTML = touchIcon +
options.message.replace('%device', platform).replace('%icon', OSVersion >= 4.2 ? '<span class="addToHomeShare"></span>' : '<span class="addToHomePlus">+</span>') +
(options.arrow ? '<span class="addToHomeArrow"></span>' : '') +
'<span class="addToHomeClose">\u00D7</span>';
document.body.appendChild(balloon);
// Add the close action
closeButton = balloon.querySelector('.addToHomeClose');
if ( closeButton ) closeButton.addEventListener('click', clicked, false);
if ( !isIPad && OSVersion >= 6 ) window.addEventListener('orientationchange', orientationCheck, false);
setTimeout(show, options.startDelay);
}
function show () {
var duration,
iPadXShift = 208;
// Set the initial position
if ( isIPad ) {
if ( OSVersion < 5 ) {
startY = w.scrollY;
startX = w.scrollX;
} else if ( OSVersion < 6 ) {
iPadXShift = 160;
}
balloon.style.top = startY + options.bottomOffset + 'px';
balloon.style.left = startX + iPadXShift - Math.round(balloon.offsetWidth / 2) + 'px';
switch ( options.animationIn ) {
case 'drop':
duration = '0.6s';
balloon.style.webkitTransform = 'translate3d(0,' + -(w.scrollY + options.bottomOffset + balloon.offsetHeight) + 'px,0)';
break;
case 'bubble':
duration = '0.6s';
balloon.style.opacity = '0';
balloon.style.webkitTransform = 'translate3d(0,' + (startY + 50) + 'px,0)';
break;
default:
duration = '1s';
balloon.style.opacity = '0';
}
} else {
startY = w.innerHeight + w.scrollY;
if ( OSVersion < 5 ) {
startX = Math.round((w.innerWidth - balloon.offsetWidth) / 2) + w.scrollX;
balloon.style.left = startX + 'px';
balloon.style.top = startY - balloon.offsetHeight - options.bottomOffset + 'px';
} else {
balloon.style.left = '50%';
balloon.style.marginLeft = -Math.round(balloon.offsetWidth / 2) - ( w.orientation%180 && OSVersion >= 6 ? 40 : 0 ) + 'px';
balloon.style.bottom = options.bottomOffset + 'px';
}
switch (options.animationIn) {
case 'drop':
duration = '1s';
balloon.style.webkitTransform = 'translate3d(0,' + -(startY + options.bottomOffset) + 'px,0)';
break;
case 'bubble':
duration = '0.6s';
balloon.style.webkitTransform = 'translate3d(0,' + (balloon.offsetHeight + options.bottomOffset + 50) + 'px,0)';
break;
default:
duration = '1s';
balloon.style.opacity = '0';
}
}
balloon.offsetHeight; // repaint trick
balloon.style.webkitTransitionDuration = duration;
balloon.style.opacity = '1';
balloon.style.webkitTransform = 'translate3d(0,0,0)';
balloon.addEventListener('webkitTransitionEnd', transitionEnd, false);
closeTimeout = setTimeout(close, options.lifespan);
}
function manualShow (override) {
if ( !isIDevice || balloon ) return;
overrideChecks = override;
loaded();
}
function close () {
clearInterval( positionInterval );
clearTimeout( closeTimeout );
closeTimeout = null;
var posY = 0,
posX = 0,
opacity = '1',
duration = '0',
closeButton = balloon.querySelector('.addToHomeClose');
if ( closeButton ) closeButton.removeEventListener('click', close, false);
if ( !isIPad && OSVersion >= 6 ) window.removeEventListener('orientationchange', orientationCheck, false);
if ( OSVersion < 5 ) {
posY = isIPad ? w.scrollY - startY : w.scrollY + w.innerHeight - startY;
posX = isIPad ? w.scrollX - startX : w.scrollX + Math.round((w.innerWidth - balloon.offsetWidth)/2) - startX;
}
balloon.style.webkitTransitionProperty = '-webkit-transform,opacity';
switch ( options.animationOut ) {
case 'drop':
if ( isIPad ) {
duration = '0.4s';
opacity = '0';
posY = posY + 50;
} else {
duration = '0.6s';
posY = posY + balloon.offsetHeight + options.bottomOffset + 50;
}
break;
case 'bubble':
if ( isIPad ) {
duration = '0.8s';
posY = posY - balloon.offsetHeight - options.bottomOffset - 50;
} else {
duration = '0.4s';
opacity = '0';
posY = posY - 50;
}
break;
default:
duration = '0.8s';
opacity = '0';
}
balloon.addEventListener('webkitTransitionEnd', transitionEnd, false);
balloon.style.opacity = opacity;
balloon.style.webkitTransitionDuration = duration;
balloon.style.webkitTransform = 'translate3d(' + posX + 'px,' + posY + 'px,0)';
}
function clicked () {
w.sessionStorage.setItem('addToHomeSession', '1');
isSessionActive = true;
close();
}
function transitionEnd () {
balloon.removeEventListener('webkitTransitionEnd', transitionEnd, false);
balloon.style.webkitTransitionProperty = '-webkit-transform';
balloon.style.webkitTransitionDuration = '0.2s';
// We reached the end!
if ( !closeTimeout ) {
balloon.parentNode.removeChild(balloon);
balloon = null;
return;
}
// On iOS 4 we start checking the element position
if ( OSVersion < 5 && closeTimeout ) positionInterval = setInterval(setPosition, options.iterations);
}
function setPosition () {
var matrix = new WebKitCSSMatrix(w.getComputedStyle(balloon, null).webkitTransform),
posY = isIPad ? w.scrollY - startY : w.scrollY + w.innerHeight - startY,
posX = isIPad ? w.scrollX - startX : w.scrollX + Math.round((w.innerWidth - balloon.offsetWidth) / 2) - startX;
// Screen didn't move
if ( posY == matrix.m42 && posX == matrix.m41 ) return;
balloon.style.webkitTransform = 'translate3d(' + posX + 'px,' + posY + 'px,0)';
}
// Clear local and session storages (this is useful primarily in development)
function reset () {
w.localStorage.removeItem('addToHome');
w.sessionStorage.removeItem('addToHomeSession');
}
function orientationCheck () {
balloon.style.marginLeft = -Math.round(balloon.offsetWidth / 2) - ( w.orientation%180 && OSVersion >= 6 ? 40 : 0 ) + 'px';
}
// Bootstrap!
init();
return {
show: manualShow,
close: close,
reset: reset
};
})(window);
+34
View File
@@ -0,0 +1,34 @@
String.prototype.format = function() { a = this; for ( k in arguments ) { a = a.replace("{" + k + "}", arguments[k]); } return a; };
window.gmAPI = {
'version': '3.0-rc1',
'ga': '',
'primaryUrl': 'http://code.google.com/p/jquery-ui-map/',
'url': 'http://jquery-ui-map.googlecode.com/',
'forum': 'http://groups.google.com/group/jquery-ui-map-discuss/feed/rss_v2_0_msgs.xml',
'subscribe': 'http://groups.google.com/group/jquery-ui-map-discuss/boxsubscribe',
'exception': 'Unable to load due to either poor internet connection or some CDN\'s aren\'t as responsive as we would like them to be. Try refreshing the page :D.',
'init': function() {
//window._gaq = [['_setAccount', this.ga], ['_trackPageview'], ['_trackPageLoadTime']];
//Modernizr.load({ 'test': ( location.href.indexOf(this.url) > -1 ), 'yep': 'http://www.google-analytics.com/ga.js' });
this.test('Backbone', function() {
$('#forum').append('<h2>Forum</h2><ul id="forum_posts"></ul><h2>Subscribe</h2><form id="forum_subscribe" class="subscribe" action="#"><label for="email">E-mail:</label><input id="email" type="text" name="email" /><input type="submit" name="sub" value="Subscribe" /></form>');
ForumCollection = Backbone.Collection.extend({ 'url': 'http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&callback=?&q={0}'.format(encodeURIComponent(gmAPI.forum)), 'parse': function(response) { return response.responseData.feed.entries; } });
ForumPost = Backbone.View.extend({ 'tagName': 'li', 'className': 'group-item', 'template': _.template('<a href="<%=link%>"><%=title%></a></h3>'), 'render': function() { $(this.el).html(this.template(this.model.toJSON())); return this; } });
Forum = Backbone.View.extend({ 'el': $("#forum"), 'initialize': function() { this.col = new ForumCollection(); this.col.bind('reset', this.load, this); this.col.fetch(); }, 'add': function(post) { var view = new ForumPost({'model': post}); $('#forum_posts').append(view.render().el); }, 'load': function () { this.col.each(this.add); $('#forum_subscribe').attr('action', gmAPI.subscribe); $(this.el).show(); } });
var app = new Forum();
});
this.test('prettyPrint', function() { prettyPrint(); });
$('#version').text(this.version);
},
'redirect': function(url) { alert('This page is deprecated. Please update your URL. Redirecting to new page.'); window.location = url; },
'col': [],
'tests': [],
'test': function(a, b) { if ( window[a] ) { b(); } },
'add': function(a, b) { if (b) { this.col[a] = b; } else { this.col.push(a); } return this; },
'load': function(a) { var self = this; if (a) { self.col[a](); } else { $.each(self.col, function(i,d) { try { d(); } catch (err) { alert(self.exception); } }); } },
'timeStart': function(key, desc) { this.tests[key] = { 'start': new Date().getTime(), 'desc': desc }; },
'timeEnd': function(key) { this.tests[key].elapsed = new Date().getTime(); },
'report': function(id) { var i = 1; for ( var k in this.tests ) { var t = this.tests[k]; $(id).append('<div class="benchmark rounded"><div class="benchmark-result lt">' + (t.elapsed - t.start) + ' ms</div><div class="lt"><p class="benchmark-iteration">Benchmark case ' + i + '</p><p class="benchmark-title">' + t.desc + '</p></div></div>'); i++; }; }
};
gmAPI.init();
@@ -0,0 +1,2 @@
/*! jQuery Mobile vGit Build: SHA1: b49cc06499abf8f987cf90f35349cfac0918c939 <> Date: Tue Oct 2 11:22:34 2012 -0700 jquerymobile.com | jquery.org/license !*/
(function(a,b,c){typeof define=="function"&&define.amd?define(["jquery"],function(d){return c(d,a,b),d.mobile}):c(a.jQuery,a,b)})(this,document,function(a,b,c,d){(function(a,b,d){var e={};a.mobile=a.extend({},{version:"1.2.0",ns:"",subPageUrlKey:"ui-page",activePageClass:"ui-page-active",activeBtnClass:"ui-btn-active",focusClass:"ui-focus",ajaxEnabled:!0,hashListeningEnabled:!0,linkBindingEnabled:!0,defaultPageTransition:"fade",maxTransitionWidth:!1,minScrollBack:250,touchOverflowEnabled:!1,defaultDialogTransition:"pop",pageLoadErrorMessage:"Error Loading Page",pageLoadErrorMessageTheme:"e",phonegapNavigationEnabled:!1,autoInitializePage:!0,pushStateEnabled:!0,ignoreContentEnabled:!1,orientationChangeEnabled:!0,buttonMarkup:{hoverDelay:200},keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91},silentScroll:function(d){a.type(d)!=="number"&&(d=a.mobile.defaultHomeScroll),a.event.special.scrollstart.enabled=!1,setTimeout(function(){b.scrollTo(0,d),a(c).trigger("silentscroll",{x:0,y:d})},20),setTimeout(function(){a.event.special.scrollstart.enabled=!0},150)},nsNormalizeDict:e,nsNormalize:function(b){if(!b)return;return e[b]||(e[b]=a.camelCase(a.mobile.ns+b))},getInheritedTheme:function(a,b){var c=a[0],d="",e=/ui-(bar|body|overlay)-([a-z])\b/,f,g;while(c){f=c.className||"";if(f&&(g=e.exec(f))&&(d=g[2]))break;c=c.parentNode}return d||b||"a"},closestPageData:function(a){return a.closest(':jqmData(role="page"), :jqmData(role="dialog")').data("page")},enhanceable:function(a){return this.haveParents(a,"enhance")},hijackable:function(a){return this.haveParents(a,"ajax")},haveParents:function(b,c){if(!a.mobile.ignoreContentEnabled)return b;var d=b.length,e=a(),f,g,h;for(var i=0;i<d;i++){g=b.eq(i),h=!1,f=b[i];while(f){var j=f.getAttribute?f.getAttribute("data-"+a.mobile.ns+c):"";if(j==="false"){h=!0;break}f=f.parentNode}h||(e=e.add(g))}return e},getScreenHeight:function(){return b.innerHeight||a(b).height()}},a.mobile),a.fn.jqmData=function(b,c){var e;return typeof b!="undefined"&&(b&&(b=a.mobile.nsNormalize(b)),arguments.length<2||c===d?e=this.data(b):e=this.data(b,c)),e},a.jqmData=function(b,c,d){var e;return typeof c!="undefined"&&(e=a.data(b,c?a.mobile.nsNormalize(c):c,d)),e},a.fn.jqmRemoveData=function(b){return this.removeData(a.mobile.nsNormalize(b))},a.jqmRemoveData=function(b,c){return a.removeData(b,a.mobile.nsNormalize(c))},a.fn.removeWithDependents=function(){a.removeWithDependents(this)},a.removeWithDependents=function(b){var c=a(b);(c.jqmData("dependents")||a()).remove(),c.remove()},a.fn.addDependents=function(b){a.addDependents(a(this),b)},a.addDependents=function(b,c){var d=a(b).jqmData("dependents")||a();a(b).jqmData("dependents",a.merge(d,c))},a.fn.getEncodedText=function(){return a("<div/>").text(a(this).text()).html()},a.fn.jqmEnhanceable=function(){return a.mobile.enhanceable(this)},a.fn.jqmHijackable=function(){return a.mobile.hijackable(this)};var f=a.find,g=/:jqmData\(([^)]*)\)/g;a.find=function(b,c,d,e){return b=b.replace(g,"[data-"+(a.mobile.ns||"")+"$1]"),f.call(this,b,c,d,e)},a.extend(a.find,f),a.find.matches=function(b,c){return a.find(b,null,null,c)},a.find.matchesSelector=function(b,c){return a.find(c,null,null,[b]).length>0}})(a,this),function(a,b){var c=0,d=Array.prototype.slice,e=a.cleanData;a.cleanData=function(b){for(var c=0,d;(d=b[c])!=null;c++)try{a(d).triggerHandler("remove")}catch(f){}e(b)},a.widget=function(b,c,d){var e,f,g,h,i=b.split(".")[0];b=b.split(".")[1],e=i+"-"+b,d||(d=c,c=a.Widget),a.expr[":"][e]=function(b){return!!a.data(b,e)},a[i]=a[i]||{},f=a[i][b],g=a[i][b]=function(a,b){if(!this._createWidget)return new g(a,b);arguments.length&&this._createWidget(a,b)},a.extend(g,f,{version:d.version,_proto:a.extend({},d),_childConstructors:[]}),h=new c,h.options=a.widget.extend({},h.options),a.each(d,function(b,e){a.isFunction(e)&&(d[b]=function(){var a=function(){return c.prototype[b].apply(this,arguments)},d=function(a){return c.prototype[b].apply(this,a)};return function(){var b=this._super,c=this._superApply,f;return this._super=a,this._superApply=d,f=e.apply(this,arguments),this._super=b,this._superApply=c,f}}())}),g.prototype=a.widget.extend(h,{widgetEventPrefix:b},d,{constructor:g,namespace:i,widgetName:b,widgetBaseClass:e,widgetFullName:e}),f?(a.each(f._childConstructors,function(b,c){var d=c.prototype;a.widget(d.namespace+"."+d.widgetName,g,c._proto)}),delete f._childConstructors):c._childConstructors.push(g),a.widget.bridge(b,g)},a.widget.extend=function(c){var e=d.call(arguments,1),f=0,g=e.length,h,i;for(;f<g;f++)for(h in e[f])i=e[f][h],e[f].hasOwnProperty(h)&&i!==b&&(c[h]=a.isPlainObject(i)?a.widget.extend({},c[h],i):i);return c},a.widget.bridge=fuLine truncated
@@ -0,0 +1,147 @@
(function( $ ) {
$.fn.muImageResize = function( params ) {
var _defaultSettings = {
width:300,
height:300,
wrap_fix:true // Let image display like in-line.
};
var _set = $.extend(_defaultSettings, params);
var isIE7 = $.browser.msie && (7 == ~~ $.browser.version);
//var anyDynamicSource = $(this).attr("src");
//$(this).attr("src",anyDynamicSource+ "?" + new Date().getTime());
// Just bind load event once per element.
return this.one('load', function() {
// Remove all attributes and CSS rules.
this.removeAttribute( "width" );
this.removeAttribute( "height" );
this.style.width = this.style.height = "";
var ow, oh;
//[workaround] - msie need get width early
if ($.browser.msie)
{
// Get original size for calcutation.
ow = this.width;
oh = this.height;
}
if (_set.wrap_fix) {
$(this).wrap(function(){
return '<div style="width:'+_set.width+'px; height:'+_set.height+'px; display:inline-block;" />';
});
}
if (!$.browser.msie)
{
// Get original size for calcutation.
ow = this.width;
oh = this.height;
}
// if cannot get width or height.
if (0==ow || 0==oh){
$(this).width(_set.width);
$(this).height(_set.height);
}else{
// Merge position settings
var sh_margin_type='';
// if original image's width > height.
if (ow > oh) {
p = oh / _set.height;
oh = _set.height;
ow = ow / p;
// original image width smaller than settings.
if (ow < _set.width){
// need to resize again,
// because new image size range must can cover settings' range, than we can crop it correctly.
p = ow / _set.width;
ow = _set.width;
oh = oh / p;
// the crop range would be in the center of new image size.
sh = (oh-_set.height)/2;
t=sh+'px';
r=_set.width+'px';
b=(_set.height+sh)+'px';
l='0px';
// need to be adjust top position latter.
sh_margin_type = 'margin-top';
// original image width bigger than settings.
}else{
// new image range can cover settings' range.
sh = (ow-_set.width)/2;
t='0px';
r=(_set.width+sh)+'px';
b=_set.height+'px';
l=sh+'px';
// need to be adjust left position latter.
sh_margin_type = 'margin-left';
}
// ref above, change width to height then do same things.
}else{
p = ow / _set.width;
ow = _set.width;
oh = oh / p;
if (oh < _set.height) {
p = oh / _set.height;
oh = _set.height;
ow = ow / p;
sh = (ow-_set.width)/2;
t='0px';
r=(_set.width+sh)+'px';
b=_set.height+'px';
l=sh+'px';
sh_margin_type = 'margin-left';
}else{
sh = (oh-_set.height)/2;
t=sh+'px';
r=_set.width+'px';
b=(_set.height+sh)+'px';
l='0px';
sh_margin_type = 'margin-top';
}
}
// Resize img.
$(this).width(ow);
$(this).height(oh);
// Crop img by set clip style.
$(this).css('clip','rect('+t+' '+r+' '+b+' '+l+')');
var osh = 0;
if('auto' != $(this).css(sh_margin_type)){
osh = parseInt($(this).css(sh_margin_type));
}
if (0 < sh) {sh*=-1;}
sh += osh;
$(this).css(sh_margin_type, sh+'px');
$(this).css('position','absolute');
}
$(this).fadeIn('slow');
})
.one( "error", function() {
//$(this).hide();
})
.each(function() {
$(this).hide();
// Trigger load event (for Gecko and MSIE)
if ( this.complete || $.browser.msie ) {
$( this ).trigger( "load" ).trigger( "error" );
}
});
};
})( jQuery );
@@ -0,0 +1,242 @@
//SwipePlanes v1.2 jQuery Plugin by REMD
$.fn.swipePlanes = function(opciones){
return this.each(function(){
var randId = Math.round(100*Math.random()); ////IDENTIFICADOR ALEATORIO DE LA INSTANCIA//////////
//EL VISOR /////////////////////////////////////
this.onselectstart = function(){return false;};
this.unselectable = "on";
$(this).css('-moz-user-select', 'none');
$(this).css('-webkit-user-select', 'none');
$(this).css('overflow','hidden');
if($(this).css('position') != 'absolute')$(this).css('position','relative');
var anchoVisor = $(this).width();
var altoVisor = $(this).height;
var divVisor = this;
//El CONTENEDOR /////////////////////////////////////
var divContenedor;
var pagActual = 0;
divContenedor = $(this).children('div:first');
divContenedor.css('transition','none');
divContenedor.css('-moz-user-select', 'none');
divContenedor.css('-webkit-user-select', 'none');
divContenedor.css('position','relative');
divContenedor.css('left','0px');
//LAS PAGINAS /////////////////////////////////////////
var divPaginas;
var bufferPaginas = 0;
var metaPaginas = 0;
var metaPagNum = 0;
divPaginas = divContenedor.children('div,a');
divPaginas.css('display','inline-block');
divPaginas.css('float','left');
divPaginas.css('position','relative');
metaPaginas = new Array();
metaPaginas[0] = 0;
divPaginas.each(function(){
if((bufferPaginas+(this.offsetWidth)) > anchoVisor+metaPaginas[metaPagNum]){
if(bufferPaginas > 0)metaPagNum++;
metaPaginas[metaPagNum] = bufferPaginas;
}
bufferPaginas += (this.offsetWidth + parseInt($(this).css('margin-left'))+parseInt($(this).css('margin-right')));
});
metaPaginas[metaPagNum] -= anchoVisor - (bufferPaginas-metaPaginas[metaPagNum]); //Ajuste �ltimo salto
divContenedor.css('width',bufferPaginas+'px'); //Ajuste Contenedor al tamano de las paginas
generarControles($(this),metaPagNum);
//LOS EVENTOS ////////////////////////////////////////////
var iX = 0,aX = 0,fX = 0; //Manejo de coordenadas
var drag = 0,t = 0,ms = 0,metaEvento,dX = 0; //Manejo del entorno/tiempo
$(this).bind('touchstart',function(event){
clearInterval(t);
if(event.pageX)iX = event.pageX;
if(event.originalEvent.touches)iX = event.originalEvent.touches[0].pageX;
divContenedor.css('transition','none');
drag = 1;
ms = 0;
metaEvento = 'click';
t = setInterval(function(){ms++;},1);
});
$(this).bind('touchmove',function(event){
if(event.pageX)aX = event.pageX;
if(event.originalEvent.touches)aX = event.originalEvent.touches[0].pageX;
dX = Math.abs(aX - iX);
if(dX > 50)event.preventDefault();
if(drag && dX > 50){
divContenedor.css('left',(((metaPaginas[pagActual]*-1)+(aX - iX)))+'px');
}
});
$(this).bind('touchend touchcancel touchleave',function(event){
if(drag && dX > 20){
drag = 0;
console.log(metaPaginas);
dX = Math.abs(fX - iX);
clearInterval(t);
if(event.pageX)fX = event.pageX;
if(event.originalEvent.touches)fX = aX;
if((iX-fX) > 0 && ms < 100 && dX > 50)metaEvento = 'swipeLeft';
if((iX-fX) <= 0 && ms < 100 && dX > 50)metaEvento = 'swipeRight';
if((iX-fX) > 0 && ms > 100 && dX > 50)metaEvento = 'moveLeft';
if((iX-fX) <= 0 && ms > 100 && dX > 50)metaEvento = 'moveRight';
if(dX <= 50)metaEvento = 'click';
switch(metaEvento){
case 'swipeLeft':
if(pagActual < metaPagNum){pagActual++;}
break;
case 'moveLeft':
if(pagActual < metaPagNum && dX > (Math.abs(anchoVisor/2))){pagActual++;}
break;
case 'swipeRight':
if(pagActual > 0){pagActual--;}
break;
case 'moveRight':
if(pagActual > 0 && dX > (Math.abs(anchoVisor/2))){pagActual--;}
break;
}
ms = 0; dX = 0; iX = 0; aX = 0; fX = 0; metaEvento = '';
irPagina(pagActual);
}
});
//EVENTOS CONTROLES /////////////////////////////////////////
$('.'+randId+'swipePlanesMiniPag').click(function(){
pagActual = $(this).attr('mpg');
irPagina();
});
$('.'+randId+'swipePlanesRowLeft').click(function(e){
e.stopPropagation();
e.preventDefault();
if(pagActual > 0)pagActual--;
irPagina();
});
$('.'+randId+'swipePlanesRowRight').click(function(e){
e.preventDefault();
e.stopPropagation();
if(pagActual < metaPagNum)pagActual++;
irPagina();
});
$(this).bind('mousemove',function(){
$('.'+randId+'swipePlanesRowLeft').css('display','block');
$('.'+randId+'swipePlanesRowRight').css('display','block');
$('.'+randId+'swipePlanesRowLeft').css('opacity','1');
$('.'+randId+'swipePlanesRowRight').css('opacity','1');
});
$('.'+randId+'swipePlanesRowLeft').bind('mousemove',function(){
$('.'+randId+'swipePlanesRowLeft').css('opacity','1');
$('.'+randId+'swipePlanesRowRight').css('opacity','1');
});
$('.'+randId+'swipePlanesRowRight').bind('mousemove',function(){
$('.'+randId+'swipePlanesRowLeft').css('opacity','1');
$('.'+randId+'swipePlanesRowRight').css('opacity','1');
});
$(this).mouseout(function(){
$('.'+randId+'swipePlanesRowLeft').css('opacity','0');
$('.'+randId+'swipePlanesRowRight').css('opacity','0');
});
//CONTROLES //////////////////////////////////////////////
function generarControles(divVisor,metaPagNum){
var i = 0;
var miniPaginasHtml = '';
var style = '';
for(i;i <= metaPagNum; i++){
if(!i)style='background:#CECECE';
else style='';
miniPaginasHtml += '<div mpg="'+i+'" style="'+style+'" class="'+randId+'swipePlanesMiniPag"></div>';
}
// <div class="'+randId+'swipePlanesRowLeft"></div><div class="'+randId+'swipePlanesRowRight"></div>
var controlesHtml = '<div class="'+randId+'swipePlanesPaginator">'+miniPaginasHtml+'</div>';
divVisor.append(controlesHtml);
$('.'+randId+'swipePlanesMiniPag').css('display','inline-block');
$('.'+randId+'swipePlanesMiniPag').css('width','7px');
$('.'+randId+'swipePlanesMiniPag').css('height','7px');
$('.'+randId+'swipePlanesMiniPag').css('margin-left','2px');
$('.'+randId+'swipePlanesMiniPag').css('margin-right','2px');
$('.'+randId+'swipePlanesMiniPag').css('border','1px solid #CECECE');
$('.'+randId+'swipePlanesMiniPag').css('border-radius','4px');
$('.'+randId+'swipePlanesMiniPag').css('cursor','pointer');
$('.'+randId+'swipePlanesRowLeft').css('background-image','url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAABkCAYAAADE6GNbAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAKwwAACsMBNCkkqwAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAAWdEVYdENyZWF0aW9uIFRpbWUAMTAvMTkvMTJlCtGpAAABaElEQVR4nO3cS3HEMBRE0atU1oaURTCIwxiSh4NQBNIQcDDEfp/OVF8AKp3yR5IXHsD3GIP/3HmefI4xOI6jey632vedj+5JRGWIWoaoZYhahqhliFqGqGWIWoaoZYhahqhliFqGqGWIWoZENed8RIzTCplzPrZt+4oYqw0SiYAmSDQCGiAZCCiGZCGgEJKJgCJINgIKIBUISIZUISARUomAJEg1AhIgHQgIhnQhIBDSiYAgSDcCAiAKCLgJUUHADYgSAi5C1BBwAaKIAIGPD1H9GbLWer5er5+Mydzp0hVRxFy+tdQwt54RJczth10FE/LWUsCEvX67MaHrSCcmfEHswqSs7B2YtC1KNSZ1r1WJSd80VmFKdr8VmLJtfDam9DySiSk/WGVhWk6IGZi2o240pvXMHolp//iw1npGjNMOicoQtQxRyxC1DFHLELUMUcsQtQxRyxC1DFHLELUMUettIIM3+XXbL64qrlAHZEgkAAAAAElFTkSuQmCC)');
$('.'+randId+'swipePlanesRowLeft').css('position','absolute');
$('.'+randId+'swipePlanesRowLeft').css('width','50px');
$('.'+randId+'swipePlanesRowLeft').css('height','100px');
$('.'+randId+'swipePlanesRowLeft').css('cursor','pointer');
$('.'+randId+'swipePlanesRowLeft').css('left','0px');
$('.'+randId+'swipePlanesRowLeft').css('top',((divVisor.height()/2)-50)+'px');
$('.'+randId+'swipePlanesRowLeft').css('z-index','909');
$('.'+randId+'swipePlanesRowLeft').css('display','none');
$('.'+randId+'swipePlanesRowLeft').css('box-shadow','0 1px 3px rgba(0, 0, 0, 0.3);');
$('.'+randId+'swipePlanesRowRight').css('background-image','url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAABkCAYAAADE6GNbAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAKwwAACsMBNCkkqwAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAAWdEVYdENyZWF0aW9uIFRpbWUAMTAvMTkvMTJlCtGpAAABXklEQVR4nO3cvW2EQBRF4TPWxpTkwDXQw1IS7oEqXBINsKlTM+/nenVPDuKTYOZNwgC+xhj8567r4jHGYN/37meZats2ProfIipD1DJELUPUMkQtQ9QyRC1D1DJELUPUMkQtQ9QyRC1D1DLkd+u6PiPuM1MIZFmWz25M2KvVjQn9Rjox4R97FyZl1erApC2/1ZjUfaQSk74hVmFKdvYKTNmIko0pnbUyMeVDYxamZfrNwLSN8dGY1vNIJKb9YBWFaYdADEYCAvMYGQjMYaQgcB8jB7mbHOQ8z5/jOL7/ep0U5C4ChCAzCBCBzCJAABKBgGZIFAIaIZEIaIJEI6ABkoGAYkgWAgohmQgogmQjoABSgYBkSBUCEiGVCEiCVCMgAdKBgGBIFwICIZ0ICIJ0IyAI0o0AgYNVVIaoZYhahqhliFqGqGWIWoaoZYhahqhliFqGqGWIWm8DGbzJr9teHYWuULzgkDAAAAAASUVORK5CYII=)');
$('.'+randId+'swipePlanesRowRight').css('position','absolute');
$('.'+randId+'swipePlanesRowRight').css('width','50px');
$('.'+randId+'swipePlanesRowRight').css('height','100px');
$('.'+randId+'swipePlanesRowRight').css('cursor','pointer');
$('.'+randId+'swipePlanesRowRight').css('right','0px');
$('.'+randId+'swipePlanesRowRight').css('top',((divVisor.height()/2)-50)+'px');
$('.'+randId+'swipePlanesRowRight').css('z-index','909');
$('.'+randId+'swipePlanesRowRight').css('display','none');
$('.'+randId+'swipePlanesRowRight').css('box-shadow','0 1px 3px rgba(0, 0, 0, 0.3);');
$('.'+randId+'swipePlanesPaginator').css('position','absolute');
$('.'+randId+'swipePlanesPaginator').css('padding','0px 4px');
$('.'+randId+'swipePlanesPaginator').css('top','10px');
$('.'+randId+'swipePlanesPaginator').css('box-shadow','0 1px 3px rgba(0, 0, 0, 0.3);');
$('.'+randId+'swipePlanesPaginator').css('border-radius','4px');
$('.'+randId+'swipePlanesPaginator').css('left',((divVisor.width()/2)-($('.'+randId+'swipePlanesPaginator').width()/2))+'px');
}
function irPagina(){
divContenedor.css('transition','left 500ms');
divContenedor.css('left',((metaPaginas[pagActual])*-1)+'px');
$('.'+randId+'swipePlanesMiniPag').css('background','');
$('.'+randId+'swipePlanesMiniPag[mpg='+pagActual+']').css('background','#CECECE');
}
});
};
+373
View File
@@ -0,0 +1,373 @@
/*!
* jQuery FN Google Map 3.0-rc
* http://code.google.com/p/jquery-ui-map/
* Copyright (c) 2010 - 2012 Johan Säll Larsson
* Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
*/
( function($) {
/**
* @param name:string
* @param prototype:object
*/
$.a = function(name, prototype) {
var namespace = name.split('.')[0];
name = name.split('.')[1];
$[namespace] = $[namespace] || {};
$[namespace][name] = function(options, element) {
if ( arguments.length ) {
this._setup(options, element);
}
};
$[namespace][name].prototype = $.extend({
'namespace': namespace,
'pluginName': name
}, prototype);
$.fn[name] = function(options) {
var isMethodCall = typeof options === "string",
args = Array.prototype.slice.call(arguments, 1),
returnValue = this;
if ( isMethodCall && options.substring(0, 1) === '_' ) {
return returnValue;
}
this.each(function() {
var instance = $.data(this, name);
if (!instance) {
instance = $.data(this, name, new $[namespace][name](options, this));
}
if (isMethodCall) {
returnValue = instance[options].apply(instance, args);
}
});
return returnValue;
};
};
$.a('ui.gmap', {
/**
* Map options
* @see http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#MapOptions
*/
options: {
mapTypeId: 'roadmap',
zoom: 5
},
/**
* Get or set options
* @param key:string
* @param options:object
* @return object
*/
option: function(key, options) {
if (options) {
this.options[key] = options;
this.get('map').set(key, options);
return this;
}
return this.options[key];
},
/**
* Setup plugin basics,
* @param options:object
* @param element:node
*/
_setup: function(options, element) {
this.el = element;
options = options || {};
jQuery.extend(this.options, options, { 'center': this._latLng(options.center) });
this._create();
if ( this._init ) { this._init(); }
},
/**
* Instanciate the Google Maps object
*/
_create: function() {
var self = this;
this.instance = { 'map': new google.maps.Map(self.el, self.options), 'markers': [], 'overlays': [], 'services': [] };
google.maps.event.addListenerOnce(self.instance.map, 'bounds_changed', function() { $(self.el).trigger('init', self.instance.map); });
self._call(self.options.callback, self.instance.map);
},
/**
* Adds a latitude longitude pair to the bounds.
* @param position:google.maps.LatLng/string
*/
addBounds: function(position) {
var bounds = this.get('bounds', new google.maps.LatLngBounds());
bounds.extend(this._latLng(position));
this.get('map').fitBounds(bounds);
return this;
},
/**
* Helper function to check if a LatLng is within the viewport
* @param marker:google.maps.Marker
*/
inViewport: function(marker) {
var bounds = this.get('map').getBounds();
return (bounds) ? bounds.contains(marker.getPosition()) : false;
},
/**
* Adds a custom control to the map
* @param panel:jquery/node/string
* @param position:google.maps.ControlPosition
* @see http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#ControlPosition
*/
addControl: function(panel, position) {
this.get('map').controls[position].push(this._unwrap(panel));
return this;
},
/**
* Adds a Marker to the map
* @param markerOptions:google.maps.MarkerOptions
* @param callback:function(map:google.maps.Map, marker:google.maps.Marker) (optional)
* @return $(google.maps.Marker)
* @see http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#MarkerOptions
*/
addMarker: function(markerOptions, callback) {
markerOptions.map = this.get('map');
markerOptions.position = this._latLng(markerOptions.position);
var marker = new (markerOptions.marker || google.maps.Marker)(markerOptions);
var markers = this.get('markers');
if ( marker.id ) {
markers[marker.id] = marker;
} else {
markers.push(marker);
}
if ( marker.bounds ) {
this.addBounds(marker.getPosition());
}
this._call(callback, markerOptions.map, marker);
return $(marker);
},
/**
* Clears by type
* @param ctx:string e.g. 'markers', 'overlays', 'services'
*/
clear: function(ctx) {
this._c(this.get(ctx));
this.set(ctx, []);
return this;
},
_c: function(obj) {
for ( var property in obj ) {
if ( obj.hasOwnProperty(property) ) {
if ( obj[property] instanceof google.maps.MVCObject ) {
google.maps.event.clearInstanceListeners(obj[property]);
if ( obj[property].setMap ) {
obj[property].setMap(null);
}
} else if ( obj[property] instanceof Array ) {
this._c(obj[property]);
}
obj[property] = null;
}
}
},
/**
* Returns the objects with a specific property and value, e.g. 'category', 'tags'
* @param ctx:string in what context, e.g. 'markers'
* @param options:object property:string the property to search within, value:string, operator:string (optional) (AND/OR)
* @param callback:function(marker:google.maps.Marker, isFound:boolean)
*/
find: function(ctx, options, callback) {
var obj = this.get(ctx);
options.value = $.isArray(options.value) ? options.value : [options.value];
for ( var property in obj ) {
if ( obj.hasOwnProperty(property) ) {
var isFound = false;
for ( var value in options.value ) {
if ( $.inArray(options.value[value], obj[property][options.property]) > -1 ) {
isFound = true;
} else {
if ( options.operator && options.operator === 'AND' ) {
isFound = false;
break;
}
}
}
callback(obj[property], isFound);
}
}
return this;
},
/**
* Returns an instance property by key. Has the ability to set an object if the property does not exist
* @param key:string
* @param value:object(optional)
*/
get: function(key, value) {
var instance = this.instance;
if ( !instance[key] ) {
if ( key.indexOf('>') > -1 ) {
var e = key.replace(/ /g, '').split('>');
for ( var i = 0; i < e.length; i++ ) {
if ( !instance[e[i]] ) {
if (value) {
instance[e[i]] = ( (i + 1) < e.length ) ? [] : value;
} else {
return null;
}
}
instance = instance[e[i]];
}
return instance;
} else if ( value && !instance[key] ) {
this.set(key, value);
}
}
return instance[key];
},
/**
* Triggers an InfoWindow to open
* @param infoWindowOptions:google.maps.InfoWindowOptions
* @param marker:google.maps.Marker (optional)
* @param callback:function (optional)
* @see http://code.google.com/intl/sv-SE/apis/maps/documentation/javascript/reference.html#InfoWindowOptions
*/
openInfoWindow: function(infoWindowOptions, marker, callback) {
var iw = this.get('iw', infoWindowOptions.infoWindow || new google.maps.InfoWindow);
iw.setOptions(infoWindowOptions);
iw.open(this.get('map'), this._unwrap(marker));
this._call(callback, iw);
return this;
},
/**
* Triggers an InfoWindow to close
*/
closeInfoWindow: function() {
if ( this.get('iw') != null ) {
this.get('iw').close();
}
return this;
},
/**
* Sets an instance property
* @param key:string
* @param value:object
*/
set: function(key, value) {
this.instance[key] = value;
return this;
},
/**
* Refreshes the map
*/
refresh: function() {
var map = this.get('map');
var latLng = map.getCenter();
$(map).triggerEvent('resize');
map.setCenter(latLng);
return this;
},
/**
* Destroys the plugin.
*/
destroy: function() {
this.clear('markers').clear('services').clear('overlays')._c(this.instance);
jQuery.removeData(this.el, this.name);
},
/**
* Helper method for calling a function
* @param callback
*/
_call: function(callback) {
if ( callback && $.isFunction(callback) ) {
callback.apply(this, Array.prototype.slice.call(arguments, 1));
}
},
/**
* Helper method for google.maps.Latlng
* @param latLng:string/google.maps.LatLng
*/
_latLng: function(latLng) {
if ( !latLng ) {
return new google.maps.LatLng(0.0, 0.0);
}
if ( latLng instanceof google.maps.LatLng ) {
return latLng;
} else {
latLng = latLng.replace(/ /g,'').split(',');
return new google.maps.LatLng(latLng[0], latLng[1]);
}
},
/**
* Helper method for unwrapping jQuery/DOM/string elements
* @param obj:string/node/jQuery
*/
_unwrap: function(obj) {
return (!obj) ? null : ( (obj instanceof jQuery) ? obj[0] : ((obj instanceof Object) ? obj : $('#'+obj)[0]) )
}
});
jQuery.fn.extend( {
triggerEvent: function(eventType) {
google.maps.event.trigger(this[0], eventType);
return this;
},
addEventListener: function(eventType, eventDataOrCallback, eventCallback) {
if ( google.maps && this[0] instanceof google.maps.MVCObject ) {
google.maps.event.addListener(this[0], eventType, eventDataOrCallback);
} else {
if (eventCallback) {
this.bind(eventType, eventDataOrCallback, eventCallback);
} else {
this.bind(eventType, eventDataOrCallback);
}
}
return this;
}
/*removeEventListener: function(eventType) {
if ( google.maps && this[0] instanceof google.maps.MVCObject ) {
if (eventType) {
google.maps.event.clearListeners(this[0], eventType);
} else {
google.maps.event.clearInstanceListeners(this[0]);
}
} else {
this.unbind(eventType);
}
return this;
}*/
});
jQuery.each(('click rightclick dblclick mouseover mouseout drag dragend').split(' '), function(i, name) {
jQuery.fn[name] = function(a, b) {
return this.addEventListener(name, a, b);
}
});
} (jQuery) );
@@ -0,0 +1,130 @@
<%#= encoding: utf-8 %>
// function slideshow() {
// var $globalW = $(".global").width(),
// $slideImg = $(".slideImg"),
// $slidebanner = $(".slidebanner"),
// $slideshow = $(".slideshow"),
// $slideImgOW = $slideImg.width(),
// $slideImgOH = $slideImg.height();
// $slideImg.css({
// "widht": $globalW,
// "height": Math.floor(($globalW/$slideImgOW)*$slideImgOH),
// });
// $slideshow.css({
// "width": $globalW,
// "height": Math.floor(($globalW/$slideImgOW)*$slideImgOH),
// });
// alert(Math.floor(($globalW/$slideImgOW)*$slideImgOH))
// }
$('#index').live('pageinit',function(){
var $globalW = $(window).width(),
$slideshow = $(".slideshow");
$slideshow.css({
"width": $globalW, "height": Math.floor($globalW/720*240)
});
$(".slideImg").muImageResize({width: $globalW, height: Math.floor($globalW/720*240)});
$(this).find(".newpic img").muImageResize({width: 280, height: 200});
$('.slideshow').cycle({
fx: $effect,
timeout: $timeout
});
$(".newlist").css({
"width" : $(".newitem").outerWidth()*(Math.floor($globalW/$(".newitem").outerWidth()))+30,
})
// var oc_timer;
// clearTimeout(oc_timer);
// oc_timer = setTimeout(function () {
// $('.newlist').swipePlanes();
// }, 1000);
});
$('#announcement_content').live('pageinit',function(){
$(this).find(".newpic img").muImageResize({width: 320, height: 220});
});
$('#map').live('pageinit', function() {
var mobileDemo = { 'center': $map_center, 'zoom': $map_zoom };
var $windowH = $(window).height();
$("#map_canvas").css({
'height' : $windowH,
})
gmAPI.add('basic_map', function() {
$('#map_canvas').gmap({'center': mobileDemo.center, 'zoom': mobileDemo.zoom, 'disableDefaultUI':false, 'callback': function() {
var self = this;
self.addMarker({'position': this.get('map').getCenter() }).click(function() {
self.openInfoWindow({ 'content': $info }, this);
});
}});
}).load('basic_map');
});
$('#map').live('pageshow', function() {
gmAPI.add('basic_map', function() { $('#map_canvas').gmap('refresh'); }).load('basic_map');
});
$(document).bind('pagebeforehide',function(){
$("section.main-menu").removeClass("expanded");
});
$(document).bind("ready", function(){
// $(".openmenu").live("tap", function(){
// $("section.main-menu").toggleClass("expanded");
// return!1
// });
$("body").delegate(".openmenu","vclick",function(){
$("section.main-menu").toggleClass("expanded");
return!1
});
// alert(navigator.userAgent)
// $(".newpic img").muImageResize({width: 280, height: 100});
// $('.newlist').swipePlanes();
});
// $(window).resize(function(){
// alert("Resize");
// $(".slidebanner").removeAttr("style");
// $(".slidebanner").find("div").removeAttr("style");
// $(".slideImg").removeAttr("style");
// var $globalW = $(window).width(),
// $slideshow = $(".slideshow");
// $slideshow.css({
// "width": $globalW, "height": Math.floor($globalW/720*240)
// });
// $(".slideImg").muImageResize({width: $globalW, height: Math.floor($globalW/720*240)});
// $('.slideshow').cycle({
// fx:'scrollLeft',
// timeout: 6000,
// });
// });
$(window).bind("orientationchange", function(){
var oc_timer;
clearTimeout(oc_timer);
oc_timer = setTimeout(function () {
$(".slidebanner").removeAttr("style");
$(".slidebanner").find("div").removeAttr("style");
$(".slideImg").removeAttr("style");
// $(".newlist").removeAttr("style");
// $(".newlist").find(".clear").removeAttr("style");
// $(".newitem").removeAttr("style");
// $(".newlist").find(".clear").nextAll("div").remove();
var $globalW = $(window).width(),
$slideshow = $(".slideshow"),
$windowH = $(window).height();
$slideshow.css({
"width": $globalW, "height": Math.floor($globalW/720*240)
});
$(".slideImg").muImageResize({width: $globalW, height: Math.floor($globalW/720*240)});
$('.slideshow').cycle({
fx: $effect,
timeout: $timeout
});
$(".newlist").css({
"width" : $(".newitem").outerWidth()*(Math.floor($globalW/$(".newitem").outerWidth()))+30,
})
$("#map_canvas").css({
'height' : $windowH,
})
// $('.newlist').swipePlanes();
}, 500);
});
+2 -2
View File
@@ -3,5 +3,5 @@
//= require basic/bootstrap
//= require kernel
//= require lib/jquery.preload-min.js
//= require lib/jquery.cycle.all.latest.js
//= require lib/jquery.preload.min.js
//= require cycle2
+2 -5
View File
@@ -1,7 +1,4 @@
//= require basic
//= require lib/jquery-ui-1.10.2.custom.min.js
//= require jquery.ui.sortable
//= require lib/jquery.ui.touch-punch.min.js
//= require lib/jquery.mjs.nestedSortable.js
//= require lib/items/items
//= require lib/items/update_cates_and_tags
//= require lib/items/page_widget_edit_interface
//= require lib/jquery.mjs.nestedSortable.js
+5 -5
View File
@@ -1,17 +1,17 @@
#banner_nav {
.banner_nav {
position: absolute;
z-index: 10;
bottom: 0;
margin-right: 5px;
right: 0;
}
#banner_nav>li {
.banner_nav>li {
float: left;
display: inline-block;
*display: inline;
}
#banner_nav>li>a {
.banner_nav>li>a {
display:block;
width: 10px;
height: 10px;
@@ -25,11 +25,11 @@
text-indent: -9999px;
box-shadow: 0 0 5px rgba(0,0,0,.7);
}
#banner_nav>li>a:hover {
.banner_nav>li>a:hover {
opacity: 1;
filter: alpha(opacity = 100);
}
#banner_nav>li.activeSlide>a {
.banner_nav>li.activeSlide>a {
opacity: 1;
filter: alpha(opacity = 100);
}
+116 -52
View File
@@ -441,79 +441,140 @@ legend {
font-size: 1.2em;
}
/* Edit link in structure */
.editable {
position: relative;
padding: 0px;
margin: 0px;
min-height: 50px;
.page_content {
width: 100%;
height: 100%;
}
.editable {
position: relative;
width: 100%;
height: 100%;
min-height: 50px;
}
.edit_link {
position: absolute;
left: 2px;
right: 2px;
top: 2px;
right: 2px;
bottom: 2px;
border: 2px dashed #1769ff;
border-radius: 5px;
left: 2px;
outline: 1px dashed #0090D5;
z-index: 1000;
opacity: .3;
filter: alpha(opacity = 30);
background-color: #FFF;
-webkit-transition: all .2s linear;
-moz-transition: all .2s linear;
-o-transition: all .2s linear;
transition: all .2s linear;
}
.edit_link a {
color: #333;
position: absolute;
left: 0px;
top: 0px;
right: 0px;
bottom: 0px;
.edit_link:hover {
outline: 2px dashed #E47E6B;
}
.edit_link:hover > a:before {
display: block;
}
.edit_link > a {
text-indent: -99999px;
text-align: left;
margin: 0!important;
padding: 0!important;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.edit_link a:before {
.edit_link > a:before {
display: none;
text-indent: 0;
color: #FFF;
content: attr(title);
padding: 5px;
font-size: 12px;
line-height: 10px;
position: absolute;
top: -2px;
left: -2px;
height: 10px;
background-color: #E47E6B;
}
.edit_link > a:after {
content: "\f044";
color: #0090D5;
font-family: FontAwesome;
position: absolute;
font-style: normal;
top: 50%;
left: 50%;
display: block;
font-size: 1.5em;
font-size: 1em;
width: 24px;
height: 24px;
margin: -12px 0 0 -12px;
margin: -8px 0 0 -12px;
text-indent: 0px;
opacity: .4;
filter: alpha(opacity = 40);
-webkit-transition: all .2s linear;
-moz-transition: all .2s linear;
-o-transition: all .2s linear;
transition: all .2s linear;
}
.editable:hover .edit_link {
opacity: .8;
border: 3px dashed #1769ff;
border-radius: 8px;
filter: alpha(opacity = 80);
.edit_link:hover > a:after {
color: #E47E6B;
}
.editable:hover .edit_link a:before {
font-size: 1.8em;
width: 28px;
height: 28px;
margin: -10px 0 0 -14px;
opacity: 1;
filter: alpha(opacity = 100);
-webkit-transition: all .2s linear;
-moz-transition: all .2s linear;
-o-transition: all .2s linear;
transition: all .2s linear;
/* Page Parts */
.page-parts {
background-color: #E7E7E7;
}
.page-parts body {
background-color: transparent;
}
.page-parts #main-wrap {
padding-top: 0;
}
.page-parts #main-wrap .wrap-inner {
padding: 30px 10px 10px;
}
.page-parts .main-forms {
text-align: center;
}
.page-parts .main-forms fieldset {
text-align: left;
}
.page-parts .main-forms > .btn-group {
margin-bottom: 20px;
}
.page-parts .display-mode td {
padding-bottom: 10px;
}
.page-parts .display-mode td i {
font-size: 2em;
}
.page-parts .radio.inline + .radio.inline,
.page-parts .checkbox.inline + .checkbox.inline {
margin-left: 0;
}
/* Show Preview */
#show_preview .modal {
width: 90%;
margin-left: -45%;
}
#show_preview .modal-body {
padding: 0;
max-height: none;
height: 100%;
overflow: hidden;
}
#show_preview iframe {
border: 0;
outline: none;
width: 100%;
height: 100%;
}
#show_preview form {
text-align: left;
margin-bottom: 0px;
}
#show_preview form .control-group {
margin-bottom: 0;
}
#show_preview form .pull-right + .pull-left {
margin-right: 10px;
}
#show_preview form .control-label {
width: 70px;
}
#show_preview form .controls {
margin-left: 80px;
}
/* tooltip */
@@ -621,8 +682,8 @@ legend {
margin-bottom: 25px;
}
.sign-in .btn {
display: block;
padding: 4px 0;
display: block;
width: 100%;
margin-bottom: 10px;
}
@@ -650,7 +711,7 @@ legend {
.sign-in .checkbox {
position: absolute;
text-align: left;
bottom: 47px;
bottom: 37px;
}
.sign-in .switchboard {
color: #08C;
@@ -695,6 +756,9 @@ legend {
width: auto;
margin-left: auto;
}
#show_preview .modal {
margin-left: 0 auto;
}
}
@media (max-width: 480px) {
@@ -20,6 +20,9 @@
.nano .content::-webkit-scrollbar {
visibility: hidden;
}
.nano .content iframe {
position: absolute;
}
.has-scrollbar .content::-webkit-scrollbar {
visibility: visible;
}
+12 -65
View File
@@ -2,17 +2,16 @@
top: 0px;
left: -10px;
right: -10px;
height: 40px;
z-index: 1041;
position: fixed;
margin-bottom: 0;
height: 40px;
}
#orbit-bar .orbitlogo {
width: 50px;
height: 40px;
padding: 0!important;
width: 20px;
height: 20px;
background-size: 70%;
display: block;
display: inline-block;
background-position: center;
background-repeat: no-repeat;
background-image: url(<%= asset_path 'orbit-logo.svg' %>);
@@ -20,23 +19,8 @@
/* For Suck IE */
background-image: url(<%= asset_path 'orbit-logo.png' %>)\9;
}
#orbit-bar .dropdown-menu li > a {
padding: 0 20px;
display: block;
height: 30px;
line-height: 30px;
}
#orbit-bar .dropdown-menu li i {
float: left;
display: inline-block;
margin-right: 5px;
line-height: 30px;
height: 100%;
}
#orbit-bar.navbar .nav > li > a {
color: #EEE;
padding: 0 15px;
display: block;
text-shadow: 0 -1px 0 #000;
border-right: 1px solid #363636;
box-shadow: 1px 0px 0px rgba(0, 0, 0, 0.3);
@@ -50,11 +34,6 @@
background-color: #0095CF;
text-shadow: 0 -1px 0 #014380;
}
#orbit-bar.navbar .nav > li > a > [class^="icon"],
#orbit-bar.navbar .nav > li > a > [class*=" icon"] {
line-height: 40px;
display: block;
}
#orbit-bar.navbar .nav li.dropdown.open > .dropdown-toggle,
#orbit-bar.navbar .nav li.dropdown.active > .dropdown-toggle,
#orbit-bar.navbar .nav li.dropdown.open.active > .dropdown-toggle {
@@ -62,7 +41,9 @@
text-shadow: 0 -1px 0 #014380;
}
#orbit-bar .navbar-inner {
height: 40px;
border-width: 0;
min-height: 40px;
background-color: #333333;
-webkit-border-radius: 0px;
-moz-border-radius: 0px;
@@ -85,10 +66,6 @@
right: auto;
bottom: auto;
}
#orbit-bar .nav > li {
display: block;
line-height: 40px;
}
#orbit-bar .nav [class^="icon"],
#orbit-bar .nav [class*=" icon"] {
font-size: 1.5em;
@@ -115,45 +92,17 @@
#orbit-bar .modal .input-prepend {
margin-bottom: 15px;
}
#orbit-bar .modal .other-sign-in {
position: relative;
text-align: center;
margin-top: 20px;
margin-bottom: 30px;
padding-bottom: 20px;
border-bottom: 1px solid #EDEDED;
}
#orbit-bar .modal .other-sign-in .btn {
padding: 4px 0;
display: block;
margin-bottom: 5px;
width: 100%;
}
#orbit-bar .modal .other-sign-in p {
position: absolute;
width: 30px;
height: 30px;
background-color: #FFF;
padding: 0 10px;
margin-bottom: 0;
margin-left: -25px;
line-height: 30px;
left: 50%;
bottom: -15px;
font-size: 1.3em;
color: #B1B1B1;
}
/*Search*/
#orbit-bar #search {
margin-bottom: 0;
position: relative;
padding: 0 10px;
padding: 8px 10px 0;
border-right: 1px solid #363636;
box-shadow: 1px 0px 0px rgba(0, 0, 0, 0.3);
}
#orbit-bar #search form {
margin: 8px 0;
margin-bottom: 8px;
}
#orbit-bar #search input[type="text"] {
height: 14px;
@@ -161,7 +110,6 @@
font-size: 13px;
padding-left: 25px;
padding-right: 25px;
display: block;
-webkit-border-radius: 12px;
-moz-border-radius: 12px;
-o-border-radius: 12px;
@@ -174,16 +122,15 @@
#orbit-bar #search .search-clear {
position: absolute;
color: #A3A3A3;
top: 16px;
top: 14px;
}
#orbit-bar #search .icon-search {
left: 15px;
left: 13px;
top: 15px;
font-size: 1.2em;
width: 1.25em;
margin-top: 0;
}
#orbit-bar #search .search-clear {
right: 13px;
right: 14px;
font-size: 1.3em;
}
#orbit-bar #search .search-clear:hover {
@@ -21,10 +21,14 @@
}
.form_fix {
textarea {
margin-bottom: 12px;
margin-bottom: 12px;
}
input {
input[type="text"] {
margin-left: 0;
margin-top: 0;
}
input[type="text"] + input {
margin-top: 12px;
}
}
// fixed width column with 12px gutter
@@ -56,4 +56,10 @@
width: 26px;
height: 3px;
background: url(miniColors/line.gif) center no-repeat;
}
.miniColors-trigger.btn {
background-image: none;
height: 16px;
width: 0px;
}
@@ -125,6 +125,14 @@
}
#list-view .checkbox-card li {
-webkit-transition: none;
-moz-transition: none;
-o-transition: none;
transition: none;
}
/* Responsive */
@media (max-width: 767px) {
@@ -0,0 +1,52 @@
/* Based on the theme at http://bonsaiden.github.com/JavaScript-Garden */
/*<!--breakpoint-->*/
.breakpoints {width: .8em;}
.breakpoint { color: #822; }
/*<!--match-->*/
span.CodeMirror-matchhighlight { background: #494949 }
.CodeMirror-focused span.CodeMirror-matchhighlight { background: #314D67 !important; }
/*<!--activeline-->*/
.activeline {background: #253540 !important;}
.cm-s-midnight.CodeMirror {
background: #0F192A;
color: #D1EDFF;
}
.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}
.cm-s-midnight div.CodeMirror-selected {background: #314D67 !important;}
.cm-s-midnight .CodeMirror-gutters {background: #0F192A; border-right: 1px solid;}
.cm-s-midnight .CodeMirror-linenumber {color: #D0D0D0;}
.cm-s-midnight .CodeMirror-cursor {
border-left: 1px solid #F8F8F0 !important;
}
.cm-s-midnight span.cm-comment {color: #428BDD;}
.cm-s-midnight span.cm-atom {color: #AE81FF;}
.cm-s-midnight span.cm-number {color: #D1EDFF;}
.cm-s-midnight span.cm-property, .cm-s-tropicaleve span.cm-attribute {color: #A6E22E;}
.cm-s-midnight span.cm-keyword {color: #E83737;}
.cm-s-midnight span.cm-string {color: #1DC116;}
.cm-s-midnight span.cm-variable {color: #FFAA3E;}
.cm-s-midnight span.cm-variable-2 {color: #FFAA3E;}
.cm-s-midnight span.cm-def {color: #4DD;}
.cm-s-midnight span.cm-error {background: #F92672; color: #F8F8F0;}
.cm-s-midnight span.cm-bracket {color: #D1EDFF;}
.cm-s-midnight span.cm-tag {color: #008;}
.cm-s-midnight span.cm-link {color: #AE81FF;}
.cm-s-midnight .CodeMirror-matchingbracket {
text-decoration: underline;
color: white !important;
}
.typ { color: #FFAA3E; }
.atn { color: #606; }
.atv { color: #080; }
.dec { color: #606; }
+20 -18
View File
@@ -1,21 +1,23 @@
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/ambiance-mobile.css);
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/ambiance.css);
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/blackboard.css);
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/cobalt.css);
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/eclipse.css);
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/elegant.css);
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/erlang-dark.css);
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/midnight.css);
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/monokai.css);
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/neat.css);
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/night.css);
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/rubyblue.css);
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/solarized.css);
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/theme.css);
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/twilight.css);
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/vibrant-ink.css);
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/xq-dark.css);
@import url(/orbit_4.0.1/assets/stylesheets/lib/codemirror/theme/xq-light.css);
/*
*= require 'lib/codemirror/theme/ambiance-mobile'
*= require "lib/codemirror/theme/ambiance"
*= require "lib/codemirror/theme/blackboard"
*= require "lib/codemirror/theme/cobalt"
*= require "lib/codemirror/theme/eclipse"
*= require "lib/codemirror/theme/elegant"
*= require "lib/codemirror/theme/erlang-dark"
*= require "lib/codemirror/theme/midnight"
*= require "lib/codemirror/theme/monokai"
*= require "lib/codemirror/theme/neat"
*= require "lib/codemirror/theme/night"
*= require "lib/codemirror/theme/rubyblue"
*= require "lib/codemirror/theme/solarized"
*= require "lib/codemirror/theme/theme"
*= require "lib/codemirror/theme/twilight"
*= require "lib/codemirror/theme/vibrant-ink"
*= require "lib/codemirror/theme/xq-dark"
*= require "lib/codemirror/theme/xq-light"
*/
.cm-tab {
border-left: 1px solid rgba(200, 200, 200, .2);
}
+69
View File
@@ -334,6 +334,75 @@
.main-forms .control-group .add-target .btn-group .btn.last {
border-radius: 0 4px 4px 0;
}
.main-forms .parts-none {
width: 100%;
text-align: center;
padding: 50px 0 70px;
font-size: 2em;
}
.main-forms .display-mode .typesetting {
margin: 0 0 10px 0;
}
.main-forms .display-mode table td:last-child {
text-align: right;
}
.main-forms .display-mode .typesetting li {
display: inline-block;
float: left;
width: 120px;
position: relative;
padding: 2px;
text-align: center;
}
.main-forms .display-mode .typesetting li + li {
margin-left: 10px;
}
.main-forms .display-mode .typesetting li.active {
padding: 0;
width: 124px;
}
.main-forms .display-mode .typesetting li.active:after {
font-family: FontAwesome;
content: "\f00c";
font-size: 12px;
text-indent: 15px;
line-height: 18px;
color: #FFF;
position: absolute;
top: 2px;
right: 2px;
width: 0px;
height: 0px;
border-style: solid;
border-width: 0 30px 30px 0;
border-color: transparent #FFA307 transparent transparent;
z-index: 1;
}
.main-forms .display-mode .typesetting li.active img {
border-radius: 5px;
background-color: #FFA307;
padding: 2px;
}
.main-forms .display-mode .typesetting img {
width: 120px;
height: 120px;
}
.main-forms .display-mode .typesetting input[type="radio"] {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0)0;
opacity: 0;
position: absolute;
width: 100%;
height: 100%;
margin: 0;
}
.main-forms .display-mode .typesetting .style_description {
display: block;
line-height: 1.2em;
font-size: 12px;
color: #686868;
padding-top: 10px;
}
#user-forms .control-group .add-target .input-append input.last {
border-radius: 4px;
-200
View File
@@ -1,200 +0,0 @@
/* Main List */
.main-list {
margin-bottom: 10px;
}
.main-list tbody {
border: 1px solid #dddddd;
}
.main-list thead {
border: 1px solid #454545;
}
.main-list thead th {
vertical-align: middle;
background-color: #454545;
white-space: nowrap;
color: #FFFFFF;
}
.main-list tbody tr.disable td {
color: #C5C5C5;
background-color: #eeeeee;
}
.main-list tbody tr.disable td .label-info {
background-color: #999999;
}
.main-list tbody tr.active td:first-child {
position: relative;
}
.main-list tbody tr.active td:first-child:before {
content: "";
width: 0px;
height: 0px;
left: -21px;
top: 50%;
margin-top: -6px;
position: absolute;
border-style: solid;
border-width: 6px 0 6px 6px;
border-color: transparent transparent transparent #333333;
}
.main-list td {
background-color: #FFFFFF;
}
.main-list td input[type="text"] {
margin-bottom: 0;
margin-left: -.4em;
margin-right: 3px;
padding: 0 .3em;
width: 4em;
}
.main-list td.action {
vertical-align: middle;
text-align: right;
}
.main-list td.preview img {
width: 100%;
}
.main-list td .banner-link {
width: 100px;
max-width: 120px;
display: inline-block;
text-overflow: ellipsis;
overflow: hidden;
}
.main-list td .file-list {
display: inline-block;
margin: 0 0 -6px;
}
.main-list td .file-list:after {
content: "";
clear: both;
display: block;
height: 0;
visibility: hidden;
}
.main-list td .file-type {
position: relative;
list-style: none;
float: left;
display: inline-block;
}
.main-list td .file-type a {
background-color: #A6A6A6;
color: #FFFFFF;
margin-right: 10px;
padding: 2px 5px 2px 3px;
border-radius: 3px;
text-decoration: none;
text-shadow: 0px -1px 0px rgba(100, 100, 100, .6);
}
.main-list td .file-type i,
.main-forms fieldset .input-area .controls .file-type i {
width: 16px;
height: 16px;
margin-bottom: -1px;
display: inline-block;
}
.main-list td .file-type[class^="type-"] i,
.main-list td .file-type[class*=" type-"] i,
.main-forms fieldset .input-area .controls .file-type[class*=" type-"] i,
.main-forms fieldset .input-area .controls .file-type[class^="type-"] i {
background-image: url(/orbit_4.0.1/assets/images/file_type.png);
}
.file-type.type-pdf i {background-position: 0px 0px;}
.file-type.type-psd i {background-position: -16px 0px;}
.file-type.type-ai i {background-position: -32px 0px;}
.file-type.type-fla i {background-position: -48px 0px;}
.file-type.type-in i {background-position: -64px 0px;}
.file-type.type-acc i {background-position: 0px -16px;}
.file-type.type-do i {background-position: -16px -16px;}
.file-type.type-xl i {background-position: -32px -16px;}
.file-type.type-pp i {background-position: -48px -16px;}
.file-type.type-zip i {background-position: -64px -16px;}
.file-type.type-txt i {background-position: 0px -32px;}
.file-type.type-jp i {background-position: -16px -32px;}
.file-type.type-gif i {background-position: -32px -32px;}
.file-type.type-png i {background-position: -48px -32px;}
.file-type.type-audio i {background-position: -64px -32px;}
.main-list td .quick-edit {
height: 24px;
margin-top: 5px;
}
.main-list td .quick-edit .nav {
display: none;
margin-bottom: 0;
}
.main-list tr:hover .quick-edit .nav {
display: block;
}
.main-list td .quick-edit .nav > li > a {
padding-top: 4px;
padding-bottom: 4px;
margin-top: 0px;
margin-bottom: 0px;
border: 1px dotted #d1d1d1;
}
.main-list td .quick-edit .nav > li > a:hover {
border: 1px dotted transparent;
}
.main-list thead tr.sort-header th a {
padding: 8px;
margin: -8px;
display: block;
color: #FFFFFF;
text-decoration: none;
}
.main-list thead tr.sort-header th.active a {
padding-bottom: 4px;
border-bottom: 4px solid #08c;
}
.main-list .footable-row-detail td {
padding: 0;
border-top: none;
}
.main-list .footable-row-detail td .footable-row-detail-inner {
display: none;
padding: 8px;
position: relative;
border-radius: 5px;
margin: 0 8px 8px;
background-color: #ededed;
}
.main-list .footable-row-detail td .footable-row-detail-inner:after {
display: block;
height: 0px;
width: 0px;
position: absolute;
top: -6px;
left: 50%;
margin-left: -3px;
content: "";
border-style: solid;
border-width: 0 6px 6px 6px;
border-color: transparent transparent #ededed transparent;
}
.main-list .footable-row-detail td .footable-row-detail-inner div {
margin: 10px 0;
}
#preview .preview {
margin: 0 auto;
}
/* For Retina */
@media screen and (-webkit-min-device-pixel-ratio: 2), screen and (max--moz-device-pixel-ratio: 2) {
.main-list td .file-type[class^="type-"] i,
.main-list td .file-type[class*=" type-"] i,
.main-forms fieldset .input-area .controls .file-type[class*=" type-"] i,
.main-forms fieldset .input-area .controls .file-type[class^="type-"] i {
background-image: url(/orbit_4.0.1/assets/images/file_type@2x.png);
background-size: 80px 48px;
}
}
/* Responsive */
@media (max-width: 480px) {
.main-list td .quick-edit .nav {
display: block;
}
}
@@ -39,6 +39,13 @@
.main-list td {
background-color: #FFFFFF;
}
.main-list td input[type="text"] {
margin-bottom: 0;
margin-left: -.4em;
margin-right: 3px;
padding: 0 .3em;
width: 4em;
}
.main-list td.action {
vertical-align: middle;
text-align: right;
+10
View File
@@ -10,6 +10,12 @@
}
/* List */
#list-view #member-list tr.highlight td {
background-color: #FFFAE5;
}
#list-view #member-list tr.highlight td:first-child {
padding: 0
}
#list-view #member-list .gender,
#list-view #member-list td[class^="gender-"] {
width: 5px;
@@ -189,6 +195,10 @@
#list-view #member-card > li:hover .member-avatar .action {
visibility: visible;
}
#list-view #member-card .highlight {
background-color: #F0F0F0;
outline: 1px dashed #9E9E9E;
}
#list-view #member-card .member-avatar {
width: 150px;
height: 150px;
@@ -1,55 +0,0 @@
/** initial setup **/
.nano {
position : relative;
width : 100%;
height : 100%;
overflow : hidden;
}
.nano .content {
position : absolute;
overflow : scroll;
overflow-x : hidden;
top : 0;
right : 0;
bottom : 0;
left : 0;
}
.nano .content:focus {
outline: thin dotted;
}
.nano .content::-webkit-scrollbar {
visibility: hidden;
}
.has-scrollbar .content::-webkit-scrollbar {
visibility: visible;
}
.nano > .pane {
/*background : rgba(0,0,0,.25);*/
position : absolute;
width : 10px;
right : 0;
top : 0;
bottom : 0;
visibility : hidden\9; /* Target only IE7 and IE8 with this hack */
opacity : .01;
-webkit-transition : .2s;
-moz-transition : .2s;
-o-transition : .2s;
transition : .2s;
-moz-border-radius : 5px;
-webkit-border-radius : 5px;
border-radius : 5px;
}
.nano > .pane > .slider {
background: #444;
background: rgba(0,0,0,.5);
position : relative;
margin : 0 1px;
-moz-border-radius : 3px;
-webkit-border-radius : 3px;
border-radius : 3px;
}
.nano:hover > .pane, .pane.active, .pane.flashed {
visibility : visible\9; /* Target only IE7 and IE8 with this hack */
opacity : 0.99;
}
+147 -26
View File
@@ -8,7 +8,7 @@
overflow: auto;
/* Specify the width of your pageslide here */
padding: 5px;
/*padding: 5px;*/
/* These styles are optional, and describe how the pageslide will look */
background-color: #333;
@@ -17,34 +17,29 @@
-moz-box-shadow: inset 0 0 5px 5px #222;
box-shadow: inset 0 0 5px 5px #222;
}
#pageslide .page-title {
padding: 10px;
background-color: #232323;
border-bottom: 1px solid #424242;
line-height: 2em;
}
#pageslide .page-title a {
color: #FFF;
text-decoration: none;
font-size: 1.6em;
}
#pageslide .page-title span {
font-size: 1.7em;
}
#pageslide .view-page {
position: absolute;
top: 0;
bottom: 0;
width: 100%;
}
#pageslide .content {
padding: 15px;
}
#pageslide #view-page .content,
#pageslide #view-page .pane {
outline: none;
padding: 0px;
margin-top: 57px;
}
#pageslide #view-page .content {
padding-bottom: 10px;
}
#pageslide #view-page .page-info {
padding: 0 10px;
border-bottom: 1px solid #222222;
box-shadow: 0px 1px 0px #404040;
line-height: 50px;
}
#pageslide #view-page .page-info a {
color: #8f8f8f;
font-size: 2em;
text-decoration: none;
}
#pageslide #view-page .page-info a:hover {
color: #efefef;
}
#pageslide #view-page .page-info h3 {
margin: 5px 0;
}
#pageslide form {
margin-bottom: 0;
@@ -89,4 +84,130 @@
display: inline-block;
height: 30px;
padding: 0 2px 0 5px;
}
#pageslide .groups {
margin-bottom: 10px;
}
#pageslide .error-cover {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
text-align: center;
background-color: #333;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=95)";
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=95);
opacity: .95;
}
#pageslide .error-cover .msg {
position: absolute;
top: 50%;
margin-top: -55px;
height: 110px;
width: 100%;
}
#pageslide .error-cover i {
font-size: 6em;
}
#pageslide .error-cover p {
font-size: 1.3em;
}
#pageslide .suckIE {
color: #EE4545;
}
#pageslide .link-options {
display: none;
}
#pageslide .active-link {
margin-bottom: 10px;
}
#pageslide .active-link > label {
margin-bottom: 0;
}
#pageslide .active-link .active-mune {
margin-left: 20px;
display: none;
}
#pageslide .active-link .active-mune span {
display: inline-block;
margin-right: 20px;
margin-top: 5px;
color: #8A8A8A;
float: left;
}
#pageslide .display-mode i {
font-size: 2em;
}
#pageslide .display-mode table {
margin-bottom: 10px;
text-align: left;
}
#pageslide .display-mode table td:last-child {
text-align: right;
}
#pageslide .display-mode table thead th {
color: #8A8A8A;
font-size: 12px;
}
#pageslide .typesetting {
margin: 0;
list-style: none;
}
#pageslide .typesetting li {
width: 60px;
height: 60px;
position: relative;
margin-bottom: 10px;
padding: 2px;
}
#pageslide .typesetting li.active {
border-radius: 5px;
background-color: #fff;
}
#pageslide .typesetting li.active:after {
font-family: FontAwesome;
content: "\f00c";
font-size: 12px;
text-indent: 15px;
line-height: 18px;
color: #08C;
position: absolute;
top: 2px;
right: 2px;
width: 0px;
height: 0px;
border-style: solid;
border-width: 0 30px 30px 0;
border-color: transparent #FFF transparent transparent;
z-index: 1;
}
#pageslide .typesetting input[type="radio"] {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0)0;
opacity: 0;
position: absolute;
width: 100%;
height: 100%;
margin: 0;
}
#pageslide .typesetting img {
width: 100%;
height: 100%;
}
#pageslide .typesetting .style_description {
position: absolute;
width: 195px;
top: 0;
left: 75px;
line-height: 1.1em;
font-size: 12px;
color: #E7E7E7;
padding-top: 5px;
}
/* iFrame */
#pageslide_iframe .page_content {
background-color: #000;
}
+2 -2
View File
@@ -66,10 +66,10 @@
background-image: linear-gradient(to bottom, #fafafa, #efefef);
filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fafafa', endColorstr='#efefef', GradientType=0);
}
.toggle-control .togglebox.disabled {
.toggle-control .togglebox.disable {
background-color: #999b93;
}
.toggle-control .togglebox.disabled label {
.toggle-control .togglebox.disable label {
left: -19px;
}
.toggle-control .togglebox label:before,
+3
View File
@@ -29,6 +29,9 @@
.topnav .btn-group {
margin-left: 0;
}
.topnav .view-switch {
margin-left: 10px;
}
/* Bottom Nav */
.bottomnav {
+10
View File
@@ -0,0 +1,10 @@
/*
*This is a manifest file that'll automatically include all the stylesheets available in this directory
*and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
*the top of the compiled file, but it's generally better to create a new file per style scope.
*= require mobile/jquery.mobile-1.2.0.css
*= require mobile/add2home
*= require mobile/orbit-mobile
*= require basic/icon
*= require basic/font-awesome
*/
+158
View File
@@ -0,0 +1,158 @@
/**
*
* Main container
*
*/
#addToHomeScreen {
z-index:9999;
-webkit-user-select:none;
-webkit-box-sizing:border-box;
width:240px;
font-size:15px;
padding:12px 14px;
text-align:left;
font-family:helvetica;
background-image:-webkit-gradient(linear,0 0,0 100%,color-stop(0,#fff),color-stop(0.02,#eee),color-stop(0.98,#ccc),color-stop(1,#a3a3a3));
border:1px solid #505050;
-webkit-border-radius:8px;
-webkit-background-clip:padding-box;
color:#333;
text-shadow:0 1px 0 rgba(255,255,255,0.75);
line-height:130%;
-webkit-box-shadow:0 0 4px rgba(0,0,0,0.5);
}
#addToHomeScreen.addToHomeIpad {
width:268px;
font-size:18px;
padding:14px;
}
/**
*
* The 'wide' class is added when the popup contains the touch icon
*
*/
#addToHomeScreen.addToHomeWide {
width:296px;
}
#addToHomeScreen.addToHomeIpad.addToHomeWide {
width:320px;
font-size:18px;
padding:14px;
}
/**
*
* The balloon arrow
*
*/
#addToHomeScreen .addToHomeArrow {
position:absolute;
background-image:-webkit-gradient(linear,0 0,100% 100%,color-stop(0,rgba(204,204,204,0)),color-stop(0.4,rgba(204,204,204,0)),color-stop(0.4,#ccc));
border-width:0 1px 1px 0;
border-style:solid;
border-color:#505050;
width:16px; height:16px;
-webkit-transform:rotateZ(45deg);
bottom:-9px; left:50%;
margin-left:-8px;
-webkit-box-shadow:inset -1px -1px 0 #a9a9a9;
-webkit-border-bottom-right-radius:2px;
}
/**
*
* The balloon arrow for iPad
*
*/
#addToHomeScreen.addToHomeIpad .addToHomeArrow {
-webkit-transform:rotateZ(-135deg);
background-image:-webkit-gradient(linear,0 0,100% 100%,color-stop(0,rgba(238,238,238,0)),color-stop(0.4,rgba(238,238,238,0)),color-stop(0.4,#eee));
-webkit-box-shadow:inset -1px -1px 0 #fff;
top:-9px; bottom:auto; left:50%;
}
/**
*
* Close button
*
*/
#addToHomeScreen .addToHomeClose {
-webkit-box-sizing:border-box;
position:absolute;
right:4px;
top:4px;
width:18px;
height:18px; line-height:14px;
text-align:center;
text-indent:1px;
-webkit-border-radius:9px;
background:rgba(0,0,0,0.12);
color:#707070;
-webkit-box-shadow:0 1px 0 #fff;
font-size:16px;
}
/**
*
* The '+' icon, displayed only on iOS < 4.2
*
*/
#addToHomeScreen .addToHomePlus {
font-weight:bold;
font-size:1.3em;
}
/**
*
* The 'share' icon, displayed only on iOS >= 4.2
*
*/
#addToHomeScreen .addToHomeShare {
display:inline-block;
width:18px;
height:15px;
background-repeat:no-repeat;
background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAPCAQAAABDj1eZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUdJREFUKFNtkLtLw1AYxS/qJLhXVKr2ZRulUNtiqgSb3CziICI6ucTFVYcOnaQOFRwUnNTRwUWXgpP/QdHNUEQUHGxofYBTlRs83iZNjKTncOGe7/vx3QchXUWn6FL3jhfKUdCCr5zuifV5oDiHQM+c+CIhiiCSWNu08iq9oHXKLAiqrgR4UXqlOEYZt++ExEL0wW7+OW0G10muLv9gmqfe5FAWKmTMYQYiFL7PYwyLOD8lSjNh2gdnPzMII4QUBxc4OothbAF7GCBKQ0YbSWyPQsIhqvetS+y0ygGMo/KFZfviDvR4AhwgZU9dGYnA0J/6ndc15i3ouYIMcVVUcEXIoOxCeRCfwP8sXBSdjtpUv/1QW+K16kCCIUC4id9Fa0JtkluwVkSfqPL6RwfSDA0aNlx7k/bWgViB7bMS2/1vk5sdsZLN/ALSuL3tylO4RAAAAABJRU5ErkJggg==);
background-size:18px 15px;
text-indent:-9999em;
overflow:hidden;
}
/**
*
* The touch icon (if available)
*
*/
#addToHomeScreen .addToHomeTouchIcon {
display:block;
float:left;
-webkit-border-radius:6px;
-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.5),
inset 0 0 2px rgba(255,255,255,0.9);
background-repeat:no-repeat;
width:57px; height:57px;
-webkit-background-size:57px 57px;
margin:0 12px 0 0;
border:1px solid #333;
-webkit-background-clip:padding-box;
}
/**
*
* The 'share' icon for retina display
*
*/
@media all and (-webkit-min-device-pixel-ratio: 2) {
#addToHomeScreen .addToHomeShare {
background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAeCAQAAADu6HTYAAADPElEQVR4Xq3TX2gcRRzA8e/M7mVv2+TSNpc/TZtrY6jUGqgaSAmEChKLrYK0YH0RFC2CSCkEfCghiKU04J8qNigq6os+iQV98MHWFwVBrQQRWs21lBw5cw3NNb1/udu72RGG5Y77IzXW77D7sAwf5scyYoL6BGXSDKFZwaGpLvIUaeoCkvX1MmsM0Ny6oRSQYOLuIS+YZOpfQdqslpUxcZrzTVAz4qPwW2O3CeIwC/RSzeY6Ow1QhUrkr+YOWfEKDkEP8Rij7CHKJmrFSDHBdwGEE5wiGChPN+PnT8VdRtEIl1d4gRj/1EVe5ZSBKGh8iqQpo/Fo5+3C/gz0MYg4zgwbqday1/Q4B8BGQ45d/Hi54lakCrU5obOcidJpu1+Lg9whjabyaOYLnrIBFFaRD+xe2ybMDWY66GmP/WA9cGfGp0CWhy0wkMN8inepFiH2rV1j0NQSNQbFLRQnS8/8YSDBBpadfv4CYDub2fmeHDNAsL1MBWUel0iA+Xik6eHcyvD3vAMSU1TGuA/YRS+dD7ovCQN43GKRFCU20Kd3V/avDVVyAZ5niTEuLA5/zBGWg9EEEhfJKN200Tat8CmRAQb9+wv7soPlHt2tQorsz1uPbr0HTY4sJwrH47zJZwABBAKLMBoQXepwgTwdHCo+fXMkQ4lrxEmQ5AaXipPqDY9V2vn09tgvTPI71EEGYxM+/uMJLJ4svpgaWGKOi/xKgmqLSUGSUd5f2vIVJ/CgBaTIUsZ7ZBsn0+NzfMOXLFCXQyTcybN6ep5ZZgUOHn7jpfUpsZshdugPGf+E5zjbyHTSRyQ8xfRPPM/s63RHeuknSoT22mjmmnAOIMkUZ6D1xSfPPAfd1WFKM3sO2CMaHx8M1NjnXKHaAGGkOW0C02WeYHUz4qMtx+w5gUDS8NckYe5lHsMYwCZEPyEEmjLDZFmAS7CDviMdxyTkMNVBKEmYLvbiQQBIBBbCQG04bGQvFWz6CfsCQLWCigILFwcfkGYBiOpbYuOizTAyYyDdCtrGaRG1LCkIgMYEFhI0WqQZoSlbGRyHKe4qOx7iv2bVQW9dp4dlM/x6kmwnWQcd/Q3FCqwTEiT5s+6D5v/pb0SSHyg7uhMWAAAAAElFTkSuQmCC);
}
}
+303
View File
@@ -0,0 +1,303 @@
/* Font Awesome
the iconic font designed for use with Twitter Bootstrap
-------------------------------------------------------
The full suite of pictographic icons, examples, and documentation
can be found at: http://fortawesome.github.com/Font-Awesome/
License
-------------------------------------------------------
The Font Awesome webfont, CSS, and LESS files are licensed under CC BY 3.0:
http://creativecommons.org/licenses/by/3.0/ A mention of
'Font Awesome - http://fortawesome.github.com/Font-Awesome' in human-readable
source code is considered acceptable attribution (most common on the web).
If human readable source code is not available to the end user, a mention in
an 'About' or 'Credits' screen is considered acceptable (most common in desktop
or mobile software).
Contact
-------------------------------------------------------
Email: dave@davegandy.com
Twitter: http://twitter.com/fortaweso_me
Work: http://lemonwi.se co-founder
*/
@font-face {
font-family: "FontAwesome";
src: url('../fonts/fontawesome-webfont.eot');
src: url('../fonts/fontawesome-webfont.eot?#iefix') format('eot'), url('../fonts/fontawesome-webfont.woff') format('woff'), url('../fonts/fontawesome-webfont.ttf') format('truetype'), url('../font/fontawesome-webfont.svg#FontAwesome') format('svg');
font-weight: normal;
font-style: normal;
}
/* Font Awesome styles
------------------------------------------------------- */
[class^="icon-"]:before, [class*=" icon-"]:before {
font-family: FontAwesome;
font-weight: normal;
font-style: normal;
display: inline-block;
text-decoration: inherit;
}
a [class^="icon-"], a [class*=" icon-"] {
display: inline-block;
text-decoration: inherit;
}
/* makes the font 33% larger relative to the icon container */
.icon-large:before {
vertical-align: top;
font-size: 1.3333333333333333em;
}
.btn [class^="icon-"], .btn [class*=" icon-"] {
/* keeps button heights with and without icons the same */
line-height: .9em;
}
li [class^="icon-"], li [class*=" icon-"] {
display: inline-block;
width: 1.25em;
text-align: center;
}
li .icon-large[class^="icon-"], li .icon-large[class*=" icon-"] {
/* 1.5 increased font size for icon-large * 1.25 width */
width: 1.875em;
}
li[class^="icon-"], li[class*=" icon-"] {
margin-left: 0;
list-style-type: none;
}
li[class^="icon-"]:before, li[class*=" icon-"]:before {
text-indent: -2em;
text-align: center;
}
li[class^="icon-"].icon-large:before, li[class*=" icon-"].icon-large:before {
text-indent: -1.3333333333333333em;
}
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
readers do not read off random characters that represent icons */
.icon-glass:before { content: "\f000"; }
.icon-music:before { content: "\f001"; }
.icon-search:before { content: "\f002"; }
.icon-envelope:before { content: "\f003"; }
.icon-heart:before { content: "\f004"; }
.icon-star:before { content: "\f005"; }
.icon-star-empty:before { content: "\f006"; }
.icon-user:before { content: "\f007"; }
.icon-film:before { content: "\f008"; }
.icon-th-large:before { content: "\f009"; }
.icon-th:before { content: "\f00a"; }
.icon-th-list:before { content: "\f00b"; }
.icon-ok:before { content: "\f00c"; }
.icon-remove:before { content: "\f00d"; }
.icon-zoom-in:before { content: "\f00e"; }
.icon-zoom-out:before { content: "\f010"; }
.icon-off:before { content: "\f011"; }
.icon-signal:before { content: "\f012"; }
.icon-cog:before { content: "\f013"; }
.icon-trash:before { content: "\f014"; }
.icon-home:before { content: "\f015"; }
.icon-file:before { content: "\f016"; }
.icon-time:before { content: "\f017"; }
.icon-road:before { content: "\f018"; }
.icon-download-alt:before { content: "\f019"; }
.icon-download:before { content: "\f01a"; }
.icon-upload:before { content: "\f01b"; }
.icon-inbox:before { content: "\f01c"; }
.icon-play-circle:before { content: "\f01d"; }
.icon-repeat:before { content: "\f01e"; }
/* \f020 doesn't work in Safari. all shifted one down */
.icon-refresh:before { content: "\f021"; }
.icon-list-alt:before { content: "\f022"; }
.icon-lock:before { content: "\f023"; }
.icon-flag:before { content: "\f024"; }
.icon-headphones:before { content: "\f025"; }
.icon-volume-off:before { content: "\f026"; }
.icon-volume-down:before { content: "\f027"; }
.icon-volume-up:before { content: "\f028"; }
.icon-qrcode:before { content: "\f029"; }
.icon-barcode:before { content: "\f02a"; }
.icon-tag:before { content: "\f02b"; }
.icon-tags:before { content: "\f02c"; }
.icon-book:before { content: "\f02d"; }
.icon-bookmark:before { content: "\f02e"; }
.icon-print:before { content: "\f02f"; }
.icon-camera:before { content: "\f030"; }
.icon-font:before { content: "\f031"; }
.icon-bold:before { content: "\f032"; }
.icon-italic:before { content: "\f033"; }
.icon-text-height:before { content: "\f034"; }
.icon-text-width:before { content: "\f035"; }
.icon-align-left:before { content: "\f036"; }
.icon-align-center:before { content: "\f037"; }
.icon-align-right:before { content: "\f038"; }
.icon-align-justify:before { content: "\f039"; }
.icon-list:before { content: "\f03a"; }
.icon-indent-left:before { content: "\f03b"; }
.icon-indent-right:before { content: "\f03c"; }
.icon-facetime-video:before { content: "\f03d"; }
.icon-picture:before { content: "\f03e"; }
.icon-pencil:before { content: "\f040"; }
.icon-map-marker:before { content: "\f041"; }
.icon-adjust:before { content: "\f042"; }
.icon-tint:before { content: "\f043"; }
.icon-edit:before { content: "\f044"; }
.icon-share:before { content: "\f045"; }
.icon-check:before { content: "\f046"; }
.icon-move:before { content: "\f047"; }
.icon-step-backward:before { content: "\f048"; }
.icon-fast-backward:before { content: "\f049"; }
.icon-backward:before { content: "\f04a"; }
.icon-play:before { content: "\f04b"; }
.icon-pause:before { content: "\f04c"; }
.icon-stop:before { content: "\f04d"; }
.icon-forward:before { content: "\f04e"; }
.icon-fast-forward:before { content: "\f050"; }
.icon-step-forward:before { content: "\f051"; }
.icon-eject:before { content: "\f052"; }
.icon-chevron-left:before { content: "\f053"; }
.icon-chevron-right:before { content: "\f054"; }
.icon-plus-sign:before { content: "\f055"; }
.icon-minus-sign:before { content: "\f056"; }
.icon-remove-sign:before { content: "\f057"; }
.icon-ok-sign:before { content: "\f058"; }
.icon-question-sign:before { content: "\f059"; }
.icon-info-sign:before { content: "\f05a"; }
.icon-screenshot:before { content: "\f05b"; }
.icon-remove-circle:before { content: "\f05c"; }
.icon-ok-circle:before { content: "\f05d"; }
.icon-ban-circle:before { content: "\f05e"; }
.icon-arrow-left:before { content: "\f060"; }
.icon-arrow-right:before { content: "\f061"; }
.icon-arrow-up:before { content: "\f062"; }
.icon-arrow-down:before { content: "\f063"; }
.icon-share-alt:before { content: "\f064"; }
.icon-resize-full:before { content: "\f065"; }
.icon-resize-small:before { content: "\f066"; }
.icon-plus:before { content: "\f067"; }
.icon-minus:before { content: "\f068"; }
.icon-asterisk:before { content: "\f069"; }
.icon-exclamation-sign:before { content: "\f06a"; }
.icon-gift:before { content: "\f06b"; }
.icon-leaf:before { content: "\f06c"; }
.icon-fire:before { content: "\f06d"; }
.icon-eye-open:before { content: "\f06e"; }
.icon-eye-close:before { content: "\f070"; }
.icon-warning-sign:before { content: "\f071"; }
.icon-plane:before { content: "\f072"; }
.icon-calendar:before { content: "\f073"; }
.icon-random:before { content: "\f074"; }
.icon-comment:before { content: "\f075"; }
.icon-magnet:before { content: "\f076"; }
.icon-chevron-up:before { content: "\f077"; }
.icon-chevron-down:before { content: "\f078"; }
.icon-retweet:before { content: "\f079"; }
.icon-shopping-cart:before { content: "\f07a"; }
.icon-folder-close:before { content: "\f07b"; }
.icon-folder-open:before { content: "\f07c"; }
.icon-resize-vertical:before { content: "\f07d"; }
.icon-resize-horizontal:before { content: "\f07e"; }
.icon-bar-chart:before { content: "\f080"; }
.icon-twitter-sign:before { content: "\f081"; }
.icon-facebook-sign:before { content: "\f082"; }
.icon-camera-retro:before { content: "\f083"; }
.icon-key:before { content: "\f084"; }
.icon-cogs:before { content: "\f085"; }
.icon-comments:before { content: "\f086"; }
.icon-thumbs-up:before { content: "\f087"; }
.icon-thumbs-down:before { content: "\f088"; }
.icon-star-half:before { content: "\f089"; }
.icon-heart-empty:before { content: "\f08a"; }
.icon-signout:before { content: "\f08b"; }
.icon-linkedin-sign:before { content: "\f08c"; }
.icon-pushpin:before { content: "\f08d"; }
.icon-external-link:before { content: "\f08e"; }
.icon-signin:before { content: "\f090"; }
.icon-trophy:before { content: "\f091"; }
.icon-github-sign:before { content: "\f092"; }
.icon-upload-alt:before { content: "\f093"; }
.icon-lemon:before { content: "\f094"; }
.icon-phone:before { content: "\f095"; }
.icon-check-empty:before { content: "\f096"; }
.icon-bookmark-empty:before { content: "\f097"; }
.icon-phone-sign:before { content: "\f098"; }
.icon-twitter:before { content: "\f099"; }
.icon-facebook:before { content: "\f09a"; }
.icon-github:before { content: "\f09b"; }
.icon-unlock:before { content: "\f09c"; }
.icon-credit-card:before { content: "\f09d"; }
.icon-rss:before { content: "\f09e"; }
.icon-hdd:before { content: "\f0a0"; }
.icon-bullhorn:before { content: "\f0a1"; }
.icon-bell:before { content: "\f0a2"; }
.icon-certificate:before { content: "\f0a3"; }
.icon-hand-right:before { content: "\f0a4"; }
.icon-hand-left:before { content: "\f0a5"; }
.icon-hand-up:before { content: "\f0a6"; }
.icon-hand-down:before { content: "\f0a7"; }
.icon-circle-arrow-left:before { content: "\f0a8"; }
.icon-circle-arrow-right:before { content: "\f0a9"; }
.icon-circle-arrow-up:before { content: "\f0aa"; }
.icon-circle-arrow-down:before { content: "\f0ab"; }
.icon-globe:before { content: "\f0ac"; }
.icon-wrench:before { content: "\f0ad"; }
.icon-tasks:before { content: "\f0ae"; }
.icon-filter:before { content: "\f0b0"; }
.icon-briefcase:before { content: "\f0b1"; }
.icon-fullscreen:before { content: "\f0b2"; }
.icon-group:before { content: "\f0c0"; }
.icon-link:before { content: "\f0c1"; }
.icon-cloud:before { content: "\f0c2"; }
.icon-beaker:before { content: "\f0c3"; }
.icon-cut:before { content: "\f0c4"; }
.icon-copy:before { content: "\f0c5"; }
.icon-paper-clip:before { content: "\f0c6"; }
.icon-save:before { content: "\f0c7"; }
.icon-sign-blank:before { content: "\f0c8"; }
.icon-reorder:before { content: "\f0c9"; }
.icon-list-ul:before { content: "\f0ca"; }
.icon-list-ol:before { content: "\f0cb"; }
.icon-strikethrough:before { content: "\f0cc"; }
.icon-underline:before { content: "\f0cd"; }
.icon-table:before { content: "\f0ce"; }
.icon-magic:before { content: "\f0d0"; }
.icon-truck:before { content: "\f0d1"; }
.icon-pinterest:before { content: "\f0d2"; }
.icon-pinterest-sign:before { content: "\f0d3"; }
.icon-google-plus-sign:before { content: "\f0d4"; }
.icon-google-plus:before { content: "\f0d5"; }
.icon-money:before { content: "\f0d6"; }
.icon-caret-down:before { content: "\f0d7"; }
.icon-caret-up:before { content: "\f0d8"; }
.icon-caret-left:before { content: "\f0d9"; }
.icon-caret-right:before { content: "\f0da"; }
.icon-columns:before { content: "\f0db"; }
.icon-sort:before { content: "\f0dc"; }
.icon-sort-down:before { content: "\f0dd"; }
.icon-sort-up:before { content: "\f0de"; }
.icon-envelope-alt:before { content: "\f0e0"; }
.icon-linkedin:before { content: "\f0e1"; }
.icon-undo:before { content: "\f0e2"; }
.icon-legal:before { content: "\f0e3"; }
.icon-dashboard:before { content: "\f0e4"; }
.icon-comment-alt:before { content: "\f0e5"; }
.icon-comments-alt:before { content: "\f0e6"; }
.icon-bolt:before { content: "\f0e7"; }
.icon-sitemap:before { content: "\f0e8"; }
.icon-umbrella:before { content: "\f0e9"; }
.icon-paste:before { content: "\f0ea"; }
.icon-user-md:before { content: "\f200"; }
+519
View File
@@ -0,0 +1,519 @@
/* WARNING: Your are using ligatures for your icon font.
Ligatures are not supported in IE 9 (and older).
Use the Private Use Area encoding for best browser support.
==================================================================== */
@font-face {
font-family: 'entypo';
src:url(<%= asset_path 'entypo.eot' %>);
src:url(<%= asset_path 'entypo.eot?#iefix' %>) format('embedded-opentype'),
url(<%= asset_path 'entypo.svg#entypo' %>) format('svg'),
url(<%= asset_path 'entypo.woff' %>) format('woff'),
url(<%= asset_path 'entypo.ttf' %>) format('truetype');
font-weight: normal;
font-style: normal;
}
/* Use the following CSS code if you want to use data attributes for inserting your icons */
[data-icons]:before {
font-family: 'entypo';
content: attr(data-icon);
speak: none;
/* Enable Ligatures */
-webkit-font-feature-settings:"liga","dlig";
-moz-font-feature-settings:"liga=1, dlig=1";
-moz-font-feature-settings:"liga","dlig";
-ms-font-feature-settings:"liga","dlig";
-o-font-feature-settings:"liga","dlig";
font-feature-settings:"liga","dlig";
text-rendering:optimizeLegibility;
font-weight: normal;
-webkit-font-smoothing: antialiased;
}
/* Use the following CSS code if you want to have a class per icon */
[class^="icons-"]:before, [class*=" icons-"]:before {
font-size: 1.5em;
font-family: 'entypo';
font-style: normal;
speak: none;
/* Enable Ligatures */
-webkit-font-feature-settings:"liga","dlig";
-moz-font-feature-settings:"liga=1, dlig=1";
-moz-font-feature-settings:"liga","dlig";
-ms-font-feature-settings:"liga","dlig";
-o-font-feature-settings:"liga","dlig";
font-feature-settings:"liga","dlig";
text-rendering:optimizeLegibility;
font-weight: normal;
-webkit-font-smoothing: antialiased;
display: inline-block;
text-decoration: inherit;
}
a [class^="icons-"], a [class*=" icons-"] {
display: inline-block;
text-decoration: inherit;
}
/* makes the font 33% larger relative to the icon container */
.icons-large:before {
vertical-align: top;
font-size: 1.3333333333333333em;
}
.btn [class^="icons-"], .btn [class*=" icons-"] {
/* keeps button heights with and without icons the same */
line-height: .9em;
}
li [class^="icons-"], li [class*=" icons-"] {
display: inline-block;
width: 1.25em;
text-align: center;
margin-right: 10px;
}
li .icons-large[class^="icons-"], li .icons-large[class*=" icons-"] {
/* 1.5 increased font size for icons-large * 1.25 width */
width: 1.875em;
}
li[class^="icons-"], li[class*=" icons-"] {
margin-left: 0;
list-style-type: none;
}
li[class^="icons-"]:before, li[class*=" icons-"]:before {
text-indent: -2em;
text-align: center;
}
li[class^="icons-"].icons-large:before, li[class*=" icons-"].icons-large:before {
text-indent: -1.3333333333333333em;
}
.icons-phone:before {
content: "\70\68\6f\6e\65";
}
.icons-directions:before {
content: "\64\69\72\65\63\74\69\6f\6e\73";
}
.icons-mail:before {
content: "\6d\61\69\6c";
}
.icons-pencil:before {
content: "\70\65\6e\63\69\6c";
}
.icons-paperclip:before {
content: "\70\61\70\65\72\63\6c\69\70";
}
.icons-drawer:before {
content: "\64\72\61\77\65\72";
}
.icons-member:before {
content: "\6d\65\6d\62\65\72";
}
.icons-group:before {
content: "\67\72\6f\75\70";
}
.icons-addmember:before {
content: "\61\64\64\6d\65\6d\62\65\72";
}
.icons-location:before {
content: "\6c\6f\63\61\74\69\6f\6e";
}
.icons-share:before {
content: "\73\68\61\72\65";
}
.icons-heart-full:before {
content: "\68\65\61\72\74\2d\66\75\6c\6c";
}
.icons-heart-bare:before {
content: "\68\65\61\72\74\2d\62\61\72\65";
}
.icons-star-full:before {
content: "\73\74\61\72\2d\66\75\6c\6c";
}
.icons-star-bare:before {
content: "\73\74\61\72\2d\62\61\72\65";
}
.icons-discuss:before {
content: "\64\69\73\63\75\73\73";
}
.icons-comment:before {
content: "\63\6f\6d\6d\65\6e\74";
}
.icons-quote:before {
content: "\71\75\6f\74\65";
}
.icons-house:before {
content: "\68\6f\75\73\65";
}
.icons-search:before {
content: "\73\65\61\72\63\68";
}
.icons-printer:before {
content: "\70\72\69\6e\74\65\72";
}
.icons-bell:before {
content: "\62\65\6c\6c";
}
.icons-link:before {
content: "\6c\69\6e\6b";
}
.icons-flag:before {
content: "\66\61\6c\67";
}
.icons-cog:before {
content: "\63\6f\67";
}
.icons-tools:before {
content: "\74\6f\6f\6c\73";
}
.icons-tag:before {
content: "\74\61\67";
}
.icons-camera:before {
content: "\63\61\6d\65\72\61";
}
.icons-megaphone:before {
content: "\6d\65\67\61\70\68\6f\6e\65";
}
.icons-new:before {
content: "\6e\65\77";
}
.icons-graduation:before {
content: "\67\72\61\64\75\61\74\69\6f\6e";
}
.icons-books:before {
content: "\62\6f\6f\6b\73";
}
.icons-page:before {
content: "\70\61\67\65";
}
.icons-lifebuoy:before {
content: "\6c\69\66\65\62\75\6f\79";
}
.icons-eye:before {
content: "\65\79\65";
}
.icons-clock:before {
content: "\63\6c\6f\63\6b";
}
.icons-calendar:before {
content: "\63\61\6c\65\6e\64\61\72";
}
.icons-briefcase:before {
content: "\62\72\69\65\66\63\61\73\65";
}
.icons-gauge:before {
content: "\67\61\75\67\65";
}
.icons-language:before {
content: "\6c\61\6e\67\75\61\67\65";
}
.icons-keys:before {
content: "\6b\65\79\73";
}
.icons-earth:before {
content: "\65\61\72\74\68";
}
.icons-keyboard:before {
content: "\6b\65\79\62\6f\61\72\64";
}
.icons-browser:before {
content: "\62\72\6f\77\73\65\72";
}
.icons-publish:before {
content: "\70\75\62\6c\69\73\68";
}
.icons-code:before {
content: "\63\6f\64\65";
}
.icons-light-bulb:before {
content: "\6c\69\67\68\74\2d\62\75\6c\62";
}
.icons-database:before {
content: "\64\61\74\61\62\61\73\65";
}
.icons-box:before {
content: "\62\6f\78";
}
.icons-rss:before {
content: "\72\73\73";
}
.icons-clipboard:before {
content: "\63\6c\69\70\62\6f\61\72\64";
}
.icons-cart:before {
content: "\63\61\72\74";
}
.icons-untitled:before {
content: "\75\6e\74\69\74\6c\65\64";
}
.icons-statistics:before {
content: "\73\74\61\74\69\73\74\69\63\73";
}
.icons-pie:before {
content: "\70\69\65";
}
.icons-bars:before {
content: "\62\61\72\73";
}
.icons-graph:before {
content: "\67\72\61\70\68";
}
.icons-lock:before {
content: "\6c\6f\63\6b";
}
.icons-unlock:before {
content: "\75\6e\6c\6f\63\6b";
}
.icons-outlog:before {
content: "\6f\75\74\6c\6f\67";
}
.icons-inlog:before {
content: "\69\6e\6c\6f\67";
}
.icons-checkmark:before {
content: "\63\68\65\63\6b\6d\61\72\6b";
}
.icons-aminus:before {
content: "\61\6d\69\6e\75\73";
}
.icons-aplus:before {
content: "\61\70\6c\75\73";
}
.icons-aclose:before {
content: "\61\63\6c\6f\73\65";
}
.icons-bminus:before {
content: "\62\6d\69\6e\75\73";
}
.icons-bplus:before {
content: "\62\70\6c\75\73";
}
.icons-bclose:before {
content: "\62\63\6c\6f\73\65";
}
.icons-cminus:before {
content: "\63\6d\69\6e\75\73";
}
.icons-cplus:before {
content: "\63\70\6c\75\73";
}
.icons-cross:before {
content: "\63\72\6f\73\73";
}
.icons-blocked:before {
content: "\62\6c\6f\63\6b\65\64";
}
.icons-information:before {
content: "\69\6e\66\6f\72\6d\61\74\69\6f\6e";
}
.icons-binfo:before {
content: "\62\69\6e\66\6f";
}
.icons-question:before {
content: "\71\75\65\73\74\69\6f\6e";
}
.icons-help:before {
content: "\68\65\6c\70";
}
.icons-warning:before {
content: "\77\61\72\6e\69\6e\67";
}
.icons-shuffle:before {
content: "\73\68\75\66\66\6c\65";
}
.icons-return:before {
content: "\72\65\74\75\72\6e";
}
.icons-enter:before {
content: "\65\6e\74\65\72";
}
.icons-exchange:before {
content: "\65\78\63\68\61\6e\67\65";
}
.icons-loop:before {
content: "\6c\6f\6f\70";
}
.icons-th-list:before {
content: "\74\68\2d\6c\69\73\74";
}
.icons-th-large:before {
content: "\74\68\2d\6c\61\72\67\65";
}
.icons-align-justify:before {
content: "\61\6c\69\67\6e\2d\6a\75\73\74\69\66\79";
}
.icons-wtext:before {
content: "\77\74\65\78\74";
}
.icons-btext:before {
content: "\62\74\65\78\74";
}
.icons-pictures:before {
content: "\70\69\63\74\75\72\65";
}
.icons-video:before {
content: "\76\69\64\65\6f";
}
.icons-music:before {
content: "\6d\6f\75\73\65";
}
.icons-folder:before {
content: "\66\6f\6c\64\65\72";
}
.icons-archive:before {
content: "\61\72\63\68\69\76\65";
}
.icons-trash:before {
content: "\74\72\61\73\68";
}
.icons-upload:before {
content: "\75\70\6c\6f\61\64";
}
.icons-download:before {
content: "\64\6f\77\6e\6c\6f\61\64";
}
.icons-disk:before {
content: "\64\69\73\6b";
}
.icons-bookmark:before {
content: "\62\6f\6f\6b\6d\61\72\6b";
}
.icons-booma:before {
content: "\62\6f\6f\6d\61";
}
.icons-resize-enlarge:before {
content: "\72\65\73\69\7a\65\2d\65\6e\6c\61\72\67\65";
}
.icons-resize-shrink:before {
content: "\72\65\73\69\7a\65\2d\73\68\72\69\6e\6b";
}
.icons-flow-tree:before {
content: "\66\6c\6f\77\2d\74\72\65\65";
}
.icons-arrow-left-a:before {
content: "\61\72\72\6f\77\2d\6c\65\66\74\2d\61";
}
.icons-arrow-bottom-a:before {
content: "\61\72\72\6f\77\2d\62\6f\74\74\6f\6d\2d\61";
}
.icons-arrow-top-a:before {
content: "\61\72\72\6f\77\2d\74\6f\70\2d\61";
}
.icons-arrow-right-a:before {
content: "\61\72\72\6f\77\2d\72\69\67\68\74\2d\61";
}
.icons-arrow-left-b:before {
content: "\61\72\72\6f\77\2d\6c\65\66\74\2d\62";
}
.icons-arrow-bottom-b:before {
content: "\61\72\72\6f\77\2d\62\6f\74\74\6f\6d\2d\62";
}
.icons-arrow-top-b:before {
content: "\61\72\72\6f\77\2d\74\6f\70\2d\62";
}
.icons-arrow-right-b:before {
content: "\61\72\72\6f\77\2d\72\69\67\68\74\2d\62";
}
.icons-arrow-left-c:before {
content: "\61\72\72\6f\77\2d\6c\65\66\74\2d\63";
}
.icons-arrow-bottom-c:before {
content: "\61\72\72\6f\77\2d\62\6f\74\74\6f\6d\2d\63";
}
.icons-arrow-top-c:before {
content: "\61\72\72\6f\77\2d\74\6f\70\2d\63";
}
.icons-arrow-right-c:before {
content: "\61\72\72\6f\77\2d\72\69\67\68\74\2d\63";
}
.icons-arrow-left-d:before {
content: "\61\72\72\6f\77\2d\6c\65\66\74\2d\64";
}
.icons-arrow-bottom-d:before {
content: "\61\72\72\6f\77\2d\62\6f\74\74\6f\6d\2d\64";
}
.icons-arrow-top-d:before {
content: "\61\72\72\6f\77\2d\74\6f\70\2d\64";
}
.icons-arrow-right-d:before {
content: "\61\72\72\6f\77\2d\72\69\67\68\74\2d\64";
}
.icons-arrow-left-e:before {
content: "\61\72\72\6f\77\2d\6c\65\66\74\2d\65";
}
.icons-arrow-bottom-e:before {
content: "\61\72\72\6f\77\2d\62\6f\74\74\6f\6d\2d\65";
}
.icons-arrow-top-e:before {
content: "\61\72\72\6f\77\2d\74\6f\70\2d\65";
}
.icons-arrow-right-e:before {
content: "\61\72\72\6f\77\2d\72\69\67\68\74\2d\65";
}
.icons-arrow-left-f:before {
content: "\61\72\72\6f\77\2d\6c\65\66\74\2d\66";
}
.icons-arrow-bottom-f:before {
content: "\61\72\72\6f\77\2d\62\6f\74\74\6f\6d\2d\66";
}
.icons-arrow-top-f:before {
content: "\61\72\72\6f\77\2d\74\6f\70\2d\66";
}
.icons-left-f:before {
content: "\61\72\72\6f\77\2d\72\69\67\68\74\2d\66";
}
.icons-menu:before {
content: "\6d\65\6e\75";
}
.icons-ellipsis:before {
content: "\65\6c\6c\69\70\73\69\73";
}
.icons-dots:before {
content: "\64\6f\74\73";
}
.icons-dot:before {
content: "\64\6f\74";
}
.icons-like:before {
content: "\6c\69\6b\65";
}
.icons-suck:before {
content: "\73\75\63\6b";
}
.icons-export:before {
content: "\65\78\70\6f\72\74";
}
.icons-vcard:before {
content: "\76\63\61\72\64";
}
.icons-flow-cascade:before {
content: "\21";
}
.icons-landscape:before {
content: "\22";
}
.icons-brush:before {
content: "\62\72\75\73\68";
}
.icons-palette:before {
content: "\70\61\6c\65\74\74\65";
}
.icons-desktop:before {
content: "\64\65\73\6b\74\6f\70";
}
.icons-plane:before {
content: "\70\6c\61\6e\65";
}
.icons-booklet:before {
content: "\62\6f\6f\6b\6c\65\74";
}
.icons-update:before {
content: "\75\70\64\61\74\65";
}
.icons-reload:before {
content: "\72\65\6c\6f\61\64";
}
.icons-unload:before {
content: "\75\6e\6c\6f\61\64";
}
.icons-trophy:before {
content: "\74\72\6f\70\68\79";
}
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,374 @@
a {
text-decoration: none;
}
div[data-role="page"] {
padding-bottom: 0!important;
}
.clear:after {
clear: both;
content: "";
display: block;
height: 0;
visibility: hidden;
}
.main-menu {
display: block;
position: fixed;
width: 100%;
left: 0;
top: -50px;
display: block;
z-index: 49;
-webkit-transition: all 0.3s linear;
-moz-transition: all 0.3s linear;
-ms-transition: all 0.3s linear;
-o-transition: all 0.3s linear;
transition: all 0.3s linear;
}
.main-menu.expanded {
top: 50px;
-webkit-transition: all 0.3s linear;
-moz-transition: all 0.3s linear;
-ms-transition: all 0.3s linear;
-o-transition: all 0.3s linear;
transition: all 0.3s linear;
}
.main-menu ul {
background-color: #333;
width: 210px;
list-style: none;
margin: 0 auto;
padding: 0;
-webkit-box-shadow: 0 3px 10px rgba(0,0,0,.8), inset 0 3px 15px rgba(0,0,0,.3);;
-webkit-border-radius: 0 0 10px 10px;
}
.main-menu ul li {
float: left;
width: 58px;
border-right: 1px solid #292929;
border-left: 1px solid #3F3F3F;
padding: 0 5px;
}
.main-menu ul li:last-child {
-webkit-border-radius: 0 0 10px 0;
border-right-color: transparent;
}
.main-menu ul li:first-child {
-webkit-border-radius: 0 0 0 10px;
border-left-color: transparent;
}
.main-menu ul li:hover {
background-color: #b4111a;
}
.main-menu ul i {
font-size: 1.4em;
width: 100%;
display: block;
margin: 10px auto 0;
}
.main-menu ul span {
display: block;
margin-bottom: 10px;
text-align: center;
}
.main-menu ul li a:link, .main-menu ul li a:visited {
font-size: .6em;
color: #DFDFDF!important;
text-shadow: 0 -1px 0px #000;
text-decoration: none;
display: block;
}
.main-menu ul li a:hover, .main-menu ul li a:active {
color: #DFDFDF!important;
}
.global {
position: relative;
background-color: #333;
overflow-x: hidden;
width: 100%;
-webkit-box-shadow: -3px 0px 15px rgba(0,0,0,.5);
padding-top: 50px;
padding-bottom: 64px;
/*margin-bottom: -64px;*/
}
.header {
position: fixed;
top: 0;
left: 0;
right: 0;
background-color: #000;
padding: 0;
border: none;
z-index: 50;
/*background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#545b60), to(#191a1c));*/
background-image: -webkit-linear-gradient(top, #5282A6, #133757);
-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.8), inset 0 1px 0 rgba(127, 149, 165, 1), 0 -1px 0 rgba(31, 32, 36, 1) inset;
}
.header h1.ui-title {
margin: 8px 30%;
position: relative;
}
.header i.openmenu {
position: absolute;
display: block;
top: 40px;
left: 50%;
margin-left: -15px;
font-size: 20px;
/*color: #727272;*/
color: #7CA6C5;
/*background-color: #252525;*/
background-color: #144366;
border-radius: 0 0 5px 5px;
height: 15px;
line-height: 16px;
box-shadow: 1px 2px 2px rgba(0, 0, 0, .5);
}
.header .language .ui-btn-text {
left: 0;
}
.header .language .ui-btn-text i {
font-size: 1.1em;
margin-top: .33em;
}
.header .language .ui-icon {
background-image: none;
}
.header .ui-btn-up-a {
border: 1px solid #133547;
background-color: #0C4C64;
background-image: -webkit-gradient(linear, left top, left bottom, from( #0D6691 ), to( #0E3A4B ));
background-image: -webkit-linear-gradient( #0D6691 , #0E3A4B );
background-image: -moz-linear-gradient( #0D6691 , #0E3A4B );
background-image: -ms-linear-gradient( #0D6691 , #0E3A4B );
background-image: -o-linear-gradient( #0D6691 , #0E3A4B );
background-image: linear-gradient( #0D6691 , #0E3A4B );
}
.header h1 img {
height: 30px;
width: auto;
}
.header.ui-header > .ui-btn {
margin-top: 6px;
}
.content {
position: relative;
background-color: #FFF;
min-height: 330px;
background: url(<%= asset_path "mobile/newlist-bg.jpg" %>) repeat 0 0 transparent;
}
/*.content .list {
position: relative;
z-index: 5;
box-shadow: -5px 0px 15px rgba(0,0,0,.8)
}*/
.content .newlist {
margin: 0 auto;
padding: 10px;
}
.content .newitem {
display: inline-block;
float: left;
width: 280px;
min-height: 490px;
max-height: 490px;
background-color: #FFFFFF;
padding: 10px;
margin: 0 10px 10px 0;
box-shadow: 0px 3px 5px rgba(0,0,0,.1);
}
#index .content .newpic {
width: 280px;
height: 200px;
margin: 0 auto;
}
#index .content .newstitle {
font-size: 1.4em;
margin: 1em 0;
}
#index .content .newsDate {
font-size: 1em;
color: #8D8D8D;
}
#index .content .newsummary {
padding: 0 0 20px;
margin-bottom: 0;
}
#announcement_content .content .newpic {
width: 320px;
height: 220px;
margin: 0 auto;
}
#announcement_content .content .newstitle {
font-size: 1.4em;
padding: 0 10px;
margin: 1em 0;
}
#announcement_content .content .newsDate {
padding: 0 10px;
font-size: 1em;
color: #8D8D8D;
}
#announcement_content .content .newsummary {
padding: 0 10px 20px;
margin-bottom: 0;
}
#announcement_content .content {
padding: 10px;
}
#map div[data-role="content"] {
padding: 0;
}
#map .global {
padding: 0;
}
#page_content .global {
overflow-x: auto;
-webkit-box-shadow: none;
background-color: #f9f9f9;
}
#page_content .content {
background-image: none;
padding: 10px;
background-color: #f9f9f9;
}
#page_content .content .newsummary > * {
width: 750px!important;
}
#page_content .content .newsummary > *:after {
clear: both;
height: 0;
display: block;
content: "";
visibility: hidden;
}
div[id^="dialog"] .global {
padding: 0;
}
div[id^="dialog"] .content {
padding: 10px;
height: auto!important;
min-height: 70px;
}
/*.content .newitem:first-child {
margin-left: 0;
}
.content .newitem:last-child {
margin-right: 0;
}*/
.pagination {
height: 36px;
margin: 18px 0 0;
padding-bottom: 18px;
text-align: center;
}
.pagination ul {
padding: 0;
display: inline-block;
margin-left: 0;
margin: 0;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-moz-box-shadow: 0 1px 2px rgba(0,0,0,0.05);
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}
.pagination li {
display: inline;
}
.pagination li:first-child a {
border-left-width: 1px;
-webkit-border-radius: 3px 0 0 3px;
-moz-border-radius: 3px 0 0 3px;
border-radius: 3px 0 0 3px;
}
.pagination li:last-child a {
-webkit-border-radius: 0 3px 3px 0;
-moz-border-radius: 0 3px 3px 0;
border-radius: 0 3px 3px 0;
}
.pagination .active a {
color: #999;
cursor: default;
}
.pagination a:hover, .pagination .active a {
background-color: #E8E8E8;
}
.pagination a {
background-color: white;
}
.pagination a {
float: left;
padding: 0 10px;
line-height: 30px;
text-decoration: none;
border: 1px solid #DDD;
border-left-width: 0;
font-size: .8em;
}
.footer {
color: #999;
/*background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#545b60), to(#191a1c));*/
background-image: -webkit-linear-gradient(top, #5282A6, #133757);
}
.footer div[data-role="navbar"] i {
display: block;
width: 100%;
margin-bottom: 5px;
}
@media(min-width:320px){
}
@media(min-width: 480px){
.content .newitem {
width: 440px;
}
}
@media(min-width:600px) {
.main-menu ul {
width: 420px;
}
.main-menu ul li {
width: 128px;
}
}
@media(min-width:768px) {
.main-menu ul {
width: 480px;
}
.main-menu ul li {
width: 148px;
}
.content .newitem {
width: 280px;
}
}
@media(min-width:800px) {
.main-menu ul {
width: 480px;
}
.main-menu ul li {
width: 148px;
}
}
@media(min-width:961px) {
.main-menu ul {
width: 480px;
}
.main-menu ul li {
width: 148px;
}
}
@media(min-width: 1024px) {
.main-menu ul {
width: 600px;
}
.main-menu ul li {
width: 188px;
}
.content .newitem {
width: 280px;
}
}
@media(min-width:1280px) {
}
@@ -223,7 +223,7 @@
#orbit-bar {
margin: 0;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-family: "Chivo";
font-size: 12px;
line-height: 20px;
color: #333333;
+17 -29
View File
@@ -1,17 +1,10 @@
class Admin::AdBannersController < OrbitBackendController
open_for_visitor :only => [:index, :show]
open_for_manager :except => [:index,:show,:update,:realtime_preview]
open_for_sub_manager :except => [:index, :show]
open_for_sub_manager
def rename
@ad_banner = AdBanner.find(params[:id])
@ad_banner.title = params[:body]
render :json => {:success =>@ad_banner.save!}
end
def destroy
@ad_banner = AdBanner.find(params[:id])
@ad_banner.destroy
redirect_to admin_ad_banners_url
def index
@ad_banners = AdBanner.all.page(params[:page]).per(10)
end
def show
@@ -28,36 +21,31 @@ class Admin::AdBannersController < OrbitBackendController
def create
@ad_banner = AdBanner.new(params[:ad_banner])
if @ad_banner.save
@active = @ad_banner
redirect_to admin_ad_banners_url
#respond_to do |format|
# format.js {render 'new_created_node'}
#end
else
render 'create_error_msg'
@ad_banner = AdBanner.new(params[:ad_banner])
render :new
end
end
def edit
@ad_banner = AdBanner.find(params[:id])
render layout: false
end
def update
@ad_banner = AdBanner.find(params[:id])
@ad_banner.update_attributes(params[:ad_banner])
@ad_banner.save
if @ad_banner.update_attributes(params[:ad_banner])
redirect_to admin_ad_banners_url, :status => 303
else
render :edit
end
end
def destroy
@ad_banner = AdBanner.find(params[:id])
@ad_banner.destroy
redirect_to admin_ad_banners_url
end
def realtime_preview
@ad_banner = AdBanner.find( params[:id] ).preview_clone
@ad_banner.update_attributes(params[:ad_banner])#.update_attributes(params[:ad_images])
end
def index
@ad_banners = AdBanner.all
@active = @ad_banners.first
@tags = get_tags
end
end
+25 -29
View File
@@ -1,60 +1,56 @@
class Admin::AdImagesController < Admin::AdBannersController
# before_filter :force_order_for_user
# before_filter :for_app_sub_manager
# before_filter :for_app_manager
before_filter :only => [ :new, :edit ] do
@ad_banners = AdBanner.all
@tags = get_tags
end
def initialize
super
@app_title = "ad_banner"
end
def index
#@ad_banner = AdBanner.find params[:ad_banner_id]
#@ad_images = @ad_banner.ad_images.all.page(params[:page]).per(10)
@ad_images = AdImage.all.page(params[:page]).per(10)
@ad_images = AdImage.all.page(params[:page]).per(10)
end
def edit
#@ad_banner = AdBanner.find params[:ad_banner_id]
@ad_image = AdImage.find(params[:id])
@tags = get_tags
end
def update
@ad_image = AdImage.find(params[:id])
@ad_image.update_attributes(params[:ad_image])
redirect_to admin_ad_images_path
if @ad_image.update_attributes(params[:ad_image])
redirect_to admin_ad_images_url
else
@ad_banners = AdBanner.all
@tags = get_tags
render action: :edit
end
end
def new
#ad_banner = AdBanner.find params[:ad_banner_id]
#@ad_image =ad_banner.ad_images.build
def new
@ad_image = AdImage.new
@ad_image.post_date = Date.today
@ad_image.unpost_date = Date.today + 30
@tags = get_tags
#render :action => 'new',:url=> {:ad_banner_id => params.has_key?(:ad_banner_id)? params[:ad_banner_id],nil}
@ad_image.postdate = Date.today
@ad_image.deadline = Date.today + 30
end
def create
# @ad_banner = AdBanner.find params[:ad_banner][:id]
@ad_image = AdImage.new params[:ad_image]
#@ad_image.to_save = true
#@ad_banner.ad_images << ad_image
@ad_image = AdImage.new(params[:ad_image])
if @ad_image.save
redirect_to admin_ad_images_path
redirect_to admin_ad_images_url
else
@ad_banners = AdBanner.all
@tags = get_tags
@ad_image = AdImage.new(params[:ad_image])
render action: :new
end
end
def destroy
#@ad_banner = AdBanner.find params[:ad_banner_id]
@ad_image = AdImage.find params[:id]
if @ad_image.destroy
flash[:notice] = t('ad.success_destroy_ad_image')
redirect_to admin_ad_images_path
redirect_to admin_ad_images_url
end
end
@@ -34,38 +34,30 @@ class Admin::AuthorizationsController < OrbitBackendController
end
def add_roles
roles = Role.find(params[:role_ids]) rescue []
users = []
roles.each do |role|
users += role.users.all.entries
end
unless roles.blank?
roles = Role.find(params[:role_ids]) rescue nil
unless roles.nil?
authorization = get_or_create_authorization
add_roles_to_auth(authorization, roles) unless @error
add_roles_to_auth(authorization, roles)
end
@users = authorization.authorized_users
render 'admin/authorizations/reload_users'
end
def add_sub_roles
sub_roles = SubRole.find(params[:sub_role_ids]) rescue []
users = []
sub_roles.each do |sub_role|
users += sub_role.users.all.entries
end
unless sub_roles.blank?
sub_roles = SubRole.find(params[:sub_role_ids]) rescue nil
unless sub_roles.nil?
authorization = get_or_create_authorization
add_sub_roles_to_auth(authorization, sub_roles) unless @error
add_sub_roles_to_auth(authorization, sub_roles)
end
@users = authorization.authorized_users
render 'admin/authorizations/reload_users'
end
def add_users
users = User.find(params[:user_ids]) rescue []
unless users.blank?
users = User.find(params[:user_ids]) rescue nil
unless users.nil?
authorization = get_or_create_authorization
add_users_to_auth(authorization, users) unless @error
add_users_to_auth(authorization, users)
end
@users = authorization.authorized_users
render 'admin/authorizations/reload_users'
@@ -120,10 +112,6 @@ class Admin::AuthorizationsController < OrbitBackendController
protected
def add_managers_to_auth(users)
@module_app.add_managers(users)
end
def add_roles_to_auth(authorization, roles)
authorization.add_roles(roles)
end
@@ -151,7 +139,7 @@ class Admin::AuthorizationsController < OrbitBackendController
@error = t(:no_data)
end
when nil
@module_app.auth_manager || @module_app.create_auth_manager(module_app_id: @module_app.id, title: "#{@type}_#{@module_app.key}")
@module_app.auth_manager || @module_app.create_auth_manager(module_app_id: @module_app.id, title: @module_app.key)
else
auth = @object.get_authorization_by_title("#{@type}_#{@module_app.key}")
unless auth
@@ -162,10 +150,6 @@ class Admin::AuthorizationsController < OrbitBackendController
end
end
def remove_managers_from_auth(users)
@module_app.remove_manager(users)
end
def remove_roles_form_auth(authorization, roles)
authorization.remove_roles(roles)
end
@@ -1,12 +1,6 @@
class Admin::CategoriesController < OrbitBackendController
# TODO = put back ========================
# before_filter :force_order_for_visitor, only: [:index]
# before_filter :force_order_for_user, except: [:index]
# before_filter :for_app_sub_manager, except: [:index]
# ========================================
before_filter :setup_vars
# ========================================
open_for_manager
def index
@categories = get_categories_for_index
@@ -37,7 +31,7 @@ class Admin::CategoriesController < OrbitBackendController
def update
@category = Category.find(params[:id])
if @category.update_attributes(params[:category])
redirect_to admin_module_app_categories_url(@module_app_id)
redirect_to admin_module_app_categories_url(@module_app_id), :status => 303
else
flash.now[:error] = t('update.error.category')
render action: :edit
+30 -2
View File
@@ -1,3 +1,6 @@
require 'fileutils'
require 'usagewatch'
class Admin::DashboardsController < OrbitBackendController
open_for_visitor
@@ -8,7 +11,7 @@ class Admin::DashboardsController < OrbitBackendController
check_backend_openness
@module_app_contents, @module_app_contents_total = get_module_app_count('bulletin', 'page_context', 'web_link')
@recent_updated = get_recently_updated('bulletin', 'page_context', 'web_link')
@most_visited = get_most_visited('bulletin', 'page_context')
@most_visited = get_most_visited('bulletin', 'page_context','page')
end
def reload_all_content
@@ -19,7 +22,7 @@ class Admin::DashboardsController < OrbitBackendController
end
def reload_most_visited
@most_visited = get_most_visited('bulletin', 'page_context')
@most_visited = get_most_visited('bulletin', 'page_context','page')
respond_to do |format|
format.js { render 'reload', locals: {div_id: 'most_visited'} }
end
@@ -32,6 +35,31 @@ class Admin::DashboardsController < OrbitBackendController
end
end
def get_cpu_usage
@usw = Usagewatch
render :js => @usw.uw_cpuused.to_s
end
def get_mem_usage
@usw = Usagewatch
render :js => @usw.uw_memused.to_s
end
def get_disk_usage
@usw = Usagewatch
render :json => @usw.uw_diskused_perc.to_s
end
def get_month_traffic
result = []
(0..31).each do |i|
the_day = i.day.ago
visits = Impression.where( created_at: {'$gte' => the_day.beginning_of_day, '$lte' => the_day.end_of_day}).count
result.push({the_day.strftime("%b-%d")=>visits})
end
render :js => result.to_json
end
protected
def get_module_app_count(*args)
+1 -2
View File
@@ -54,10 +54,9 @@ class Admin::DesignsController < OrbitBackendController
when 'javascripts', 'themes'#, 'images'
@object = @design.send(params[:type]).find(params[:object_id])
end
Dir.mktmpdir('f_path') { |dir|
temp_file = File.new(dir + '/' + File.basename(@object.file.url), 'w+')
temp_file.write(params[:file][:content].force_encoding('UTF-8'))
temp_file.write(params[:html_code].force_encoding('UTF-8'))
@object.remove_file!
@object.file = temp_file
@object.save
@@ -1,764 +0,0 @@
# encoding: utf-8
require 'net/http'
require 'open-uri'
class Admin::ImportDataController < OrbitBackendController
# helper Admin::PagePartsHelper
# include Admin::FrontendWidgetInterface
def get_teacher_data
uri = URI("https://localhost:8000/teachers.xml")
#params = {"UnitName" => "管理學院".encode('big5-uao'), "account" => "manage"}
#uri.query = URI.encode_www_form(params)
res = Net::HTTP.get_response(uri)
@teacher_data = Hash.from_xml(res.body)
@teachers = @teacher_data["objects"]
@i = 5000
@teachers.each do |hash|
# @roles = Role.skip(1).first
@roles = Role.all
@teacher = User.new
I18n.locale = :zh_tw
if !hash['teacher_zh_tw'].blank?
@teacher.first_name = hash['teacher_zh_tw']
elsif hash['teacher_zh_tw'].blank? && !hash['teacher_en'].blank?
@teacher.first_name = hash['teacher_en']
elsif hash['teacher_zh_tw'].blank? && hash['teacher_en'].blank?
@teacher.first_name = "Please Fill the Name"
end
I18n.locale = :en
if !hash['teacher_en'].blank?
@teacher.first_name = hash['teacher_en']
elsif hash['teacher_en'].blank? && !hash['teacher_zh_tw'].blank?
@teacher.first_name = hash['teacher_zh_tw']
elsif hash['teacher_en'].blank? && hash['teacher_zh_tw'].blank?
@teacher.first_name = "Please Fill the Name"
end
#@teacher.first_name = hash['teacher_en']
@teacher.ntu_seq = hash['ntu_seq']
@teacher.sid = hash['ntu_seq']
@teacher.role_ids = ["#{@roles.skip(1).first.id}"]
@teacher.password = "testpass"
@i += 10
if !hash['email'].blank?
@user = User.where(email: "#{hash['email']}")
if @user.length == 0
@teacher.email = hash['email']
elsif @user.length > 0
@teacher.email = "#{@i}duplicate@ntu.edu.tw"
end
else
@teacher.email = "#{@i}@ntu.edu.tw"
end
if hash['teacher_zh_tw'].blank? && hash['teacher_en'].blank?
@teacher.user_id = "defaultuser"
elsif hash['teacher_en'].blank?
@teacher.user_id = hash['teacher_zh_tw']
elsif hash['teacher_zh_tw']
@teacher.user_id = hash['teacher_en']
end
@teacher.save!
end
end
def get_book_data
uri = URI("http://ann.cc.ntu.edu.tw/Achv/xmlTeacherData.asp")
params = {"UnitName" => "管理學院".encode('big5-uao'), "account" => "manage"}
uri.query = URI.encode_www_form(params)
res = Net::HTTP.get_response(uri)
teachers = User.all
teachers.each do |hash|
if hash.ntu_seq.present?
ntu_seq = hash.ntu_seq
books_xml = Nokogiri::XML( \
open("http://ann.cc.ntu.edu.tw/Achv/xmlBook.asp?Seq=#{ntu_seq}"))
@books = books_xml.xpath("//Book").map do |book_node|
{
author: (book_node>"Authors").text,
year: (book_node>"PublishYear").text,
title: (book_node>"DocTitle").text,
remarks: (book_node>"Remarks").text,
publisher: (book_node>"Publisher").text,
book_title: (book_node>"BookTitle").text
}
end
if @books.present?
@books.each do |b|
@book = WritingBook.new
I18n.locale = :zh_tw
@book.authors = b[:author]
@book.paper_title = b[:title]
@book.book_title = b[:book_title]
@book.note = b[:remarks]
@book.publisher = b[:publisher]
I18n.locale = :en
@book.authors = b[:author]
@book.paper_title = b[:title]
@book.book_title = b[:book_title]
@book.note = b[:remarks]
@book.publisher = b[:publisher]
@book.year = b[:year]
@book.create_user_id = hash.id
@book.save
end
else
puts "No books by Teacher"
end
end
end
end
def get_conference_data
uri = URI("http://ann.cc.ntu.edu.tw/Achv/xmlTeacherData.asp")
params = {"UnitName" => "管理學院".encode('big5-uao'), "account" => "manage"}
uri.query = URI.encode_www_form(params)
res = Net::HTTP.get_response(uri)
teachers = User.all
teachers.each do |hash|
if hash.ntu_seq.present?
ntu_seq = hash.ntu_seq
conference_xml = Nokogiri::XML( \
open("http://ann.cc.ntu.edu.tw/Achv/xmlPaper.asp?Seq=#{ntu_seq}&type=C"))
#open("http://versatile.management.ntu.edu.tw/publication1/conference/#{ntuseq}.xml"))
@conference_papers = conference_xml.xpath("//Paper").map do |cp_node|
{
author: (cp_node>"Authors").text,
year: (cp_node>"PublishYear").text,
title: (cp_node>"PaperTitle").text,
conference: (cp_node>"PublishOn").text,
date: Date::MONTHNAMES[(cp_node>"PublishMonth").text.to_i],
location: "#{(cp_node>"Country").text} #{(cp_node>"location").text}",
conference_title: (cp_node>"PublishOn").text,
remarks: (cp_node>"Remarks").text
}
end
if @conference_papers.present?
@conference_papers.each do |b|
@conference_paper = WritingConference.new
I18n.locale = :zh_tw
@conference_paper.authors = b[:author]
if b[:title].blank?
@conference_paper.paper_title = "No Title Present"
else
@conference_paper.paper_title = b[:title]
end
if b[:conference_title].blank?
@conference_paper.conference_title = "No Title Present"
else
@conference_paper.conference_title = b[:conference_title]
end
@conference_paper.note = b[:remarks]
I18n.locale = :en
@conference_paper.authors = b[:author]
if b[:title].blank?
@conference_paper.paper_title = "No Title Present"
else
@conference_paper.paper_title = b[:title]
end
if b[:conference_title].blank?
@conference_paper.conference_title = "No Title Present"
else
@conference_paper.conference_title = b[:conference_title]
end
@conference_paper.note = b[:remarks]
@conference_paper.location = b[:location]
@conference_paper.year = b[:year]
@conference_paper.create_user_id = hash.id
@conference_paper.save!
end
else
puts "No conference by Teacher"
end
end
end
end
def get_journal_paper_data
uri = URI("http://ann.cc.ntu.edu.tw/Achv/xmlTeacherData.asp")
params = {"UnitName" => "管理學院".encode('big5-uao'), "account" => "manage"}
uri.query = URI.encode_www_form(params)
res = Net::HTTP.get_response(uri)
teachers = User.all
teachers.each do |hash|
if hash.ntu_seq.present?
ntu_seq = hash.ntu_seq
paper_xml = Nokogiri::XML( \
#open("http://versatile.management.ntu.edu.tw/publication1/journal/#{ntuseq}.xml"))
open("http://ann.cc.ntu.edu.tw/Achv/xmlPaper.asp?Seq=#{ntu_seq}&type=J"))
@journal_papers = paper_xml.xpath("//Paper").map do |paper_node|
{
author: (paper_node>"Authors").text,
year: (paper_node>"PublishYear").text,
title: (paper_node>"PaperTitle").text,
journal: (paper_node>"PublishOn").text,
volume:(paper_node>"Volume").text,
volumeno:(paper_node>"VolumeNo").text,
beginpage:(paper_node>"BeginPage").text,
endpage:(paper_node>"EndPage").text,
subgroup:(paper_node>"subgroup").text,
remarks: (paper_node>"Remarks").text,
cate: ((paper_node>"subgroup")>"Group").text
}
end
if @journal_papers.present?
@journal_papers.each do |b|
@journal_paper = WritingJournal.new
I18n.locale = :zh_tw
@journal_paper.authors = b[:author]
if b[:title].blank?
@journal_paper.paper_title = "No Title Present"
else
@journal_paper.paper_title = b[:title]
end
@journal_paper.journal_title = b[:journal]
@journal_paper.note = b[:remarks]
I18n.locale = :en
@journal_paper.authors = b[:author]
if b[:title].blank?
@journal_paper.paper_title = "No Title Present"
else
@journal_paper.paper_title = b[:title]
end
@journal_paper.journal_title = b[:journal]
@journal_paper.note = b[:remarks]
@journal_paper.year = b[:year]
@journal_paper.vol_no = b[:volumeno]
@journal_paper.form_to_start = b[:beginpage]
@journal_paper.form_to_end = b[:endpage]
if !b[:cate].blank?
@level_type = JournalLevelType.where(:key => b[:cate])
if @level_type.present?
@journal_paper.journal_level_type_ids = ["#{@level_type.first.id}"]
end
end
@journal_paper.create_user_id = hash.id
@journal_paper.save!
end
else
puts "No journal paper by Teacher"
end
end
end
end
def sync_conference_data
@conference_data = WritingConference.where(create_user_id: "#{params[:user_id]}")
@conference_data.delete_all
@user = User.find("#{params[:user_id]}")
# teachers.each do |hash|
if @user.sid.present?
ntu_seq = @user.sid
conference_xml = Nokogiri::XML( \
open("http://ann.cc.ntu.edu.tw/Achv/xmlPaper.asp?Seq=#{ntu_seq}&type=C"))
#open("http://versatile.management.ntu.edu.tw/publication1/conference/#{ntuseq}.xml"))
@conference_papers = conference_xml.xpath("//Paper").map do |cp_node|
{
author: (cp_node>"Authors").text,
year: (cp_node>"PublishYear").text,
title: (cp_node>"PaperTitle").text,
conference: (cp_node>"PublishOn").text,
date: Date::MONTHNAMES[(cp_node>"PublishMonth").text.to_i],
location: "#{(cp_node>"Country").text} #{(cp_node>"location").text}",
conference_title: (cp_node>"PublishOn").text,
remarks: (cp_node>"Remarks").text
}
end
if @conference_papers.present?
@conference_papers.each do |b|
@conference_paper = WritingConference.new
I18n.locale = :zh_tw
@conference_paper.authors = b[:author]
if b[:title].blank?
@conference_paper.paper_title = "No Title Present"
else
@conference_paper.paper_title = b[:title]
end
if b[:conference_title].blank?
@conference_paper.conference_title = "No Title Present"
else
@conference_paper.conference_title = b[:conference_title]
end
@conference_paper.note = b[:remarks]
I18n.locale = :en
@conference_paper.authors = b[:author]
if b[:title].blank?
@conference_paper.paper_title = "No Title Present"
else
@conference_paper.paper_title = b[:title]
end
if b[:conference_title].blank?
@conference_paper.conference_title = "No Title Present"
else
@conference_paper.conference_title = b[:conference_title]
end
@conference_paper.note = b[:remarks]
@conference_paper.location = b[:location]
@conference_paper.year = b[:year]
@conference_paper.create_user_id = @user.id
@conference_paper.save!
end
else
puts "No conference by Teacher"
end
end
respond_to do |format|
format.html
format.json { render json: {"success"=>true}.to_json}
end
end
def sync_journal_paper_data
@journal_data = WritingJournal.where(create_user_id: "#{params[:user_id]}")
@journal_data.delete_all
@user = User.find("#{params[:user_id]}")
# teachers.each do |hash|
if @user.sid.present?
ntu_seq = @user.sid
paper_xml = Nokogiri::XML( \
#open("http://versatile.management.ntu.edu.tw/publication1/journal/#{ntuseq}.xml"))
open("http://ann.cc.ntu.edu.tw/Achv/xmlPaper.asp?Seq=#{ntu_seq}&type=J"))
@journal_papers = paper_xml.xpath("//Paper").map do |paper_node|
{
author: (paper_node>"Authors").text,
year: (paper_node>"PublishYear").text,
title: (paper_node>"PaperTitle").text,
journal: (paper_node>"PublishOn").text,
volume:(paper_node>"Volume").text,
volumeno:(paper_node>"VolumeNo").text,
beginpage:(paper_node>"BeginPage").text,
endpage:(paper_node>"EndPage").text,
subgroup:(paper_node>"subgroup").text,
remarks: (paper_node>"Remarks").text,
cate: ((paper_node>"subgroup")>"Group").text
}
end
if @journal_papers.present?
@journal_papers.each do |b|
@journal_paper = WritingJournal.new
I18n.locale = :zh_tw
@journal_paper.authors = b[:author]
if b[:title].blank?
@journal_paper.paper_title = "No Title Present"
else
@journal_paper.paper_title = b[:title]
end
@journal_paper.journal_title = b[:journal]
@journal_paper.note = b[:remarks]
I18n.locale = :en
@journal_paper.authors = b[:author]
if b[:title].blank?
@journal_paper.paper_title = "No Title Present"
else
@journal_paper.paper_title = b[:title]
end
@journal_paper.journal_title = b[:journal]
@journal_paper.note = b[:remarks]
@journal_paper.year = b[:year]
@journal_paper.vol_no = b[:volumeno]
@journal_paper.form_to_start = b[:beginpage]
@journal_paper.form_to_end = b[:endpage]
if !b[:cate].blank?
@level_type = JournalLevelType.where(:key => b[:cate])
if @level_type.present?
@journal_paper.journal_level_type_ids = ["#{@level_type.first.id}"]
end
end
@journal_paper.create_user_id = @user.id
@journal_paper.save!
end
end
end
respond_to do |format|
format.html
format.json { render json: {"success"=>true}.to_json}
end
end
def sync_book_data
@books_data = WritingBook.where(create_user_id: "#{params[:user_id]}")
@books_data.delete_all
@user = User.find("#{params[:user_id]}")
# teachers.each do |hash|
if @user.sid.present?
ntu_seq = @user.sid
books_xml = Nokogiri::XML( \
open("http://ann.cc.ntu.edu.tw/Achv/xmlBook.asp?Seq=#{ntu_seq}"))
@books = books_xml.xpath("//Book").map do |book_node|
{
author: (book_node>"Authors").text,
year: (book_node>"PublishYear").text,
title: (book_node>"DocTitle").text,
remarks: (book_node>"Remarks").text,
publisher: (book_node>"Publisher").text,
book_title: (book_node>"BookTitle").text
}
end
if @books.present?
@books.each do |b|
@book = WritingBook.new
I18n.locale = :zh_tw
@book.authors = b[:author]
@book.paper_title = b[:title]
@book.book_title = b[:book_title]
@book.note = b[:remarks]
@book.publisher = b[:publisher]
I18n.locale = :en
@book.authors = b[:author]
@book.paper_title = b[:title]
@book.book_title = b[:book_title]
@book.note = b[:remarks]
@book.publisher = b[:publisher]
@book.year = b[:year]
@book.create_user_id = @user.id
@book.save
end
end
end
respond_to do |format|
format.html
format.json { render json: {"success"=>true}.to_json}
end
end
def sync_conference_data_auto
@user = User.all
@user.each do |user|
@conference_data = WritingConference.where(create_user_id: "#{user.id}")
@conference_data.delete_all
# @user = User.find("#{params[:user_id]}")
# teachers.each do |hash|
if user.sid.present?
ntu_seq = user.sid
conference_xml = Nokogiri::XML( \
open("http://ann.cc.ntu.edu.tw/Achv/xmlPaper.asp?Seq=#{ntu_seq}&type=C"))
#open("http://versatile.management.ntu.edu.tw/publication1/conference/#{ntuseq}.xml"))
@conference_papers = conference_xml.xpath("//Paper").map do |cp_node|
{
author: (cp_node>"Authors").text,
year: (cp_node>"PublishYear").text,
title: (cp_node>"PaperTitle").text,
conference: (cp_node>"PublishOn").text,
date: Date::MONTHNAMES[(cp_node>"PublishMonth").text.to_i],
location: "#{(cp_node>"Country").text} #{(cp_node>"location").text}",
conference_title: (cp_node>"PublishOn").text,
remarks: (cp_node>"Remarks").text
}
end
if @conference_papers.present?
@conference_papers.each do |b|
@conference_paper = WritingConference.new
I18n.locale = :zh_tw
@conference_paper.authors = b[:author]
if b[:title].blank?
@conference_paper.paper_title = "No Title Present"
else
@conference_paper.paper_title = b[:title]
end
if b[:conference_title].blank?
@conference_paper.conference_title = "No Title Present"
else
@conference_paper.conference_title = b[:conference_title]
end
@conference_paper.note = b[:remarks]
I18n.locale = :en
@conference_paper.authors = b[:author]
if b[:title].blank?
@conference_paper.paper_title = "No Title Present"
else
@conference_paper.paper_title = b[:title]
end
if b[:conference_title].blank?
@conference_paper.conference_title = "No Title Present"
else
@conference_paper.conference_title = b[:conference_title]
end
@conference_paper.note = b[:remarks]
@conference_paper.location = b[:location]
@conference_paper.year = b[:year]
@conference_paper.create_user_id = user.id
@conference_paper.save!
end
else
puts "No conference by Teacher"
end
end
end
end
def sync_journal_paper_data_auto
@user = User.all
@user.each do |user|
@journal_data = WritingJournal.where(create_user_id: "#{user_id}")
@journal_data.delete_all
# @user = User.find("#{params[:user_id]}")
# teachers.each do |hash|
if user.sid.present?
ntu_seq = user.sid
paper_xml = Nokogiri::XML( \
#open("http://versatile.management.ntu.edu.tw/publication1/journal/#{ntuseq}.xml"))
open("http://ann.cc.ntu.edu.tw/Achv/xmlPaper.asp?Seq=#{ntu_seq}&type=J"))
@journal_papers = paper_xml.xpath("//Paper").map do |paper_node|
{
author: (paper_node>"Authors").text,
year: (paper_node>"PublishYear").text,
title: (paper_node>"PaperTitle").text,
journal: (paper_node>"PublishOn").text,
volume:(paper_node>"Volume").text,
volumeno:(paper_node>"VolumeNo").text,
beginpage:(paper_node>"BeginPage").text,
endpage:(paper_node>"EndPage").text,
subgroup:(paper_node>"subgroup").text,
remarks: (paper_node>"Remarks").text,
cate: ((paper_node>"subgroup")>"Group").text
}
end
if @journal_papers.present?
@journal_papers.each do |b|
@journal_paper = WritingJournal.new
I18n.locale = :zh_tw
@journal_paper.authors = b[:author]
if b[:title].blank?
@journal_paper.paper_title = "No Title Present"
else
@journal_paper.paper_title = b[:title]
end
@journal_paper.journal_title = b[:journal]
@journal_paper.note = b[:remarks]
I18n.locale = :en
@journal_paper.authors = b[:author]
if b[:title].blank?
@journal_paper.paper_title = "No Title Present"
else
@journal_paper.paper_title = b[:title]
end
@journal_paper.journal_title = b[:journal]
@journal_paper.note = b[:remarks]
@journal_paper.year = b[:year]
@journal_paper.vol_no = b[:volumeno]
@journal_paper.form_to_start = b[:beginpage]
@journal_paper.form_to_end = b[:endpage]
if !b[:cate].blank?
@level_type = JournalLevelType.where(:key => b[:cate])
if @level_type.present?
@journal_paper.journal_level_type_ids = ["#{@level_type.first.id}"]
end
end
@journal_paper.create_user_id = user.id
@journal_paper.save!
end
end
end
end
end
def sync_book_data_auto
@user = User.all
@user.each do |user|
@books_data = WritingBook.where(create_user_id: "#{user_id}")
@books_data.delete_all
# @user = User.find("#{params[:user_id]}")
# teachers.each do |hash|
if user.sid.present?
ntu_seq = user.sid
books_xml = Nokogiri::XML( \
open("http://ann.cc.ntu.edu.tw/Achv/xmlBook.asp?Seq=#{ntu_seq}"))
@books = books_xml.xpath("//Book").map do |book_node|
{
author: (book_node>"Authors").text,
year: (book_node>"PublishYear").text,
title: (book_node>"DocTitle").text,
remarks: (book_node>"Remarks").text,
publisher: (book_node>"Publisher").text,
book_title: (book_node>"BookTitle").text
}
end
if @books.present?
@books.each do |b|
@book = WritingBook.new
I18n.locale = :zh_tw
@book.authors = b[:author]
@book.paper_title = b[:title]
@book.book_title = b[:book_title]
@book.note = b[:remarks]
@book.publisher = b[:publisher]
I18n.locale = :en
@book.authors = b[:author]
@book.paper_title = b[:title]
@book.book_title = b[:book_title]
@book.note = b[:remarks]
@book.publisher = b[:publisher]
@book.year = b[:year]
@book.create_user_id = user.id
@book.save
end
end
end
end
end
def get_announcement_data
uri = URI("https://localhost:8000/announcements.xml")
#params = {"UnitName" => "管理學院".encode('big5-uao'), "account" => "manage"}
#uri.query = URI.encode_www_form(params)
res = Net::HTTP.get_response(uri)
@announcement_data = Hash.from_xml(res.body)
@announcements = @announcement_data["objects"]
@announcements.each do |hash|
@bulletin = Bulletin.new
I18n.locale = :zh_tw
if hash['announcement_title_zh_tw'].blank?
@bulletin.title = hash['announcement_title_en']
@bulletin.text = hash['announcement_content_zh_tw']
elsif hash['announcement_title_zh_tw'].blank? && hash['announcement_title_en'].blank?
@bulletin.title = "Please Fill the Name"
@bulletin.text = hash['announcement_content_zh_tw']
else
@bulletin.title = hash['announcement_title_zh_tw']
@bulletin.text = hash['announcement_content_zh_tw']
end
I18n.locale = :en
if hash['announcement_title_zh_tw'].blank? && hash['announcement_title_en'].blank?
@bulletin.title = "Please Fill the Name"
@bulletin.text = hash['announcement_content_en']
elsif hash['announcement_title_en'].blank?
@bulletin.title = hash['announcement_zh_tw']
@bulletin.text = hash['announcement_content_en']
elsif hash['announcement_title_zh_tw'].blank?
@bulletin.title = hash['announcement_title_en']
@bulletin.text = hash['announcement_content_en']
end
@bulletin.category_id = "51d2a16438178423c2000001"
@bulletin.is_pending = true
@bulletin.save!
end
end
# def get_page_data
# f = File.open("/home/rwub/orbit-db/ntu_mb/pages/management_pages.xml")
# page_xml = Nokogiri::XML(f)
# #open("http://versatile.management.ntu.edu.tw/publication1/conference/#{ntuseq}.xml"))
# @pages = page_xml.xpath("//management-page").map do |cp_node|
# {
# menu_title: (cp_node>"menu-title").text,
# content: (cp_node>"content").text
# }
# end
# if @pages.present?
# @i=0
# @pages.each do |b|
# get_variables_for_new
# @page = Page.new
# @page.parent = "4f45f3b9e9d02c5db900005d"
# @page.design = "50ac424983e75219d2000021"
# @page.theme_id = "50ac424a83e75219d2000025"
# @page.menu_enabled_for= ["en", "zh_tw", ""]
# @page.enabled_for= ["en", "zh_tw", ""]
# @page.is_published = false
# if b[:menu_title].blank?
# @page.title = 'No Title Present'
# @i += 1
# @page.name = "#{@i}Page"
# else
# @i += 1
# @page.title = b[:menu_title]
# @page.name = "#{@i}Page"
# end
# if b[:content].blank?
# @page.content = "No Content Present"
# else
# @page.content = b[:content]
# end
# @page.save!
# end
# else
# puts "No Page Data"
# end
# end
# def get_variables_for_new
# @designs = Design.all.entries
# @themes = Design.first.themes
# @module_apps = ModuleApp.for_frontend_select
# @app_frontend_urls = nil
# @categories = nil
# @tags = nil
# @page_frontend_data_counts = nil
# @frontend_styles = nil
# @selected={
# :design => @designs.first,
# :theme=> @themes.first,
# :module_app=>nil,#@module_apps.first
# :app_frontend_url=> nil, #@module_apps.first
# :category=>nil,
# :tag=>nil,
# :page_frontend_data_count=>nil,
# :frontend_style => nil
# }
# end
end
+25 -8
View File
@@ -1,13 +1,10 @@
class Admin::ItemsController < OrbitBackendController
include ActionView::Helpers::TagHelper
include ActionView::Helpers::DynamicForm
layout "structure"
# TODO = put back ========================
# before_filter :authenticate_user!
# before_filter :find_parent_item
# before_filter :is_admin?
# before_filter :set_current_item
#=========================================
open_for_admin
def index
if params[:item_id]
@@ -27,8 +24,28 @@ class Admin::ItemsController < OrbitBackendController
def update_position
item = Item.find(params[:id])
item.shift_to(params[:parent_id], params[:position])
render :nothing => true
item.shift_to(params[:parent_id], params[:position].to_i, params[:next_sibling_id])
render :nothing => true, status: 200
end
def get_page_design_module_json
designs = Design.all.inject([]) do |designs, design|
d = {}
d["main"] = [design.title, design.id.to_s, (design.site.present? ? 1 : 0)]
d["sub"] = design.themes.map{|theme| [theme.name, theme.id.to_s]} rescue ''
designs << d
end
modules = ModuleApp.for_frontend_select.inject([]) do |module_apps, module_app|
m = {}
m["main"] = [module_app.label, module_app.id.to_s]
m["sub"] = module_app.app_pages.map{|name, data| [t(data["i18n"]), name]} rescue []
m["sub"] << [I18n.t('default_widget.default_widget'),'default_widget'] if module_app.has_default_widget?
m["category"] = module_app.categories.map{|category| [category.title, category.id.to_s] } rescue ''
m["tags"] = module_app.tags.map{|tag| [tag.name, tag.id.to_s] } rescue ''
m["count"] = module_app.get_registration.get_data_count.to_a
module_apps << m
end
render json: JSON.pretty_generate({design: designs, module: modules})
end
end
+19 -26
View File
@@ -1,8 +1,5 @@
class Admin::LinksController < Admin::ItemsController
def show
@item ||= Link.find(params[:id])
end
def new
@item = Link.new
@@ -17,39 +14,35 @@ class Admin::LinksController < Admin::ItemsController
def create
@item = Link.new(params[:link])
if @item.save(params[:link])
success = true
if @item.save
render 'admin/items/reload_items'
else
success = check_valid_url
end
if success
flash.now[:notice] = t('create.success.link')
respond_to do |format|
format.js { render 'admin/items/reload_items' }
end
else
flash.now[:error] = t('create.error.link')
render :action => "new"
@error = error_messages_for(@item)
render 'admin/items/form_error'
end
end
def update
@item = Link.find(params[:id])
if @item.update_attributes(params[:link])
success = true
render 'admin/items/reload_items'
else
success = check_valid_url
@error = error_messages_for(@item)
render 'admin/items/form_error'
end
if success
flash.now[:notice] = t('update.success.link')
respond_to do |format|
format.js { render 'admin/items/reload_items' }
end
def get_link_setting_json
begin
link = Link.find(params[:id])
m = {}
m["public"] = link.is_published ? 1 : 0
m["link"] = @site_valid_locales.inject([]) do |result, locale|
result << [locale, (link.enabled_for && link.enabled_for.include?(locale)) ? 1 : 0, (link.menu_enabled_for && link.menu_enabled_for[locale].eql?("true")) ? 1 :0]
end
else
flash.now[:error] = t('update.error.link')
render :action => "edit"
render json: JSON.pretty_generate(m)
rescue
render :json => {error: ''}, status: 422
end
end
@@ -1,13 +1,7 @@
class Admin::ModuleTagsController < OrbitBackendController
include OrbitTag::Merging
# TODO = put back ========================
# before_filter :force_order_for_visitor, only: [:index]
# before_filter :force_order_for_user, except: [:index]
# before_filter :for_app_sub_manager, except: [:index]
# ========================================
before_filter :setup_vars
# ========================================
open_for_manager
helper 'admin/tags'
@@ -33,6 +27,7 @@ class Admin::ModuleTagsController < OrbitBackendController
redirect_to admin_module_tags_url(module_app_id: @module_app_id)
else
@tag = ModuleTag.new(params[:module_tag])
flash.now[:error] = t('create.error.tag')
render :action => "new"
end
end
@@ -42,6 +37,7 @@ class Admin::ModuleTagsController < OrbitBackendController
if @tag.update_attributes(params[:module_tag])
redirect_to admin_module_tags_url(module_app_id: @module_app_id)
else
flash.now[:error] = t('update.error.tag')
render :action => "edit"
end
end
+104 -89
View File
@@ -1,25 +1,35 @@
class Admin::PagePartsController < OrbitBackendController
include Admin::FrontendWidgetInterface
layout "structure"
before_filter :authenticate_user!
before_filter :is_admin?
before_filter :set_current_item
helper 'admin/items'
def show
@part = PagePart.find(params[:id])
respond_to do |format|
format.html {
render 'admin/items/index'
}
format.js {}
end
end
layout "structure"
open_for_admin
def edit
@id = params[:id]
@part = PagePart.find(params[:id])
@module_apps = ModuleApp.for_widget_select
@module_app = @part.module_app || @module_apps.first
@module_app_categories = @module_app.categories
@module_app_tags = @module_app.tags
@widget_paths = ModuleApp.find(@module_app.id).widgets.map{|name, data| [t(data["i18n"]), name]} rescue []
if @part.widget_path.present?
if @part.widget_path.eql?("default_widget")
@checked_style = @part.widget_style
@enabled_styles = @module_app.get_default_widget["enabled_styles"]
@widget_fields = @module_app.widget_fields.collect do |widget_field|
label = I18n.t("#{@module_app.key}.default_widget.#{widget_field[0]}")
[label, widget_field[0], class: widget_field[2]]
end
@class_options = LIST[:widget_field_type].collect{|widget_field| [widget_field.humanize, widget_field]}
@partial = 'default_widget'
else
@frontend_styles = @module_app.widgets[params[:val]]["style"] rescue nil
@partial = 'custom_widget' if @frontend_styles.present?
end
end
@data_count = @module_app.get_registration.get_data_count.to_a rescue []
@no_orbit_bar = @side_bar = @no_header = true
@r_tag = @part.public_r_tag.blank? ? LIST[:public_r_tags][0] : @part.public_r_tag
@tag_objects = @r_tag.classify.constantize.all rescue nil
if @r_tag.eql?('tag_cloud')
@@ -28,90 +38,100 @@ class Admin::PagePartsController < OrbitBackendController
@tag_objects = @r_tag.classify.constantize.all rescue nil
end
@module_apps = ModuleApp.for_widget_select
@categories = nil
@tags = nil
@page_frontend_data_counts = nil
# @frontend_styles = nil
@selected={
:module_app=> @part.module_app ? @part.module_app : nil,
:app_frontend_url=> @part.widget_path || "default_widget", #@module_apps.first
:category=>nil, #fetch by method: get_categories_and_tags
:tag=>nil, #fetch by method: get_categories_and_tags
:page_frontend_data_count=>nil,
:frontend_style => nil,
:widget_path=> nil
}
@selected[:widget_path] = @part.widget_path ? @part.widget_path : (@selected[:module_app].widgets.keys[0] rescue nil)
get_categories_and_tags
get_frontend_data_count
@app_frontend_urls = get_app_frontend_urls
@no_orbit_bar = @side_bar = @no_header = true
@html_class = "page-parts"
end
def reload_widgets
@part = PagePart.find params[:id]
@selected={
:module_app=> ModuleApp.find(params["module_app_id"])
}
get_categories_and_tags
get_frontend_data_count
@selected[:app_frontend_url] = @selected[:module_app].has_default_widget? ? 'default_widget' : @selected[:module_app].widget_options.first.name
def get_page_setting_json
begin
part = PagePart.find(params[:id])
m = {}
m["main"] = part.module_app_id.to_s
m["sub"] = part.widget_path
m["category"] = part.category.present? ? [0, part.category.map{|c| c.to_s}] : [1]
m["tags"] = part.tag.present? ? [0, part.tag.map{|c| c.to_s}] : [1]
m["count"] = part.widget_data_count
render json: JSON.pretty_generate({module: m})
rescue
render :json => {error: ''}, status: 422
end
end
def reload_widget_styles
@part = PagePart.find(params[:id])
@selected={
:module_app=> ModuleApp.find(params["module_app_id"]),
:app_frontend_url=> params["frontend"], #@module_apps.first
:category=>nil, #fetch by method: get_categories_and_tags
:tag=>nil, #fetch by method: get_categories_and_tags
:page_frontend_data_count=>nil,
:frontend_style => nil,
:widget_path=> nil
}
get_categories_and_tags
get_frontend_data_count
def get_page_module_json
modules = ModuleApp.for_widget_select.inject([]) do |module_apps, module_app|
m = {}
m["main"] = [module_app.label, module_app.id.to_s]
m["sub"] = module_app.widgets.map{|name, data| [t(data["i18n"]), name]} rescue []
m["category"] = module_app.categories.map{|category| [category.title, category.id.to_s] } rescue ''
m["tags"] = module_app.tags.map{|tag| [tag.name, tag.id.to_s] } rescue ''
m["count"] = module_app.get_registration.get_data_count.to_a
module_apps << m
end
render json: JSON.pretty_generate({module: modules})
end
def reload_widget_field
@index = params[:field_seri].to_i
@part = PagePart.find(params[:id])
@selected = {
:module_app=> ModuleApp.find(params["module_app_id"]),
:default_widget_field=>params[:widget_field_value]
}
def get_display_style
@part = PagePart.find(params[:id]) rescue nil
@module_app = ModuleApp.find(params[:module_id]) rescue nil
if @module_app
if params[:val].eql?("default_widget")
@checked_style = @part.widget_path.present? ? @part.widget_style : nil if @part && @part.widget_path.eql?("default_widget")
@enabled_styles = @module_app.get_default_widget["enabled_styles"]
@widget_fields = @module_app.widget_fields.collect do |widget_field|
label = I18n.t("#{@module_app.key}.default_widget.#{widget_field[0]}")
[label, widget_field[0], class: widget_field[2]]
end
@class_options = LIST[:widget_field_type].collect{|widget_field| [widget_field.humanize, widget_field]}
@partial = 'default_widget'
else
@frontend_styles = @module_app.widgets[params[:val]]["style"] rescue nil
@partial = 'custom_widget' if @frontend_styles.present?
end
end
end
def update
@part = PagePart.find(params[:id])
clean_tags_and_category_params
# params[:page_part][:widget_field].each{|t| t[2] = (t[2]=="true" ? true : false )} if !params[:page_part][:widget_field].blank?
if @part.update_attributes(params[:page_part])
set_children_sub_menu(@part) if @part.public_r_tag && @part.public_r_tag.eql?('sub_menu')
flash.now[:notice] = t('update.success.content')
if @part.page.name == 'home'
expire_page '/'
else
expire_page page_path(@part.page.name)
end
respond_to do |format|
format.html {
redirect_to admin_page_url( @part.page )
}
format.js {
@item = @part.page
}
format.js
end
else
@id = params[:id]
@module_apps = ModuleApp.for_widget_select
@module_app = @part.module_app || @module_apps.first
@module_app_categories = @module_app.categories
@module_app_tags = @module_app.tags
@widget_paths = ModuleApp.find(@module_app.id).widgets.map{|name, data| [t(data["i18n"]), name]} rescue []
if @part.widget_path.present?
if @part.widget_path.eql?("default_widget")
@checked_style = @part.widget_style
@enabled_styles = @module_app.get_default_widget["enabled_styles"]
@widget_fields = @module_app.widget_fields.collect do |widget_field|
label = I18n.t("#{@module_app.key}.default_widget.#{widget_field[0]}")
[label, widget_field[0], class: widget_field[2]]
end
@class_options = LIST[:widget_field_type].collect{|widget_field| [widget_field.humanize, widget_field]}
@partial = 'default_widget'
else
@frontend_styles = @module_app.widgets[params[:val]]["style"] rescue nil
@partial = 'custom_widget' if @frontend_styles.present?
end
end
@data_count = @module_app.get_registration.get_data_count.to_a rescue []
@no_orbit_bar = @side_bar = @no_header = true
@r_tag = @part.public_r_tag.blank? ? LIST[:public_r_tags][0] : @part.public_r_tag
@tag_objects = @r_tag.classify.constantize.all rescue nil
if @r_tag.eql?('tag_cloud')
@tag_objects = ModuleApp.where(has_tag: true)
else
@tag_objects = @r_tag.classify.constantize.all rescue nil
end
@html_class = "page-parts"
render :action => "edit"
end
end
@@ -136,11 +156,6 @@ class Admin::PagePartsController < OrbitBackendController
end
protected
def get_app_frontend_urls
@selected[:module_app] ? @selected[:module_app].widgets.collect{|k,v| [I18n.t(v["i18n"]),k]} : []
# has_old_value = @selected[:module_app].app_pages[@selected[:app_frontend_url]]
# @frontend_styles = has_old_value ? has_old_value["style"] : (@selected[:module_app].app_pages.first[1]["style"] rescue nil)
end
def set_children_sub_menu(part)
part.page.children.each do |child|
+44 -165
View File
@@ -1,197 +1,76 @@
class Admin::PagesController < Admin::ItemsController
helper Admin::PagePartsHelper
include Admin::FrontendWidgetInterface
def show
@item = Page.find(params[:id])
@no_orbit_bar = true
render layout: 'page_layout'
end
def new
@item = Page.new(params[:page])
@item.parent = Item.find(params[:parent_id]) rescue nil
get_variables_for_new
render layout: false
end
def edit
@item = Page.find(params[:id])
get_variables_for_edit
render layout: false
end
def reload_themes
design = Design.find(params[:design_id])
@themes = design.themes
respond_to do |format|
format.js {}
end
end
def reload_frontend_pages
@item = Page.find(params[:id]) rescue Page.new
@selected={
:design => nil,
:theme=> nil,
:module_app=>(ModuleApp.find(params[:module_app_id]) rescue nil),
:app_frontend_url=> @item.app_frontend_url || 'default_widget', #@module_apps.first
:category=>nil, #fetch by method: get_categories_and_tags
:tag=>nil, #fetch by method: get_categories_and_tags
:page_frontend_data_count=>nil,
:frontend_style => nil
}
@app_frontend_urls = @selected[:module_app] ? select_array_for_app_frontend_urls(@selected[:module_app].app_pages) : nil
get_categories_and_tags
get_frontend_data_count
get_frontend_styles
respond_to do |format|
format.js {}
end
end
def reload_front_end_setting
@item = Page.find(params[:id]) rescue Page.new
@categories = nil
@tags = nil
@page_frontend_data_counts = nil
@selected={
# :design => @item.design || @designs.first,
# :theme=> @item.theme,
:module_app=>ModuleApp.find(params[:module_app_id]),
:app_frontend_url=> params[:frontend] ,
:category=>nil, #fetch by method: get_categories_and_tags
:tag=>nil, #fetch by method: get_categories_and_tags
:page_frontend_data_count=>nil,
:frontend_style => nil
}
@app_frontend_urls = @selected[:module_app].nil? ? nil : @selected[:module_app].app_pages.each{|name,data| [I18n.t(data["i18n"]),name]}
@frontend_styles = @selected[:module_app].app_pages[params["frontend"]]["style"] rescue nil
end
def reload_widget_field
@index = params[:field_seri].to_i
@item = Page.find(params[:id]) rescue Page.new
@selected = {
:module_app=> (ModuleApp.find(params[:module_app_id]) || @item.module_app ),
:default_widget_field=>params[:widget_field_value]
}
# @choosen_field = params[:widget_field_value]
# @module_app = @item.module_app
# @module_app = ModuleApp.find params[:module_app_id] if @module_app.nil?
@edit = true
render :text => parse_page_content(@item), :layout => 'page_layout'
end
def create
clean_tags_and_category_params
@item = Page.new(params[:page])
if @item.module_app && @item.module_app.key == 'page_content'
@item.page_contexts.build(:create_user_id => current_user.id, :update_user_id => current_user.id )
end
if @item.save
flash.now[:notice] = t('create.success.page')
respond_to do |format|
format.js { render 'admin/items/reload_items' }
end
render 'admin/items/reload_items'
else
flash.now[:error] = t('create.error.page')
@designs = Design.all.entries
@design = Design.find(params[:page][:design]) || Design.first
@themes = @design.themes
@module_apps = ModuleApp.for_frontend_select
@selected={
:design => params[:page][:design],
:theme=> (Theme.find(params[:page][:theme_id]) rescue nil),
:module_app=> (ModuleApp.find(params[:page][:module_app_id]) rescue nil) ,#@module_apps.first
:app_frontend_url=> params[:page][:app_frontend_url], #@module_apps.first
:category=>params[:page][:category],
:tag=>params[:page][:tag],
:page_frontend_data_count=>params[:page][:page_frontend_data_count],
:frontend_style => params[:page][:frontend_style]
}
@app_frontend_urls = @item.module_app ? select_array_for_app_frontend_urls(@item.module_app.app_pages) : nil
get_categories_and_tags
get_frontend_data_count
render :action => "new"
@error = error_messages_for(@item)
render 'admin/items/form_error'
end
end
def update
clean_tags_and_category_params
@item = Page.find(params[:id])
if @item.module_app && @item.module_app.key == 'page_content' && @item.page_contexts.blank?
@item.page_contexts.build(:create_user_id => current_user.id, :update_user_id => current_user.id )
end
if @item.update_attributes(params[:page])
flash[:notice] = t('update.success.page')
respond_to do |format|
format.js { render 'admin/items/reload_items' }
end
render 'admin/items/reload_items'
else
get_variables_for_edit
render :action => "edit"
@error = error_messages_for(@item)
render 'admin/items/form_error'
end
end
protected
def get_frontend_styles
has_old_value = @selected[:module_app].app_pages[@selected[:app_frontend_url]]
@frontend_styles = has_old_value ? has_old_value["style"] : (@selected[:module_app].app_pages.first[1]["style"] rescue nil)
def get_display_style
@item = Page.find(params[:id]) rescue nil
@module_app = ModuleApp.find(params[:module_id]) rescue nil
if @module_app
if params[:val].eql?("default_widget")
@checked_style = @item.frontend_style.present? ? @item.frontend_style : nil if @item && @item.app_frontend_url.eql?("default_widget")
@enabled_styles = @module_app.get_default_widget["enabled_styles"]
@widget_fields = @module_app.widget_fields.collect do |widget_field|
label = I18n.t("#{@module_app.key}.default_widget.#{widget_field[0]}")
[label, widget_field[0], class: widget_field[2]]
end
@class_options = LIST[:widget_field_type].collect{|widget_field| [widget_field.humanize, widget_field]}
@partial = 'default_front'
else
@frontend_styles = @module_app.app_pages[params[:val]]["style"] rescue nil
@partial = 'custom_front' if @frontend_styles.present?
end
end
end
def get_variables_for_new
@designs = Design.all.entries
@themes = Design.first.themes
@module_apps = ModuleApp.for_frontend_select
@app_frontend_urls = nil
@categories = nil
@tags = nil
@page_frontend_data_counts = nil
@frontend_styles = nil
@selected={
:design => @designs.first,
:theme=> @themes.first,
:module_app=>nil,#@module_apps.first
:app_frontend_url=> nil, #@module_apps.first
:category=>nil,
:tag=>nil,
:page_frontend_data_count=>nil,
:frontend_style => nil
}
end
def get_variables_for_edit
@designs = Design.all.entries
@themes = @item.design ? @item.design.themes : @designs.first.themes
@module_apps = ModuleApp.for_frontend_select
@categories = nil
@tags = nil
@page_frontend_data_counts = nil
@frontend_styles = nil
@selected={
:design => @item.design || @designs.first,
:theme=> @item.theme,
:module_app=>@item.module_app,#@module_apps.first
:app_frontend_url=> @item.app_frontend_url, #@module_apps.first
:category=>nil, #fetch by method: get_categories_and_tags
:tag=>nil, #fetch by method: get_categories_and_tags
:page_frontend_data_count=>nil,
:frontend_style => nil
}
@app_frontend_urls = @item.module_app ? select_array_for_app_frontend_urls(@item.module_app.app_pages) : nil
get_categories_and_tags
get_frontend_data_count
def get_page_setting_json
begin
page = Page.find(params[:id])
design = {main: page.design_id.to_s, sub: page.theme_id.to_s}
m = {}
m["main"] = page.module_app_id.to_s
m["sub"] = page.app_frontend_url
m["category"] = page.category.present? ? page.category.map{|c| c.to_s} : []
m["tags"] = page.tag.present? ? page.tag.map{|c| c.to_s} : []
m["public"] = page.is_published ? 1 : 0
m["link"] = @site_valid_locales.inject([]) do |link, locale|
link << [locale, (page.enabled_for && page.enabled_for.include?(locale)) ? 1 : 0, (page.menu_enabled_for && page.menu_enabled_for[locale].eql?('true')) ? 1 :0]
end
m["count"] = page.frontend_data_count
render json: JSON.pretty_generate({design: design, module: m})
rescue
render :json => {error: ''}, status: 422
end
end
end
+1 -2
View File
@@ -22,7 +22,6 @@ class Admin::SitesController < OrbitBackendController
def update
@site.update_attributes(params[:site])
site_restart
redirect_to :back
end
@@ -60,7 +59,7 @@ class Admin::SitesController < OrbitBackendController
end
def preference
end
+4 -1
View File
@@ -1,5 +1,8 @@
class Admin::TagsController < OrbitBackendController
include OrbitTag::Merging
open_for_user only: [:index]
open_for_manager
def index
@tags = @module_app.module_tags
@@ -30,7 +33,7 @@ class Admin::TagsController < OrbitBackendController
def update
@tag = ModuleTag.find(params[:id])
if @tag.update_attributes(params[:module_tag])
redirect_to action: :index
redirect_to action: :index, :status => 303
else
flash.now[:error] = t('update.error.tag')
render :action => "edit"
@@ -4,6 +4,7 @@ class Admin::UsersNewInterfaceController < OrbitMemberController
helper OrbitBackendHelper
before_filter :set_attribute,:except => [:index,:show]
open_for_user :only => [:setting_account, :edit_user_data, :update]
open_for_visitor :only => [:index, :show]
def index
@@ -181,6 +182,46 @@ class Admin::UsersNewInterfaceController < OrbitMemberController
def edit_passwd
# @disable_all_field = false
@user = User.find(params[:users_new_interface_id])
if current_user.id == @user.id
redirect_to :action => :index
end
end
def edit_privilege
@user = User.find(params[:users_new_interface_id])
if current_user.id == @user.id
redirect_to :action => :index
end
end
def edit_user_data
if params[:users_new_interface_id].blank?
redirect_to :action => :index
else
@user = User.find(params[:users_new_interface_id])
if current_user.id != @user.id
redirect_to :action => :index
end
@form_index = 0
get_info_and_roles
end
end
def setting_account
if params[:users_new_interface_id].blank?
redirect_to :action => :index
else
@user = User.find(params[:users_new_interface_id])
if current_user.id != @user.id
redirect_to :action => :index
end
end
end
def update
@@ -203,6 +244,49 @@ class Admin::UsersNewInterfaceController < OrbitMemberController
render :action => :edit_passwd, :notice => flash.now[:error]
end
elsif params[:edit_type] == 'edit_user_data'
if current_user.id != @user.id
redirect_to :action => :index
end
@user.update_attributes(params[:user])
attribute_values_key = params[:user].has_key?('new_attribute_values') ? 'new_attribute_values' : 'attribute_values'
attribute_values = params[:user].delete(attribute_values_key)
@user.save
redirect_to :action => :show
elsif params[:edit_type] == 'setting_account'
if current_user.id != @user.id
redirect_to :action => :index
end
if !@user.valid_password?(params[:old_password])
flash.now[:error] = t("users.valid_old_password")
end
if !flash.now[:error] && @user.update_attributes(params[:user])
redirect_to :action => :show
else
render :action => :setting_account, :notice => flash.now[:error]
end
elsif params[:edit_type] == 'edit_privilege'
if @user.admin && current_user.id == @user.id
flash.now[:error] = t("users.admin_change_password")
end
if !flash.now[:error] && @user.update_attributes(params[:user])
redirect_to :action => :show
else
render :action => :edit_privilege, :notice => flash.now[:error]
end
else
@user.update_attributes(params[:user])
@@ -250,11 +334,37 @@ class Admin::UsersNewInterfaceController < OrbitMemberController
end
def edit_order
def edit_order_card
@users = User.not_guest_user
@type = 'card'
render 'edit_order'
end
def update_order
def edit_order_list
@users = User.not_guest_user
@type = 'list'
render 'edit_order'
end
def update_order_card
@error = false
if params[:users].present?
to_go = params[:users][:position].to_i
user_at_position = User.where(position: to_go).first
user = User.find(params[:users][:id])
if user_at_position
if user.position > user_at_position.position
user.move_above(user_at_position)
else
user.move_below(user_at_position)
end
end
end
render nothing: true, status: 200
end
def update_order_list
@error = []
if params[:users].present?
params[:users].values.sort.each do |pair|
to_go = pair[0].to_i
+24 -9
View File
@@ -1,7 +1,7 @@
class ApplicationController < ActionController::Base
protect_from_forgery
include ParserFrontEnd, ParserBackEnd, ApplicationHelper
include ParserFrontEnd, ApplicationHelper
include OrbitApp::ErrorHandlers::PageErrorHandler
include OrbitApp::ErrorHandlers::ObjectAuthErrorHandler
include OrbitApp::ErrorHandlers::ModuleAppErrorHandler
@@ -18,7 +18,7 @@ class ApplicationController < ActionController::Base
helper_attr :site_valid_locales
def check_backend_openness
if !Me.backend_openness_on
if !Site.first.backend_openness_on
redirect_to '/users/sign_in' if not (authenticate_user! and is_member? )
end
end
@@ -140,21 +140,26 @@ class ApplicationController < ActionController::Base
# update session if passed
session[:locale] = params[:locale] if params[:locale]
browser_locale = condition = nil
default_locale = condition = nil
# check if locale is valid for non site pages
if LIST[:forbidden_item_names].include?(env['PATH_INFO'].split('/')[1].to_s)
condition = VALID_LOCALES.include?(session[:locale])
#check if the default locale is present or not
elsif session[:locale]
condition = @site.in_use_locales.include?(session[:locale])
elsif @site.default_locale.present?
default_locale = @site.default_locale
condition = @site.valid_locales.include?(default_locale)
else
elsif @site.enable_language_detection
#check enable langauge detection
browser_locale = request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first rescue nil
condition = @site.in_use_locales.include?(browser_locale)
elsif @site.default_locale.present?
default_locale = @site.default_locale
condition = @site.in_use_locales.include?(default_locale)
end
session[:locale] = condition ? (default_locale || browser_locale || session[:locale]) : I18n.default_locale.to_s
session[:locale] = condition ? (browser_locale || session[:locale] || default_locale) : I18n.default_locale.to_s
I18n.locale = session[:locale].to_sym
@site_in_use_locales = site_locales_default_head(@site.in_use_locales)
@site_in_use_locales = @site.in_use_locales
@site_valid_locales = site_locales_default_head(@site.valid_locales)
end
@@ -199,6 +204,7 @@ class ApplicationController < ActionController::Base
def site_locales_default_head(locales)
if locales[0].eql? I18n.locale.to_s
Rails.logger.info
locales
else
a = Array.new(locales)
@@ -321,7 +327,7 @@ class ApplicationController < ActionController::Base
a << object if (value.include?(object.category.id.to_s) rescue nil)
end
objects = a.uniq
when 'tag'
when 'tags'
a = Array.new
objects.each do |object|
object.tags.each do |tag|
@@ -335,9 +341,18 @@ class ApplicationController < ActionController::Base
else
objects = get_viewable(object_class, query)
end
if (!user_signed_in? && object_class == "bulletin")
objects = get_bulletins_for_open_backend(objects)
end
Kaminari.paginate_array(filter_authorized_objects(objects)).page(params[:page]).per(10)
end
def get_bulletins_for_open_backend(objects)
objects.select{|object| object.is_rejected == false && object.is_pending == false}
end
def get_string_value_from_object(object)
s = object.name_translations[I18n.locale.to_s] unless s rescue nil
s = object.title_translations[I18n.locale.to_s] unless s rescue nil
+5 -1
View File
@@ -40,9 +40,13 @@ class DefaultWidgetController< OrbitWidgetController
def default_widget
@search = params["search_query"].blank? ? false : true
if !params[:id].blank?
if !params[:id].blank? and !params["clicked_field_name"].blank?
clicked_field_name = params["clicked_field_name"].to_sym
redirect_to eval("#{@page_part.module_app.widget_fields_link_method[clicked_field_name][:method]}('#{params[:id]}', {inner: #{params[:inner] || true}})")
elsif !params[:id].blank? and params["preview"]
clicked_field_name = :title
@preview_pages = @page_part.module_app.widget_fields_link_method.find_all{|t| t[1].has_key?(:preview)}.collect{|t| t[0]}
redirect_to eval("#{@page_part.module_app.widget_fields_link_method[clicked_field_name][:method]}('#{params[:id]}', {preview: true,inner: #{params[:inner] || true},clicked_field_name: '#{@preview_pages.first.to_s}'})")
else
@tag_class = nil
@default_widget = @page_part.module_app.get_default_widget
+1 -1
View File
@@ -1,4 +1,4 @@
class DesktopAppsController < OrbitBackendController
class DesktopAppsController < ApplicationController
require "net/http"
require "uri"
require 'zip/zip'
+4 -3
View File
@@ -19,7 +19,7 @@ class DesktopController< ApplicationController
render :layout => "compatibility"
end
def desktop
def desktop_container
render :layout => false
end
@@ -340,10 +340,11 @@ class DesktopController< ApplicationController
render :json=>b.to_json
end
private
protected
def check_desktop_open
if Me.desktop_closed && current_user.nil? #Need to be change
@site = Site.first
if @site.desktop_closed #Need to be change
redirect_to '/admin/dashboards'
end
end
@@ -1,4 +1,4 @@
class DesktopWidgetsController < OrbitBackendController
class DesktopWidgetsController < ApplicationController
require "net/http"
require "uri"
require 'zip/zip'
+24 -2
View File
@@ -12,7 +12,16 @@ class FrontController < ApplicationController
end
def show_footer
render :text => @site.footer
@page = Page.find(:all, :conditions => {:name => /terms/i})
@name = @page.first.name
@url = "/#{@name}"
if !@site.enable_terms_of_use
render :text => (@site.footer + "<a href='#{@url}'>Terms of Use</a>")
else
render :text => @site.footer
end
end
def show_menu
@@ -21,7 +30,15 @@ class FrontController < ApplicationController
end
def show_site_sub_menu
render :text => @site.sub_menu
@page = Page.find(:all, :conditions => {:name => /sitemap/i})
@name = @page.first.name
@url = "/#{@name}"
if !@site.sitemap_menu_in_header
render :text => (@site.sub_menu + "<a href='#{@url}'>Sitemap</a>")
else
render :text => @site.sub_menu
end
end
def show_sitemap
@@ -43,6 +60,11 @@ class FrontController < ApplicationController
@tags = module_app.sorted_tags_for_cloud
end
def show_terms_of_use
@site = Site.first rescue nil
@terms = @site.terms_of_use
end
private
def menu_level(page, current_page, current, menu)
+9 -1
View File
@@ -43,7 +43,7 @@ class MobileController < ApplicationController
def page
@page_title = t('mobile.page')
@page_contexts = PageContext.where(:archived => false).page(params[:page_main]).per(15)
@page_contexts = get_sorted_page_from_structure
end
def page_content
@@ -57,4 +57,12 @@ class MobileController < ApplicationController
@no_footer = true if request.path =~ /app/
end
def get_sorted_page_from_structure
page_contexts = Item.structure_ordered_items.inject([]){ |pages, page|
pages << page.page_contexts.where(archived: false).limit(1)[0] if page.is_a?(Page) && !page.page_contexts.blank?
pages
}
Kaminari.paginate_array(page_contexts).page(params[:page]).per(15)
end
end
+22 -5
View File
@@ -8,8 +8,17 @@ class PagesController < ApplicationController
@item = Page.find_by_name('home')
if @item
delayed_impressionist(@item)
render_page
# delayed_impressionist(@item)
impressionist(@item)
if params[:edit]
if request.referer && request.referer.ends_with?("admin/items")
redirect_to admin_page_url(@item)
else
render :file => "#{Rails.root}/public/403.html", :status => 403
end
else
render_page
end
else
redirect_to '/admin/dashboards',:notice=>t(:need_home)
# render :text => t(:need_home)
@@ -19,14 +28,22 @@ class PagesController < ApplicationController
def show
#begin
@item = Item.first(:conditions => {:path => params[:page_name]})
if @item && @item.is_published && (@item.enabled_for.nil? ? true : @item.enabled_for.include?(I18n.locale.to_s))
delayed_impressionist(@item)
# delayed_impressionist(@item)
impressionist(@item)
case @item.class.to_s
when 'Page'
if params[:clicked_field_name]
render_page({"clicked_field_name"=>params["clicked_field_name"]}) unless save_from_no_lang_for_page
elsif params[:edit]
if request.referer && request.referer.ends_with?("admin/items")
redirect_to admin_page_url(@item)
else
render_page(params) unless save_from_no_lang_for_page
render :file => "#{Rails.root}/public/403.html", :status => 403
end
else
render_page(params.except(:controller, :action, :page_name)) unless save_from_no_lang_for_page
end
when 'Link'
redirect_to(@item[:url]) unless save_from_no_lang_for_page
@@ -113,7 +130,7 @@ class PagesController < ApplicationController
end
def check_frontend_open
if Me.frontend_closed && current_user.nil? #Need to be change
if !Site.first.frontend_open && current_user.nil? #Need to be change
redirect_to '/admin/dashboards'
end
end
-40
View File
@@ -1,40 +0,0 @@
# encoding: utf-8
class SessionsController < Devise::SessionsController
prepend_before_filter :require_no_authentication, :only => [ :new, :create ]
def create
@site = Site.first
private_key = OpenSSL::PKey::RSA.new(@site.private_key)
wresult = private_key.private_decrypt(request.params['wresult'])
@ids = wresult.split("@")
login_uid = @ids[0]
resource = User.first(conditions:{user_id: login_uid})
if !resource.blank?
resource_name = resource.class.to_s.downcase
sign_in(resource_name, resource)
session[:user_id_type] = "myntumb"
redirect_to after_sign_in_path_for(resource)
else
flash[:error] = "很抱歉,您無此權限或帳號登入本站,請洽本站管理員<br />Sorry, you don't have the account or authority to login. Please contact the website administrator."
redirect_to :root
end
end
def destroy
@user_id_type = session[:user_id_type]
sign_out
if @user_id_type == "myntumb"
redirect_to "https://adfs.ntu.edu.tw/adfs/ls/?wa=wsignout1.0&wreply=https://management.ntu.edu.tw"
else
redirect_to root_path
end
end
end
-31
View File
@@ -1,31 +0,0 @@
module Admin::AdBannersHelper
def preview_block_ad_images_helper(ad_banner)
printable_ad_images = []
ad_banner.ad_images.each do |ad_image|
if ad_image.display?
ad_image.weight.times do
printable_ad_images << ad_image
end
end
end
printable_ad_images.shuffle!
end
def sub_manager?(ad_banner)
ad_banner.authed_users(:edit).include?(current_user)
end
def show_ad_banner_permission_link(ad_banner)
type = 'edit'
oa = ad_banner.get_object_auth_by_title(type)
if oa.nil?
ad_banner.object_auths.new(title: type ).save
oa = ad_banner.get_object_auth_by_title(type)
end
# link_to t(:category_auth), edit_admin_object_auth_path(oa)
link_to t(:category_auth),admin_object_auth_ob_auth_path(oa),:class => "btn btn-warning"
end
end
@@ -1,58 +0,0 @@
module Admin::FrontendWidgetInterface
protected
def get_categories_and_tags
unless @selected[:module_app].nil?
@categories = @selected[:module_app].categories
@tags = @selected[:module_app].tags
end
end
def get_frontend_data_count
local_item = set_local_item
@page_frontend_data_counts = @selected[:module_app].get_registration.get_data_count rescue []
@selected[:page_frontend_data_count] = case local_item
when PagePart
local_item.widget_data_count
when Page
local_item.frontend_data_count
end
end
def clean_tags_and_category_params
field_name = set_field_name
if self.class==Admin::PagePartsController and params[field_name][:module_app].blank?
params[field_name][:module_app] = nil
end
if params[field_name][:tag].nil? || params[field_name][:tag].include?("nil")
params[field_name][:tag] = []
end
if params[field_name][:category].nil? || params[field_name][:category].include?("nil")
params[field_name][:category] = []
end
end #of clean_tags_and_category_params
def set_local_item
local_item = @part
local_item = @item if local_item.nil? && @item
local_item
end
def set_field_name
case self.class.to_s
when "Admin::PagesController"
return "page"
when "Admin::PagePartsController"
return "page_part"
end # of case
end
def select_array_for_app_frontend_urls(hash)
ary = hash.collect{|name,data| [I18n.t(data["i18n"]),name]}
ary << [I18n.t('default_widget.name'),'default_widget'] if @selected[:module_app] and @selected[:module_app].has_default_widget?
ary
end
end
-41
View File
@@ -1,45 +1,4 @@
module Admin::ItemsHelper
def render_node_and_children(node)
ret = ''
if node
case node.class.to_s
when 'Page'
dest = admin_page_path(node)
when 'Link'
dest = admin_link_path(node)
no_nested = 'no-nest'
end
ret << "<li id='#{node.id}' class='#{no_nested}'>"
ret << "<div class='with_action'><i class='icons-plus-3'></i>"
ret << (link_to node.title, dest, :class => 'js_history')
ret << "<div class='quick-edit hide'>"
ret << (link_to t(:edit), eval("edit_admin_#{node.class.to_s.downcase}_path(node)"), :class => 'js_history') if node.class.to_s.eql?('Page')
ret << (link_to t('new.page'), new_admin_page_path(:parent_id => node.id), :class => 'new_page js_history') if node.class.to_s.eql?('Page')
ret << (link_to t('new.link'), new_admin_link_path(:parent_id => node.id), :class => 'new_link js_history') if node.class.to_s.eql?('Page')
ret << (link_to t(:delete_), eval("delete_admin_#{node.class.to_s.downcase}_path(node, :authenticity_token => form_authenticity_token)"), :confirm => t('sure?'), :class => 'delete js_history')
ret << "</div>"
ret << "</div>"
ret << render_children(node)
ret << "</li>"
end
ret.html_safe
end
def render_children(parent)
children = parent.children
if !parent.children.entries.blank?
ret = ''
ret << "<ol class='#{'sortable' if parent.parent.nil?}'>"
children.each do |child|
ret << render_node_and_children(child)
end
ret << '</ol>'
ret
else
''
end
end
def get_item_module_infos(item)
if module_app = item.module_app
-138
View File
@@ -1,138 +0,0 @@
module Admin::PagePartsHelper
include Admin::FrontendWidgetInterface
def support_link
url_method = @selected[:module_app].get_default_widget[:url_method]
unless url_method.nil?
res = "Link:"
res << select_tag( "page_part[widget_field_is_link][]", options_for_select([["NotLink",false],["Link1",url_method]]))
res.html_safe
end
end
def get_widget_field_rel
case set_local_item
when Page
reload_after_list_changed_admin_pages_path
when PagePart
reload_after_list_changed_admin_page_part_path
end
end
def link_to_field_switch( i ,object_name,field_name,local_item=nil,assign_field_name_value=nil) #link_to_field is for showing
field_is_checked = nil
local_item = case
when local_item.nil? && @part
@part
when local_item.nil? && @item
@item
end
field_is_checked = local_item.default_widget_field_sat_to_link?(i)
res = hidden_field_tag "#{object_name}[#{field_name}][][sat_to_link]", 'false'
unless field_is_checked.nil? and assign_field_name_value.nil?
origin_field = nil
origin_field = @selected[:module_app].widget_fields.select{|t| t.first.to_s==(assign_field_name_value || local_item.default_widget_field_name[i])}.first
if origin_field and origin_field[2]==:link #choosen_field_is_link
res = label_tag '' do
check_box_tag("#{object_name}[#{field_name}][][sat_to_link]", "true", field_is_checked) + I18n.t("default_widget.field_is_link")
end
else # choosen_field_not_link
return res
end # of if choosen_field_is_link
else
return res
end
end
def widget_field_options(i,local_item=nil)
local_item = set_local_item
options = @selected[:module_app].widget_fields.collect do |widget_field|
label = I18n.t("#{@selected[:module_app].key}.default_widget.#{widget_field[0]}")
[label, widget_field[0]]
end
case local_item
when Page
options_for_select(options, (local_item.frontend_field_name[i] if(local_item) ))
when PagePart
options_for_select(options, (local_item.widget_field_name[i] if(local_item) ))
end
end
def widget_field_class_options(i,local_item=nil)
options = LIST[:widget_field_type].collect{|widget_field| [widget_field.humanize, widget_field]}
local_item = set_local_item
case local_item
when Page
options_for_select(options, (local_item.frontend_class[i] if (local_item) ))
when PagePart
options_for_select(options, (local_item.widget_class[i] if (local_item) ))
end
end
def tag_checked_value(part,radio_value)
if radio_value.blank?
(part.nil? || part[:tag].blank?) ? true : false
else
part and (part[:tag].include?(radio_value.to_s)) ? true : false
end
end
def category_checked_value(part,radio_value)
if radio_value.blank?
(part.nil? || part[:category].blank?) ? true : false
else
part and (part[:category].include?(radio_value.to_s)) ? true : false
end
end
def style_checked_value(part,radio_value)
case part
when Page
if part.frontend_style.nil? && radio_value == "typeA"
true
else
(part.frontend_style == radio_value) ? true : false
end
when PagePart
if part.widget_style.nil? && radio_value == "typeA"
true
else
(part.widget_style == radio_value) ? true : false
end
when nil
false
end
end
def nil_checkbox_button(part,tag_or_cate)
field_name = set_field_name
content_tag :label,:class=>"radio inline" do
op = check_box_tag("#{field_name}[#{tag_or_cate}][]", 'nil' , eval("#{tag_or_cate}_checked_value(part,'')"),:class=>'select_all')
op << I18n.t("default_widget.no_value")
end
end
def nil_radio_button(part,tag_or_cate)
field_name = set_field_name
content_tag :label,:class=>"radio inline" do
op = radio_button(field_name, tag_or_cate, '' , :checked => eval("#{tag_or_cate}_checked_value(part,'')"))
op << I18n.t("default_widget.no_value")
end
end
def show_default_widget_setting_panel
@selected[:module_app] && @selected[:module_app].has_default_widget? && (@selected[:app_frontend_url]== 'default_widget')
end
def show_custom_widget_setting_panel
true
end
end
+31 -7
View File
@@ -1,5 +1,5 @@
module ApplicationHelper
Time.zone = ActiveSupport::TimeZone[+8.hours]
FLASH_NOTICE_KEYS = [:error, :notice, :warning]
@@ -180,7 +180,7 @@ module ApplicationHelper
page_title = page.page_title ? page.page_title : page.title
if page.root? && @site.title
res << @site.title
elsif @site.title && @site.title_always_on
elsif @site.title && !@site.title_always_on
res << @site.title + ' - ' + page_title
else
res << page_title
@@ -223,25 +223,49 @@ module ApplicationHelper
end
def display_visitors(options={})
Impression.where(options).and(:referrer.ne => nil).distinct(:session_hash).count
Impression.where(options).count
end
def display_visitors_today
display_visitors(created_at: {'$gte' => Date.today.beginning_of_day, '$lte' => Date.today.end_of_day})
display_visitors(created_at: {'$gte' => Time.now.beginning_of_day, '$lte' => Time.now})
end
def display_visitors_this_week
display_visitors(created_at: {'$gte' => Date.today.beginning_of_week, '$lte' => Date.today.end_of_week})
display_visitors(created_at: {'$gte' => Time.now-7.days, '$lte' => Time.now})
end
def display_visitors_this_month
display_visitors(created_at: {'$gte' => Date.today.beginning_of_month, '$lte' => Date.today.end_of_month})
display_visitors(created_at: {'$gte' => Time.now-30.days, '$lte' => Time.now})
end
def display_visitors_this_year
display_visitors(created_at: {'$gte' => Date.today.beginning_of_year, '$lte' => Date.today.end_of_year})
display_visitors(created_at: {'$gte' => Time.now-365.days, '$lte' => Time.now})
end
def get_month_traffic
result = []
(0..30).each do |i|
visits = Impression.where( created_at: {
'$gte' => Time.now.beginning_of_day-i.days,
'$lte' => Time.now.end_of_day-i.days}
).count
result.push([ Time.now.beginning_of_day-i.days, visits])
end
[:name=> t(:visitors_count),:data=>result]
end
# def get_today_traffic
# result = []
# (0..30).each do |i|
# the_day = i.day.ago
# visits = Impression.where( created_at: {'$gte' => the_day.beginning_of_day, '$lte' => the_day.end_of_day}).count
# # result.push([ the_day.to_time.to_i, visits])
# result.push([ the_day.strftime("%m %d"), visits])
# # result.push({'x'=> i, 'y'=> visits})
# end
# result
# end
def display_date_time(object)
object.strftime("%Y-%m-%d %H:%M")
end
+22 -14
View File
@@ -24,13 +24,16 @@ module OrbitBackendHelper
def show_delete_link(object)
if !current_user.nil?
by_object = (object.create_user_id == current_user.id )
by_user = (is_manager? or is_admin?)
by_object or by_user
if object.class.fields.include?('create_user_id')
by_object = (object.create_user_id == current_user.id )
by_user = (is_manager? or is_admin?)
by_object or by_user
else
true
end
else
false
end
end
# def show_bulletin_title_at_index (bulletin)
@@ -55,7 +58,7 @@ module OrbitBackendHelper
def is_sort_active?(field)
res = t(field[:translation])
if params[:sort].eql?(field[:sort])
if params[:sort] && params[:sort].eql?(field[:sort])
res << " " + content_tag(:b, nil, class: (params[:direction].eql?('asc') ? "icons-arrow-up-3" : "icons-arrow-down-4 "))
end
res.html_safe
@@ -108,12 +111,17 @@ module OrbitBackendHelper
res << status.join(' ')
when 'tags'
sorted_objects = get_sorted_objects(object.tags, 'name') rescue ''
when 'standalone'
res << (field[:need_value] ? eval(field[:display_option]) : field[:display_option])
when 'image'
image = (field[:version] ? object.send(field[:db_field]).send(field[:version]) : object.send(field[:db_field]))
res << image_tag(image)
else
sorted_values = object.send(field[:db_field])
sorted_values = sorted_values.sort if sorted_values.is_a?(Array)
end
res << display_value_from_object(object, sorted_values, field[:display_option]) if sorted_values
res << display_value_from_objects(sorted_objects, field[:model_field], field[:display_option]) if sorted_objects
res << display_value_from_object(object, sorted_values, field[:display_option]).to_s if sorted_values
res << display_value_from_objects(sorted_objects, field[:model_field], field[:display_option]).to_s if sorted_objects
if field[:quick_edit]
res << (content_tag :div, class: "quick-edit" do
content_tag :ul, class: "nav nav-pills" do
@@ -131,7 +139,7 @@ module OrbitBackendHelper
concat (content_tag :thead do
(content_tag :tr, class: "sort-header" do
@fields.each do |field|
concat (content_tag :th, "data-hide" => field[:hide], class: "#{field[:header_class]} #{'active' if params[:sort].eql?(field[:sort])}" do
concat (content_tag :th, "data-hide" => field[:hide], class: "#{field[:header_class]} #{'active' if (params[:sort] && params[:sort].eql?(field[:sort]))}" do
if field[:sort]
link_to is_sort_active?(field), url_for({:filter => @filter}.merge(sortable_options(field[:sort]).merge(:sort_options => field[:db_field])))
else
@@ -176,8 +184,6 @@ module OrbitBackendHelper
display_date(value)
when 'Time'
display_time(value)
when /Uploader/
image_tag(value.url)
else
value
end
@@ -199,7 +205,7 @@ module OrbitBackendHelper
objects.join(' ')
else
objects = Array(objects).map do |object|
display_value(object.send(field))
display_value(object.send(field)) rescue ''
end
objects.join(', ')
end
@@ -241,6 +247,8 @@ module OrbitBackendHelper
args[:translation] ||= 'tags'
args[:display_option] ||= "content_tag(:span, object.name, class: 'label label-warning')"
@fields << args
elsif !args.blank? && args[:type].eql?('standalone')
@fields << args
end
end
@@ -267,7 +275,7 @@ module OrbitBackendHelper
link = (is_manager? || is_sub_manager? rescue nil) && args.has_key?(:link) ? true : false
if paginate || link
@index_footer = content_tag :div, class: "bottomnav clearfix" do
concat content_tag :div, link_to(content_tag(:i, nil, :class => 'icon-plus') + ' ' + t(:add), send(args[:link]), :class => 'btn btn-primary' ), class: "action pull-right" if link
concat content_tag :div, link_to(content_tag(:i, nil, :class => 'icon-plus') + ' ' + t(:add), args[:link].blank? ? '#' : send(args[:link]), :class => (args[:link_class] || 'btn btn-primary'), data: args[:link_data]), class: "action pull-right" if link
concat content_tag :div, paginate(@objects, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil, :sort_options => params[:sort_options]}), class: "pagination pagination-centered" if paginate
end
end
@@ -285,7 +293,7 @@ module OrbitBackendHelper
end
when 'edit'
if authorization && approvable
content_tag :li, link_to(t(quick[:translation] || :edit), eval("#{quick[:link]}('#{object.id}')"), class: quick[:class])
content_tag :li, link_to(t(quick[:translation] || :edit), quick[:link].nil? ? '#' : eval("#{quick[:link]}('#{object.id}')"), class: quick[:class], data: eval("#{quick[:data]}"))
end
when 'delete'
if show_delete_link(object)
@@ -323,7 +331,7 @@ module OrbitBackendHelper
if object.is_a?(klass.constantize)
autorized ||= object.user_can_sub_manage?(current_user)
else
autorized ||= object.category.user_can_sub_manage?(current_user)
autorized ||= object.send(klass.underscore).user_can_sub_manage?(current_user)
end
autorized
end
+15 -55
View File
@@ -2,70 +2,30 @@ class AdBanner
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::MultiParameterAttributes
include OrbitCoreLib::ObjectAuthable
include OrbitTag::Taggable
include OrbitModel::Authorizable
field :title
field :transition_msec,type: Integer
field :ad_fx #TODO Design should explain
field :best_size,:default => ''
field :height, type: Integer
field :speed, type: Integer
field :title
field :timeout, type: Integer
field :width, type: Integer
before_save :save_or_destroy
validates_uniqueness_of :title
validates :title , :length => { :minimum => 2 }
has_many :ad_images , dependent: :delete
validates_uniqueness_of :title
validates :title, :length => { :minimum => 2 }
validates :height, :speed, :timeout, :width, :presence => true
FX_TYPES = ["blindX","blindY","blindZ","cover","curtainX","curtainY","fade","fadeZoom","growX","growY","scrollUp","scrollDown","scrollLeft","scrollRight","scrollHorz","scrollVert","shuffle","slideX","slideY","toss","turnUp","turnDown","turnLeft","turnRight","uncover","wipe","zoom"]
attr_writer :transition_sec
FX_TYPES = %w(fade fadeout flipHorz flipVert scrollHorz scrollVert tileSlide tileBlind)
AfterObjectAuthUrl = '/panel/page_content/back_end/page_contexts'
APP_NAME = 'ad_banners'
ObjectAuthTitlesOptions = %W{edit}
def pp_object
title
def size
"#{self.width} x #{self.height}"
end
def transition_sec
self.transition_msec/1000 rescue nil
def timeout_millisecond
self.timeout*1000 rescue 0
end
def transition_sec=(sec)
self.transition_msec = sec.to_i*1000
end
def preview_clone
preview_banner = self.clone
preview_banner.ad_images = self.ad_images
preview_banner
end
# def new_ad_images(*attrs)
# debugger
# a=1
# attrs[0].each do |attr| #Loop by JSs,Themes,Imgs
# unless attr[:file].nil?
# self.ad_images << AdImage.new(attr)
# end
# end
# end
# def existing_ad_images=(*attrs)
# attrs[0].each do |attr| #Loop by JSs,Themes,Imgs
# ad_image = self.ad_images.find attr[0]
# ad_image.update_attributes(attr[1])
# end
# end
def save_or_destroy
self.ad_images.each do |ad_image|
if ad_image.to_save?
ad_image.save
end
if ad_image.to_destroy?
ad_image.destroy
end
end
end
end
Loaded 100 of 461 files, more files were not shown because too many files have changed in this diff. Show more