Merge branch 'master' of https://github.com/Rulingcom/orbit
* 'master' of https://github.com/Rulingcom/orbit: (57 commits) Add translations Add mobile version in site settings Add mobile but remove news in it Remove mysql Fix album widget options Fix link for ad_banner Add missing helper for web_link_category Show design's js in front-end Add link to default widget (temporary) Ika's fix for width Ika's fix for width Gallery i18n Ika's changes for css default widgets Ika's changes for css default widgets change bulletin object to bulletin title fixing default widget error when needs image make default widget works without init Fix order in structure Fix old tags correct pic file format complete page error handler logic change sub_menu to header in site setting ...
1
Gemfile
|
@ -22,7 +22,6 @@ gem 'mini_magick'
|
|||
gem 'mongoid', '> 2.1', '< 3.0.0'
|
||||
gem 'mongoid-tree', :require => 'mongoid/tree'
|
||||
gem "mongo_session_store-rails3"
|
||||
gem 'mysql2'
|
||||
gem 'nokogiri'
|
||||
|
||||
|
||||
|
|
After Width: | Height: | Size: 7.6 KiB |
After Width: | Height: | Size: 177 KiB |
After Width: | Height: | Size: 192 KiB |
After Width: | Height: | Size: 683 KiB |
After Width: | Height: | Size: 461 KiB |
After Width: | Height: | Size: 268 KiB |
After Width: | Height: | Size: 319 KiB |
After Width: | Height: | Size: 65 KiB |
After Width: | Height: | Size: 4.8 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 3.8 KiB |
After Width: | Height: | Size: 8.3 KiB |
After Width: | Height: | Size: 96 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 31 KiB |
|
@ -55,7 +55,7 @@ $(document).ready(function() {
|
|||
// }
|
||||
// })
|
||||
|
||||
$("a.preview_trigger").click(function(){
|
||||
$("a.preview_trigger").live('click',function(){
|
||||
$("#main-wrap").after("<span id='show_preview'></span>");
|
||||
$.ajax({
|
||||
type: 'PUT',
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
// 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 mobile/jquery.cycle.all
|
||||
//= 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
|
|
@ -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);
|
|
@ -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,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 <20>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');
|
||||
}
|
||||
});
|
||||
};
|
|
@ -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,129 @@
|
|||
<%#= 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:'scrollLeft',
|
||||
timeout: 6000,
|
||||
});
|
||||
$(".newlist").css({
|
||||
"width" : $(".newitem").outerWidth()*(Math.floor($globalW/$(".newitem").outerWidth()))+30,
|
||||
})
|
||||
// var oc_timer;
|
||||
// clearTimeout(oc_timer);
|
||||
// oc_timer = setTimeout(function () {
|
||||
// $('.newlist').swipePlanes();
|
||||
// }, 1000);
|
||||
});
|
||||
$('#news_content').live('pageinit',function(){
|
||||
$(this).find(".newpic img").muImageResize({width: 320, height: 220});
|
||||
});
|
||||
var mobileDemo = { 'center': '24.987449, 121.576117', 'zoom': 17 };
|
||||
$('#map').live('pageinit', function() {
|
||||
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': "<%= I18n.t('mobile.location_description') %>" }, 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:'scrollLeft',
|
||||
timeout: 6000,
|
||||
});
|
||||
|
||||
$(".newlist").css({
|
||||
"width" : $(".newitem").outerWidth()*(Math.floor($globalW/$(".newitem").outerWidth()))+30,
|
||||
})
|
||||
|
||||
$("#map_canvas").css({
|
||||
'height' : $windowH,
|
||||
})
|
||||
// $('.newlist').swipePlanes();
|
||||
}, 500);
|
||||
});
|
|
@ -1,3 +1,7 @@
|
|||
function get_part_id(){
|
||||
return $(".edit_page_part").attr("action").split('/').pop();
|
||||
}
|
||||
|
||||
$("div.editable").live("mouseenter mouseleave", function (event) {
|
||||
$(this).children('.edit_link').toggle();
|
||||
});
|
||||
|
@ -21,11 +25,11 @@ $("#page_module_app_id").live('change', function() {
|
|||
});
|
||||
|
||||
$("#module_app_list select").live('change', function() {
|
||||
$.getScript($(this).attr('rel') + '/' + $(this).val() + '/reload_widgets');
|
||||
$.getScript($(this).attr('rel') + '/' + $(this).val() + '/reload_widgets?part_id=' + get_part_id());
|
||||
});
|
||||
|
||||
$("#widget_list select").live('change', function() {
|
||||
$.getScript($(this).attr('rel') + '/' + $(this).val() + '/reload_widget_styles?module_app_id=' + $("#module_app_list select").val());
|
||||
$.getScript($(this).attr('rel') + '/' + $(this).val() + '/reload_widget_styles?module_app_id=' + $("#module_app_list select").val() + '&part_id=' + get_part_id());
|
||||
});
|
||||
|
||||
$("#tag_list select").live('change', function() {
|
||||
|
|
|
@ -14,7 +14,6 @@ function load_tinymce() {
|
|||
theme_advanced_toolbar_align : "left",
|
||||
theme_advanced_statusbar_location : "bottom",
|
||||
theme_advanced_resizing : true,
|
||||
relative_urls : false,
|
||||
|
||||
// Skin options
|
||||
skin : "o2k7",
|
||||
|
|
|
@ -0,0 +1,200 @@
|
|||
|
||||
/* 1 */
|
||||
.defulat_widget_typeA{
|
||||
font: 12px/100% 'open sans',sans-serif;
|
||||
margin:0 0 20px;
|
||||
width:510px;
|
||||
}
|
||||
.defulat_widget_tb{
|
||||
border-collapse:collapse;
|
||||
width:100%;
|
||||
}
|
||||
|
||||
.defulat_widget_tb th{
|
||||
background: none repeat scroll 0 0 #333333;
|
||||
color: #FFFFFF;
|
||||
padding: 10px;
|
||||
text-align: left;
|
||||
}
|
||||
.defulat_widget_tb td{
|
||||
border-bottom: 1px solid #AAAAAA;
|
||||
padding: 10px;
|
||||
white-space: normal;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
|
||||
/* 2 */
|
||||
|
||||
.defulat_widget_typeB_style2{
|
||||
font: 12px/100% 'open sans',sans-serif;
|
||||
margin:0 0 20px;
|
||||
width:510px;
|
||||
}
|
||||
|
||||
.defulat_widget_typeB_style2 ul{
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.defulat_widget_typeB_style2 li{
|
||||
border-bottom: 1px solid #AAAAAA;
|
||||
clear: both;
|
||||
margin: 0 0 10px;
|
||||
overflow: hidden;
|
||||
padding: 0 0 10px;
|
||||
}
|
||||
|
||||
|
||||
.defulat_widget_typeB_style2 .app-pic{
|
||||
background: none repeat scroll 0 0 #AAAAAA;
|
||||
border-radius: 3px;
|
||||
float:left;
|
||||
height: 50px;
|
||||
margin: 0 10px 5px 0;
|
||||
overflow: hidden;
|
||||
width: 50px;
|
||||
}
|
||||
.defulat_widget_typeB_style2 img{
|
||||
height:50px;
|
||||
width:50px;
|
||||
}
|
||||
|
||||
.defulat_widget_typeB_style2 span{
|
||||
display: inline;
|
||||
margin: 0 10px 0 0;
|
||||
}
|
||||
|
||||
/* 3 */
|
||||
|
||||
.defulat_widget_typeB_style3{
|
||||
font: 12px/100% 'open sans',sans-serif;
|
||||
margin:0 0 20px;
|
||||
width:510px;
|
||||
}
|
||||
.defulat_widget_typeB_style3 ul{
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.defulat_widget_typeB_style3 li{
|
||||
border-bottom: 1px solid #AAAAAA;
|
||||
clear: both;
|
||||
margin: 0 0 10px;
|
||||
overflow: hidden;
|
||||
padding: 0 0 10px;
|
||||
}
|
||||
|
||||
.defulat_widget_typeB_style3 .app-pic{
|
||||
background: none repeat scroll 0 0 #AAAAAA;
|
||||
border-radius: 3px;
|
||||
float: left;
|
||||
height: 50px;
|
||||
margin: 0 10px 0 0;
|
||||
overflow: hidden;
|
||||
width: 50px;
|
||||
}
|
||||
|
||||
.defulat_widget_typeB_style3 span{
|
||||
display:block;
|
||||
margin:0 0 5px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.defulat_widget_typeB_style3 .wrap{
|
||||
overflow: hidden;
|
||||
}
|
||||
.defulat_widget_typeB_style3 img{
|
||||
height:50px;
|
||||
width:50px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* 4 */
|
||||
|
||||
.defulat_widget_typeB_style4{
|
||||
font: 12px/100% 'open sans',sans-serif;
|
||||
margin:0 0 20px;
|
||||
width:510px;
|
||||
}
|
||||
.defulat_widget_typeB_style4 ul{
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.defulat_widget_typeB_style4 li{
|
||||
border-bottom: 1px solid #AAAAAA;
|
||||
clear: both;
|
||||
margin: 0 0 10px;
|
||||
overflow: hidden;
|
||||
padding: 0 0 10px;
|
||||
}
|
||||
|
||||
.defulat_widget_typeB_style4 .app-pic{
|
||||
background: none repeat scroll 0 0 #AAAAAA;
|
||||
border-radius: 3px;
|
||||
float: right;
|
||||
height: 50px;
|
||||
margin: 0 0 0 10px;
|
||||
overflow: hidden;
|
||||
width: 50px;
|
||||
}
|
||||
|
||||
.defulat_widget_typeB_style4 span{
|
||||
display:block;
|
||||
margin:0 0 5px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.defulat_widget_typeB_style4 .wrap{
|
||||
overflow: hidden;
|
||||
}
|
||||
.defulat_widget_typeB_style4 img{
|
||||
height:50px;
|
||||
width:50px;
|
||||
}
|
||||
|
||||
|
||||
/* 5 */
|
||||
|
||||
.defulat_widget_typeC{
|
||||
font: 12px/100% 'open sans',sans-serif;
|
||||
margin: 0 0 20px;
|
||||
position: relative;
|
||||
width: 510px;
|
||||
}
|
||||
.defulat_widget_typeC ul{
|
||||
margin: 0 0 0 70px;
|
||||
padding: 0;
|
||||
}
|
||||
.defulat_widget_typeC li{
|
||||
border-bottom: 1px solid #AAAAAA;
|
||||
clear: both;
|
||||
margin: 0 0 10px;
|
||||
overflow: hidden;
|
||||
padding: 0 0 10px;
|
||||
}
|
||||
|
||||
.defulat_widget_typeC .app-pic{
|
||||
background: none repeat scroll 0 0 #AAAAAA;
|
||||
border-radius: 3px 3px 3px 3px;
|
||||
height: 50px;
|
||||
left: 0;
|
||||
margin: 0 10px 0 0;
|
||||
overflow: hidden;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 50px;
|
||||
}
|
||||
|
||||
.defulat_widget_typeC span{
|
||||
display:block;
|
||||
margin:0 0 5px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.defulat_widget_typeC .wrap{
|
||||
overflow: hidden;
|
||||
}
|
||||
.defulat_widget_typeC img{
|
||||
height:50px;
|
||||
width:50px;
|
||||
}
|
|
@ -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 mobile/icons
|
||||
*= require mobile/font-awesome
|
||||
*/
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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"; }
|
|
@ -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";
|
||||
}
|
|
@ -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: 280px;
|
||||
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: .83em;
|
||||
margin-top: .2em;
|
||||
}
|
||||
.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;
|
||||
}
|
||||
#news_content .content .newpic {
|
||||
width: 320px;
|
||||
height: 220px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
#news_content .content .newstitle {
|
||||
font-size: 1.4em;
|
||||
padding: 0 10px;
|
||||
margin: 1em 0;
|
||||
}
|
||||
#news_content .content .newsDate {
|
||||
padding: 0 10px;
|
||||
font-size: 1em;
|
||||
color: #8D8D8D;
|
||||
}
|
||||
#news_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: 560px;
|
||||
}
|
||||
.main-menu ul li {
|
||||
width: 128px;
|
||||
}
|
||||
}
|
||||
@media(min-width:768px) {
|
||||
.main-menu ul {
|
||||
width: 640px;
|
||||
}
|
||||
.main-menu ul li {
|
||||
width: 148px;
|
||||
}
|
||||
.content .newitem {
|
||||
width: 280px;
|
||||
}
|
||||
}
|
||||
@media(min-width:800px) {
|
||||
.main-menu ul {
|
||||
width: 640px;
|
||||
}
|
||||
.main-menu ul li {
|
||||
width: 148px;
|
||||
}
|
||||
}
|
||||
@media(min-width:961px) {
|
||||
.main-menu ul {
|
||||
width: 640px;
|
||||
}
|
||||
.main-menu ul li {
|
||||
width: 148px;
|
||||
}
|
||||
}
|
||||
@media(min-width: 1024px) {
|
||||
.main-menu ul {
|
||||
width: 800px;
|
||||
}
|
||||
.main-menu ul li {
|
||||
width: 188px;
|
||||
}
|
||||
.content .newitem {
|
||||
width: 280px;
|
||||
}
|
||||
}
|
||||
@media(min-width:1280px) {
|
||||
}
|
|
@ -94,7 +94,12 @@ class Admin::DesignsController < OrbitBackendController
|
|||
|
||||
def destroy
|
||||
@design = Design.find(params[:id])
|
||||
@design.destroy
|
||||
if @site.design == @design
|
||||
flash[:error] = "Failed! You can not delete a design that used by default "
|
||||
else
|
||||
@design.destroy
|
||||
flash[:notice] = "Successfully deleted design."
|
||||
end
|
||||
redirect_to admin_designs_url
|
||||
end
|
||||
|
||||
|
|
|
@ -4,7 +4,6 @@ class Admin::ObjectAuthsNewInterfaceController < OrbitBackendController
|
|||
|
||||
|
||||
def setting
|
||||
|
||||
@sys_users = User.all(conditions: {admin: false}).includes(:avatar).not_guest_user
|
||||
@ob_auth = ObjectAuth.find params[:object_auth_id]
|
||||
@options_from_collection_for_select_ob_auth = @ob_auth.siblings.collect{|oa| [oa.auth_obj.pp_object,oa.id] }
|
||||
|
@ -60,6 +59,7 @@ class Admin::ObjectAuthsNewInterfaceController < OrbitBackendController
|
|||
|
||||
def force_order
|
||||
authenticate_user!
|
||||
setup_vars
|
||||
check_if_user_can_do_object_auth
|
||||
end
|
||||
|
||||
|
@ -76,15 +76,25 @@ class Admin::ObjectAuthsNewInterfaceController < OrbitBackendController
|
|||
end
|
||||
|
||||
def setup_vars
|
||||
if request.env['HTTP_REFERER'].split('/')[4] == "object_auths"
|
||||
http_referer = request.env['HTTP_REFERER'] || ''
|
||||
if http_referer.split('/')[4] == "object_auths"
|
||||
@app_key = params[:app_key]
|
||||
else
|
||||
@app_key = request.env['HTTP_REFERER'].split('/')[4]
|
||||
@app_key = http_referer.split('/')[4]
|
||||
end
|
||||
|
||||
#@app_key = request.fullpath.split('/')[1] if(@app_key == "back_end")
|
||||
@app_key.gsub!(/[?].*/,'')
|
||||
@module_app = ModuleApp.first(conditions: {:key => @app_key} )
|
||||
if @app_key
|
||||
@app_key.gsub!(/[?].*/,'')
|
||||
@module_app = ModuleApp.first(conditions: {:key => @app_key} )
|
||||
if @module_app.nil?
|
||||
raise ObjectAuthError, 'Auth procress failed, module_app not exist '
|
||||
end
|
||||
else
|
||||
raise ObjectAuthError, 'Auth procress failed, pls redo your sop'
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -39,9 +39,8 @@ class Admin::PagePartsController < ApplicationController
|
|||
when 'announcement'
|
||||
@categories = BulletinCategory.all
|
||||
@tags = AnnouncementTag.all
|
||||
when 'news'
|
||||
@categories = NewsBulletinCategory.all
|
||||
@tags = NewsTag.all
|
||||
when 'gallery'
|
||||
@albums = GalleryAlbum.all
|
||||
when 'web_resource'
|
||||
@categories = WebLinkCategory.all
|
||||
@tags = WebResourceTag.all
|
||||
|
@ -90,6 +89,7 @@ class Admin::PagePartsController < ApplicationController
|
|||
end
|
||||
|
||||
def reload_widgets
|
||||
@part = PagePart.find params[:part_id]
|
||||
@categories =[]
|
||||
@module_app = ModuleApp.find(params[:id])
|
||||
|
||||
|
@ -101,9 +101,8 @@ class Admin::PagePartsController < ApplicationController
|
|||
when 'announcement'
|
||||
@categories = BulletinCategory.all
|
||||
@tags = AnnouncementTag.all
|
||||
when 'news'
|
||||
@categories = NewsBulletinCategory.all
|
||||
@tags = NewsTag.all
|
||||
when 'gallery'
|
||||
@albums = GalleryAlbum.all
|
||||
when 'web_resource'
|
||||
@categories = WebLinkCategory.all
|
||||
@tags = WebResourceTag.all
|
||||
|
@ -112,6 +111,7 @@ class Admin::PagePartsController < ApplicationController
|
|||
@tags = ArchiveTag.all
|
||||
end
|
||||
|
||||
@part.widget_path = @module_app.widgets.first if @module_app.needs_to_widget_option?
|
||||
respond_to do |format|
|
||||
format.js {}
|
||||
end
|
||||
|
|
|
@ -46,12 +46,16 @@ class Admin::TagsController < OrbitBackendController
|
|||
|
||||
protected
|
||||
|
||||
def set_module_app
|
||||
@module_app ||= ModuleApp.first(:conditions => {:key => @app_title.underscore}) rescue nil
|
||||
end
|
||||
|
||||
def get_tags
|
||||
@tags = (@module_app ? @module_app.tags : Tag.all)
|
||||
end
|
||||
|
||||
def setup_vars
|
||||
@app_key = request.env['HTTP_REFERER'].split('/')[4]
|
||||
if @app_key
|
||||
@app_key.gsub!(/[?].*/, '')
|
||||
@module_app = ModuleApp.first(conditions: {:key => @app_key})
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -2,14 +2,23 @@ class ApplicationController < ActionController::Base
|
|||
protect_from_forgery
|
||||
|
||||
include ParserFrontEnd, ParserBackEnd, ApplicationHelper
|
||||
include OrbitApp::ErrorHandlers::PageErrorHandler
|
||||
include OrbitApp::ErrorHandlers::ObjectAuthErrorHandler
|
||||
include OrbitApp::ErrorHandlers::ModuleAppErrorHandler
|
||||
|
||||
rescue_from ObjectAuthError, :with => :render_object_auth_error
|
||||
rescue_from ModuleAppError, :with => :render_module_app_error
|
||||
rescue_from PageError, :with => :render_page_error
|
||||
|
||||
layout :layout_by_resource
|
||||
|
||||
helper :admin
|
||||
before_filter :set_locale, :set_site
|
||||
before_filter :set_locale, :set_site, :prepare_for_mobile
|
||||
|
||||
helper_attr :site_valid_locales
|
||||
|
||||
|
||||
|
||||
def set_current_user
|
||||
User.current = current_or_guest_user
|
||||
end
|
||||
|
@ -121,6 +130,7 @@ class ApplicationController < ActionController::Base
|
|||
respond_to do |format|
|
||||
format.html { render :text => parse_page_content(@item), :layout => 'page_layout' }
|
||||
format.rss { render_main_rss }
|
||||
format.mobile { redirect_to mobile_path }
|
||||
end
|
||||
else
|
||||
render :text => '404 Not Found'
|
||||
|
@ -228,4 +238,22 @@ class ApplicationController < ActionController::Base
|
|||
redirect_to ret
|
||||
end
|
||||
|
||||
|
||||
private
|
||||
|
||||
def mobile_device?
|
||||
if session[:mobile_param]
|
||||
session[:mobile_param] == "1"
|
||||
else
|
||||
request.user_agent =~ /iPhone|iPod|Android/
|
||||
end
|
||||
end
|
||||
|
||||
def prepare_for_mobile
|
||||
if @site.mobile_on
|
||||
session[:mobile_param] = params[:mobile] if params[:mobile]
|
||||
request.format = :mobile if mobile_device?
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
class DefaultWidgetController< OrbitWidgetController
|
||||
|
||||
def front_end_available(var)
|
||||
@page_part = PagePart.find params[:part_id]
|
||||
@page_part.module_app.enable_frontend?
|
||||
end
|
||||
|
||||
def default_widget
|
||||
@tag_class = nil
|
||||
|
||||
@default_widget = @page_part.module_app.get_default_widget
|
||||
@widget_image_field = @default_widget[:image]
|
||||
data_limit = @page_part.widget_data_count.is_a?(Fixnum) ? @page_part.widget_data_count : (@page_part.widget_data_count.to_i rescue 3)
|
||||
@data = eval(@default_widget[:query]).limit(data_limit).includes(@widget_image_field)
|
||||
@fields = @page_part.widget_field
|
||||
|
||||
case params[:type]
|
||||
when "typeA"
|
||||
@tag_class = 'defulat_widget_typeA'
|
||||
render "typeA"
|
||||
when /typeB_/
|
||||
@tag_class = "defulat_widget_#{params[:type]}"
|
||||
render "typeB"
|
||||
when "typeC"
|
||||
@tag_class = 'defulat_widget_typeC'
|
||||
render "typeC"
|
||||
end
|
||||
|
||||
# {"inner"=>"true",
|
||||
# "category_id"=>"false",
|
||||
# "tag_id"=>"",
|
||||
# "page"=>"",
|
||||
# "search_query"=>"",
|
||||
# "part_title"=>"",
|
||||
# "part_id"=>"50ac426f83e75219d20000a7",
|
||||
# "controller"=>"default_widget",
|
||||
# "action"=>"default_widget",
|
||||
# "type"=>"typeA"}
|
||||
end
|
||||
end
|
|
@ -39,7 +39,7 @@ class FrontController < ApplicationController
|
|||
res << "'>"
|
||||
i = nil
|
||||
i = 1 if menu.values["li_incremental_#{current}"]
|
||||
children = current == 1 ? page.visible_children.reverse : page.visible_children
|
||||
children = current == 1 ? page.visible_children : page.visible_children
|
||||
children.each do |child|
|
||||
res << menu_li(child, current_page, current, menu, i)
|
||||
i += 1 if i
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
class MobileController < ApplicationController
|
||||
|
||||
layout 'mobile'
|
||||
|
||||
def index
|
||||
date_now = Time.now
|
||||
@bulletins = Bulletin.all.available_for_lang(I18n.locale).can_display.any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page(params[:page_main]).per(15)
|
||||
@ad_banner = AdBanner.where(title: "Banner")[0]
|
||||
end
|
||||
|
||||
def announcement
|
||||
@page_title = t('mobile.bulletin')
|
||||
date_now = Time.now
|
||||
@bulletins = Bulletin.all.available_for_lang(I18n.locale).can_display.any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page(params[:page_main]).per(15)
|
||||
end
|
||||
|
||||
def announcement_content
|
||||
@bulletin = Bulletin.find(params[:id]) rescue nil
|
||||
@page_title = @bulletin.title
|
||||
end
|
||||
|
||||
def dialog_contact
|
||||
@no_menu = @no_footer = true
|
||||
@page_title = t('mobile.contact')
|
||||
end
|
||||
|
||||
def dialog_copyright
|
||||
@no_menu = @no_footer = true
|
||||
@page_title = t('mobile.copyright')
|
||||
end
|
||||
|
||||
def dialog_language
|
||||
@no_menu = @no_footer = true
|
||||
@page_title = t('mobile.language')
|
||||
end
|
||||
|
||||
def map
|
||||
@no_menu = @no_footer = true
|
||||
@page_title = t('mobile.location')
|
||||
end
|
||||
|
||||
def page
|
||||
@page_title = t('mobile.page')
|
||||
@page_contexts = PageContext.where(:archived => false).page(params[:page_main]).per(15)
|
||||
end
|
||||
|
||||
def page_content
|
||||
@page_context = PageContext.first(conditions: { id: params[:id], :archived => false }) rescue nil
|
||||
@page_title = @page_context.page.title
|
||||
end
|
||||
|
||||
end
|
|
@ -13,6 +13,7 @@ class OrbitBackendController < ApplicationController
|
|||
def setup_vars
|
||||
@app_title ||= controller_path.split('/')[1].singularize
|
||||
@module_app ||= ModuleApp.first(conditions: {:key => @app_title} )
|
||||
raise ModuleAppError, 'Can not find ModuleApp' if @module_app.nil?
|
||||
end
|
||||
|
||||
private
|
||||
|
|
|
@ -17,7 +17,6 @@ class PagesController < ApplicationController
|
|||
def show
|
||||
#begin
|
||||
@item = Item.first(:conditions => {:path => params[:page_name]})
|
||||
#binding.pry
|
||||
if @item && @item.is_published && (@item.enabled_for.nil? ? true : @item.enabled_for.include?(I18n.locale.to_s))
|
||||
impressionist(@item)
|
||||
case @item.class.to_s
|
||||
|
@ -66,6 +65,7 @@ class PagesController < ApplicationController
|
|||
|
||||
def get_item
|
||||
module_app = ModuleApp.first(:conditions => {:key => params[:app_name]})
|
||||
|
||||
if !params[:category_id].blank? && !params[:tag_id].blank?
|
||||
@item = Item.first(:conditions => {:module_app_id => module_app.id, :app_frontend_url => params[:app_action], :category => params[:category_id], :tag => params[:tag_id]})
|
||||
@item = Item.first(:conditions => {:module_app_id => module_app.id, :app_frontend_url => params[:app_action], :category => params[:category_id], :tag => ''}) unless @item
|
||||
|
@ -75,7 +75,8 @@ class PagesController < ApplicationController
|
|||
@item = Item.where(module_app_id: module_app.id,app_frontend_url:params[:app_action],tag: params[:tag_id]).any_in(category: [nil,'']).first
|
||||
end
|
||||
@item = Item.where(module_app_id: module_app.id,app_frontend_url:params[:app_action]).all_of("tag" => {"$in" => [nil,'']},"category" => { "$in" => [nil,'']}).first unless @item
|
||||
#TODO 需要做 error handler 處理沒有新增該模組頁面導致錯誤的可能性
|
||||
@item = Item.where(module_app_id: module_app.id,app_frontend_url:params[:app_action]).first unless @item
|
||||
raise PageError,'Missing Frontend Page' if @item.nil?
|
||||
end
|
||||
|
||||
def save_from_no_lang_for_page
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
class ModuleAppError < StandardError
|
||||
|
||||
end
|
|
@ -0,0 +1,3 @@
|
|||
class ObjectAuthError < StandardError
|
||||
|
||||
end
|
|
@ -0,0 +1,3 @@
|
|||
class PageError < StandardError
|
||||
|
||||
end
|
|
@ -0,0 +1,11 @@
|
|||
module Admin::PagePartsHelper
|
||||
|
||||
def support_link
|
||||
url_method = @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
|
||||
end
|
|
@ -184,6 +184,7 @@ module ApplicationHelper
|
|||
stylesheets << "<link href='/assets/orbit-bar.css' rel='stylesheet' type='text/css' />\n"
|
||||
stylesheets << "<link href='/assets/social-share-button.css' rel='stylesheet' type='text/css' />\n"
|
||||
stylesheets << "<link href='#{asset_path 'banner_nav.css'}' rel='stylesheet' type='text/css' />\n"
|
||||
stylesheets << "<link href='#{asset_path 'default_widget.css'}' rel='stylesheet' type='text/css' />\n"
|
||||
stylesheets << "<link href='#{page.design.css_default.file.url}' rel='stylesheet' type='text/css' />\n" if page.design.css_default
|
||||
theme = page.design.themes.detect{ |d| d.id == page.theme_id }
|
||||
stylesheets << "<link href='#{theme.file.url}' rel='stylesheet' type='text/css' />\n" if theme
|
||||
|
@ -208,7 +209,7 @@ module ApplicationHelper
|
|||
javascripts << "<script type='text/javascript' src='/assets/lib/social-share-button.js'></script>\n"
|
||||
javascripts << "<script type='text/javascript' src='/assets/event.js'></script>\n"
|
||||
page.design.javascripts.each do |js|
|
||||
# javascripts << "<script type='text/javascript' src='#{js.file.url}'></script>"
|
||||
javascripts << "<script type='text/javascript' src='#{js.file.url}'></script>"
|
||||
end
|
||||
javascripts
|
||||
end
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
module DefaultWidgetsHelper
|
||||
def get_row_data(row_data,field)
|
||||
field_is_link = (field[0][1]== 'false' ? false : true )
|
||||
field_setting = {:class=>field[0][1],:method=>field[0][0]}
|
||||
if field_is_link
|
||||
field_link = field[0][1].to_s + '_path'
|
||||
binding.pry
|
||||
link = link_to(row_data.send(field_setting[:method]),field_link.send(row_data))
|
||||
content_tag(:span,link,:class=>field_setting[:class])
|
||||
else
|
||||
content_tag(:span,row_data.send(field_setting[:method]),:class=>field_setting[:class])
|
||||
end
|
||||
end
|
||||
end
|
|
@ -47,16 +47,16 @@ class Item
|
|||
new_parent = Item.find(new_parent)
|
||||
current_position_sibling = find_by_parent_and_position(new_parent, position.to_i)
|
||||
if current_position_sibling
|
||||
current_position_sibling.at_bottom? ? move_below(current_position_sibling) : move_above(current_position_sibling)
|
||||
move_above(current_position_sibling)
|
||||
elsif self.parent != new_parent
|
||||
self.parent = new_parent
|
||||
save!
|
||||
save
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def show_in_sitemap_for(locale)
|
||||
if !sitemap_enabled[locale].blank?
|
||||
if sitemap_enabled && !sitemap_enabled[locale].blank?
|
||||
sitemap_enabled[locale].eql?('true') ? true : false
|
||||
else
|
||||
true
|
||||
|
|
|
@ -17,7 +17,8 @@ class ModuleApp
|
|||
# field :widgets ,type: Array
|
||||
field :widgets ,type: Hash
|
||||
field :widget_fields ,type: Array
|
||||
|
||||
field :widget_options,type:Hash
|
||||
field :widget_options_fields_i18n,type:Hash
|
||||
has_many :managers,as: :managing_app ,:class_name => "AppManager" ,:dependent => :destroy#,:foreign_key => "managing_app_id",:inverse_of => :managing_app
|
||||
has_many :sub_managers,as: :sub_managing_app ,:class_name => "AppManager", :dependent => :destroy#,:foreign_key => "sub_managing_app_id",:inverse_of => :sub_managing_app
|
||||
|
||||
|
@ -29,6 +30,13 @@ class ModuleApp
|
|||
|
||||
before_save :set_key
|
||||
|
||||
#>>>>>>>>>>>>> remove after app config applied
|
||||
def get_default_widget
|
||||
{:query=>'Bulletin.all',:image=> 'image'}
|
||||
end
|
||||
#<<<<<<<<<<<<@@
|
||||
|
||||
|
||||
def is_manager?(user)
|
||||
managing_users.include?(user)
|
||||
end
|
||||
|
@ -79,6 +87,14 @@ class ModuleApp
|
|||
end
|
||||
end
|
||||
|
||||
def needs_to_widget_option?
|
||||
if self.widget_options
|
||||
self.widget_options.has_key? widgets.first
|
||||
else
|
||||
false
|
||||
end
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def set_key
|
||||
|
|
|
@ -24,9 +24,8 @@ class Page < Item
|
|||
has_many :page_metas, :autosave => true, :dependent => :destroy
|
||||
accepts_nested_attributes_for :page_parts, :allow_destroy => true
|
||||
|
||||
before_save :delete_empty_frontend_field
|
||||
before_save :create_parts, if: Proc.new { |page| page.new_record? || page.design_id_changed? }
|
||||
after_save :generate_html
|
||||
before_save :delete_empty_frontend_field, :generate_html
|
||||
|
||||
protected
|
||||
|
||||
|
@ -37,6 +36,7 @@ class Page < Item
|
|||
page_design.layout.layout_parts.each do |layout_part|
|
||||
current_part = self.page_parts.detect{|page_part| page_part.name.eql?(layout_part.name)}
|
||||
current_part = self.page_parts.build(:name => layout_part.name) unless current_part
|
||||
|
||||
if menu_part && current_part.name.eql?(menu_part.name)
|
||||
if current_part.new_record?
|
||||
current_part.kind = menu_part.kind
|
||||
|
@ -50,6 +50,10 @@ class Page < Item
|
|||
current_part.update_attributes(:kind => menu_part.kind, :public_r_tag => menu_part.public_r_tag, :public_r_tag_object_id => menu_part.public_r_tag_object_id)
|
||||
end
|
||||
end
|
||||
elsif current_part.new_record?
|
||||
PagePart.without_callback(:save, :after, :update_parent) do
|
||||
current_part.save
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -67,10 +71,7 @@ class Page < Item
|
|||
end
|
||||
|
||||
def generate_html
|
||||
Page.without_callback(:save, :after, :generate_html) do
|
||||
self.content_translations = parse_page_noko(self, Site.first)
|
||||
self.save
|
||||
end
|
||||
self.content_translations = parse_page_noko(self, Site.first)
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -14,6 +14,7 @@ class PagePart
|
|||
|
||||
field :widget_style
|
||||
field :widget_field , :type => Array
|
||||
field :widget_options ,:type=>Hash
|
||||
field :widget_data_count
|
||||
|
||||
belongs_to :page
|
||||
|
@ -22,6 +23,7 @@ class PagePart
|
|||
before_save :delete_empty_widget_field
|
||||
after_save :update_parent
|
||||
|
||||
|
||||
protected
|
||||
|
||||
def delete_empty_widget_field
|
||||
|
@ -35,4 +37,5 @@ class PagePart
|
|||
self.page.save
|
||||
end
|
||||
|
||||
|
||||
end
|
|
@ -26,6 +26,8 @@ class Site
|
|||
field :footer, localize: true
|
||||
field :sub_menu, localize: true
|
||||
|
||||
field :mobile_on, :type => Boolean, :default => false
|
||||
|
||||
belongs_to :design
|
||||
has_many :site_metas, :autosave => true, :dependent => :destroy
|
||||
|
||||
|
|
|
@ -1,4 +1,45 @@
|
|||
class Tag < ProtoTag
|
||||
belongs_to :module_app
|
||||
# class Tag < ProtoTag
|
||||
# belongs_to :module_app
|
||||
|
||||
# end
|
||||
|
||||
class Tag
|
||||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
include Impressionist::Impressionable
|
||||
|
||||
is_impressionable :counter_cache => { :column_name => :view_count }
|
||||
|
||||
field :key
|
||||
field :view_count, :type => Integer, :default => 0
|
||||
#field :cloud_amper,:type: Integer,:default=> 0
|
||||
|
||||
def self.sorted_for_cloud
|
||||
tags = {}
|
||||
self.all.each{ |tag|
|
||||
tags.merge!({tag => self.get_impressionist(tag)})
|
||||
}
|
||||
if !tags.blank?
|
||||
sorted_tags = tags.sort{|a,b| a[1]<=>b[1]}.reverse
|
||||
sorted_tags[0][1] = :hot1
|
||||
offset = (sorted_tags.size - 1) / 3
|
||||
i = 1
|
||||
class_i = 2
|
||||
sorted_tags[1..-1].collect!{ |x|
|
||||
x[1] = "hot#{class_i}"
|
||||
i == offset ? i = 1 : i += 1 if class_i < 4
|
||||
class_i += 1 if i == offset && class_i < 4
|
||||
}
|
||||
sorted_tags
|
||||
else
|
||||
[]
|
||||
end
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def self.get_impressionist(item_tag = self)
|
||||
item_tag.impressions.where(:created_at.gte=> 14.days.ago,:created_at.lte => Time.now).count
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -11,4 +11,8 @@ $("#ad_banner-tab-content").children(".tab-pane").removeClass("active");
|
|||
$('#post-body-content').find(".nav.nav-tabs").children('li[id!="new_ad_banner_tab_but"]').last().addClass("active");
|
||||
$("#ad_banner-tab-content").children(".tab-pane").last().addClass("active");
|
||||
|
||||
|
||||
<% if params[:action] && params[:action] =='create'%>
|
||||
var trigger = $("#ad_banner-tab-content").children(".tab-pane").last().find(".preview_trigger");
|
||||
new_url = trigger.attr("href").replace(/\/admin\/ad_banners\/.*\/preview/gi,"/admin/ad_banners/<%= @ad_banner.id %>/preview");
|
||||
trigger.attr("href",new_url);
|
||||
<% end %>
|
|
@ -46,7 +46,6 @@
|
|||
<%#= select_tag "page_part[widget_field][]", options_for_select(@module_app.widget_fields.collect{|widget_field| [widget_field.humanize, widget_field]}, @part.widget_field.collect{|widget_field| widget_field}), {:multiple => :multiple, :size => 6} %>
|
||||
</span>
|
||||
|
||||
<div id="widget_data_count">
|
||||
<%= f.label :widget_data_count %>
|
||||
<%= f.text_field :widget_data_count %>
|
||||
</div>
|
||||
<span id="widget_options">
|
||||
<%= render 'widget_options' %>
|
||||
</span>
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
<% if (@module_app && @module_app.widget_fields) %>
|
||||
|
||||
<%= label_tag('widget_field') %>
|
||||
|
@ -9,4 +8,6 @@
|
|||
<%= select_tag "page_part[widget_field_type][]", options_for_select(LIST[:widget_field_type].collect{|widget_field| [widget_field.humanize, widget_field]}, (@part[:widget_field][i][1] if (@part && !@part[:widget_field].blank? && !@part[:widget_field][i].blank?)) ), :include_blank => true %> <br />
|
||||
<% end %>
|
||||
|
||||
<%= label_tag :widget_data_count %>
|
||||
<%= text_field_tag :widget_data_count,@part.widget_data_count %>
|
||||
<% end %>
|
|
@ -0,0 +1,17 @@
|
|||
<% if (@module_app && @module_app.widget_options) %>
|
||||
<%= label_tag('widget_options') %>
|
||||
<% if @module_app.key.eql?('gallery') %>
|
||||
<%= t('gallery.gallery') %>
|
||||
<%= select_tag "page_part[widget_options][album_id]", options_from_collection_for_select(@albums, :id, :name, :selected => (@part.widget_options[key] rescue nil)) %>
|
||||
<% end %>
|
||||
<% if @module_app.widget_options.has_key? @part.widget_path%>
|
||||
<% @module_app.widget_options[@part.widget_path].each do |key,options| %>
|
||||
<%= label_tag(t(@module_app.widget_options_fields_i18n[@part.widget_path][key]))%>
|
||||
<%= select_tag "page_part[widget_options][#{key}]", options_for_select(options,(@part.widget_options[key] rescue nil)) %>
|
||||
<!-- (@part[:widget_field][i][0] if (@part && !@part[:widget_field].blank? && !@part[:widget_field][i].blank?)) ) -->
|
||||
|
||||
<% end %>
|
||||
|
||||
<% end %>
|
||||
|
||||
<% end %>
|
|
@ -3,3 +3,5 @@ $('#widget_style_list').html("<%= escape_javascript(select 'page_part', 'widget_
|
|||
$('#widget_field').html("<%= j render 'widget_fields' %>");
|
||||
$('#widget_category').html("<%= j render 'widget_categories' %>");
|
||||
$('#widget_tag').html("<%= j render 'widget_tags' %>");
|
||||
|
||||
$("#widget_options").html("<%= j render 'widget_options'%>");
|
|
@ -1,112 +1,122 @@
|
|||
<% # encoding: utf-8 %>
|
||||
|
||||
<% content_for :side_bar do %>
|
||||
<%= render :partial => 'layouts/side_bar', :locals => {:link_name => t('site.settings'), :link_url => admin_site_site_info_path(@site), :icon => 'icons-cog', :side_bar_content => 'admin/sites/side_bar'} %>
|
||||
<%= render :partial => 'layouts/side_bar', :locals => {:link_name => t('site.settings'), :link_url => admin_site_site_info_path(@site), :icon => 'icons-cog', :side_bar_content => 'admin/sites/side_bar'} %>
|
||||
<% end %>
|
||||
|
||||
<div id="poststuff">
|
||||
<%= form_for @site, :url => admin_site_path(@site), :html => {:class => "clear"} do |f| %>
|
||||
<div id="post-body">
|
||||
<div id="post-body-content" class="clear">
|
||||
<ul class="nav nav-tabs">
|
||||
<% @site_valid_locales.each do |locale|%>
|
||||
<%#= raise @site_valid_locales.inspect %>
|
||||
<%= content_tag :li, link_to(I18nVariable.from_locale(locale), ".#{locale}", :data => {:toggle => "tab"}), :class => (active_when_current_locale_eq locale) %>
|
||||
<% end %>
|
||||
</ul>
|
||||
<div class="tab-content form-horizontal">
|
||||
<div class="control-group" style="margin-bottom: 0;">
|
||||
<div class="controls">
|
||||
<label class="checkbox">
|
||||
<%= f.check_box :title_always_on %> <%= t :always_display_title %>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<% @site_valid_locales.each do |locale|%>
|
||||
<%= content_tag :div, :class => "tab-pane fade #{active_when_current_locale_eq locale} #{locale}" do %>
|
||||
<div class="control-group">
|
||||
<label class="control-label"><%= t 'site.title' %></label>
|
||||
<div class="controls">
|
||||
<%= f.fields_for :title_translations do |f| %>
|
||||
<%= f.text_field locale, :class => "input-xxlarge", :value => (@site.title_translations[locale] rescue nil) %>
|
||||
<% end %>
|
||||
<p class="help-block"><%= (t 'site.title_help').html_safe %></p>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<div class="control-group">
|
||||
<label class="control-label"><%= t 'site.search' %></label>
|
||||
<div class="controls">
|
||||
<%= text_field_tag 'site[search][domains]',(@site.search["domains"] rescue nil), {:class => "input-xxlarge" ,:placeholder => t("search.domains") }%>
|
||||
<%= text_field_tag 'site[search][sitesearch]',(@site.search["sitesearch"] rescue nil),{ :class => "input-xxlarge" ,:placeholder => t("search.sitesearch") }%>
|
||||
<p class="help-block"><%= (t 'site.search_help').html_safe %></p>
|
||||
</div>
|
||||
</div>
|
||||
<%= form_for @site, :url => admin_site_path(@site), :html => {:class => "clear"} do |f| %>
|
||||
<div id="post-body">
|
||||
<div id="post-body-content" class="clear">
|
||||
<ul class="nav nav-tabs">
|
||||
<% @site_valid_locales.each do |locale|%>
|
||||
<%#= raise @site_valid_locales.inspect %>
|
||||
<%= content_tag :li, link_to(I18nVariable.from_locale(locale), ".#{locale}", :data => {:toggle => "tab"}), :class => (active_when_current_locale_eq locale) %>
|
||||
<% end %>
|
||||
</ul>
|
||||
<div class="tab-content form-horizontal">
|
||||
<div class="control-group" style="margin-bottom: 0;">
|
||||
<div class="controls">
|
||||
<label class="checkbox">
|
||||
<%= f.check_box :title_always_on %> <%= t :always_display_title %>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<% @site_valid_locales.each do |locale|%>
|
||||
<%= content_tag :div, :class => "tab-pane fade #{active_when_current_locale_eq locale} #{locale}" do %>
|
||||
<div class="control-group">
|
||||
<label class="control-label"><%= t 'site.title' %></label>
|
||||
<div class="controls">
|
||||
<%= f.fields_for :title_translations do |f| %>
|
||||
<%= f.text_field locale, :class => "input-xxlarge", :value => (@site.title_translations[locale] rescue nil) %>
|
||||
<% end %>
|
||||
<p class="help-block"><%= (t 'site.title_help').html_safe %></p>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<div class="control-group">
|
||||
<label class="control-label"><%= t 'site.search' %></label>
|
||||
<div class="controls">
|
||||
<%= text_field_tag 'site[search][domains]',(@site.search["domains"] rescue nil), {:class => "input-xxlarge" ,:placeholder => t("search.domains") }%>
|
||||
<%= text_field_tag 'site[search][sitesearch]',(@site.search["sitesearch"] rescue nil),{ :class => "input-xxlarge" ,:placeholder => t("search.sitesearch") }%>
|
||||
<p class="help-block"><%= (t 'site.search_help').html_safe %></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<% @site_valid_locales.each do |locale|%>
|
||||
<%= content_tag :div, :class => "tab-pane fade #{active_when_current_locale_eq locale} #{locale}" do %>
|
||||
<div class="control-group">
|
||||
<label class="control-label"><%= t 'site.keywords' %></label>
|
||||
<div class="controls">
|
||||
<%= f.fields_for :keywords do |f| %>
|
||||
<%= f.text_area locale, :class => "input-xxlarge textarea-height-s", :value => (@site.keywords(locale) rescue nil) %>
|
||||
<% end %>
|
||||
<p class="help-block"><%= (t 'site.keywords_help').html_safe %></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label"><%= t 'site.description' %></label>
|
||||
<div class="controls">
|
||||
<%= f.fields_for :description do |f| %>
|
||||
<%= f.text_area locale, :class => "input-xxlarge textarea-height-s", :value => (@site.description(locale) rescue nil) %>
|
||||
<% end %>
|
||||
<p class="help-block"><%= (t 'site.description_help').html_safe %></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label"><%= t 'site.footer' %></label>
|
||||
<div class="controls">
|
||||
<%= f.fields_for :footer_translations do |f| %>
|
||||
<%= f.text_area locale, :class => "tinymce_textarea input-xxlarge", :value => (@site.footer_translations[locale] rescue nil) %>
|
||||
<% end %>
|
||||
<p class="help-block"><%= (t 'site.footer_help').html_safe %></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label"><%= t 'site.sub_menu' %></label>
|
||||
<div class="controls">
|
||||
<%= f.fields_for :sub_menu_translations do |f| %>
|
||||
<%= f.text_area locale, :class => "tinymce_textarea input-xxlarge", :value => (@site.sub_menu_translations[locale] rescue nil) %>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label"><%= t 'site.default_image' %></label>
|
||||
<div class="controls">
|
||||
<%= f.file_field :default_image, :id => "input-upload", :class => 'upload', :onchange => "document.getElementById('fu').innerHTML = this.form.fu.value = this.value;" %>
|
||||
<span id='fu' class="file-name"></span>
|
||||
<!--請程式務必將圖片尺寸加入到行內裡-->
|
||||
<% if @site.default_image %>
|
||||
<%= image_tag( @site.default_image, :size=>"120x120") rescue ''%>
|
||||
<% else %>
|
||||
<img class="pull-left upload-picture" src="/assets/default-img.png" />
|
||||
<% end %>
|
||||
<br>
|
||||
<% if @site.default_image.file %>
|
||||
<%= f.check_box :remove_default_image %>
|
||||
<%= t('刪除已上傳檔案') %>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-actions">
|
||||
<%= f.submit t("submit"), :class => "btn btn-primary" %>
|
||||
<%= f.submit t("cancel"), :class => "btn ", :type => 'reset' %>
|
||||
</div>
|
||||
<% end %>
|
||||
<% @site_valid_locales.each do |locale|%>
|
||||
<%= content_tag :div, :class => "tab-pane fade #{active_when_current_locale_eq locale} #{locale}" do %>
|
||||
<div class="control-group">
|
||||
<label class="control-label"><%= t 'site.keywords' %></label>
|
||||
<div class="controls">
|
||||
<%= f.fields_for :keywords do |f| %>
|
||||
<%= f.text_area locale, :class => "input-xxlarge textarea-height-s", :value => (@site.keywords(locale) rescue nil) %>
|
||||
<% end %>
|
||||
<p class="help-block"><%= (t 'site.keywords_help').html_safe %></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label"><%= t 'site.description' %></label>
|
||||
<div class="controls">
|
||||
<%= f.fields_for :description do |f| %>
|
||||
<%= f.text_area locale, :class => "input-xxlarge textarea-height-s", :value => (@site.description(locale) rescue nil) %>
|
||||
<% end %>
|
||||
<p class="help-block"><%= (t 'site.description_help').html_safe %></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label"><%= t 'site.header' %></label>
|
||||
<div class="controls">
|
||||
<%= f.fields_for :sub_menu_translations do |f| %>
|
||||
<%= f.text_area locale, :class => "tinymce_textarea input-xxlarge", :value => (@site.sub_menu_translations[locale] rescue nil) %>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label"><%= t 'site.footer' %></label>
|
||||
<div class="controls">
|
||||
<%= f.fields_for :footer_translations do |f| %>
|
||||
<%= f.text_area locale, :class => "tinymce_textarea input-xxlarge", :value => (@site.footer_translations[locale] rescue nil) %>
|
||||
<% end %>
|
||||
<p class="help-block"><%= (t 'site.footer_help').html_safe %></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label"><%= t 'site.default_image' %></label>
|
||||
<div class="controls">
|
||||
<%= f.file_field :default_image, :id => "input-upload", :class => 'upload', :onchange => "document.getElementById('fu').innerHTML = this.form.fu.value = this.value;" %>
|
||||
<span id='fu' class="file-name"></span>
|
||||
<!--請程式務必將圖片尺寸加入到行內裡-->
|
||||
<% if @site.default_image %>
|
||||
<%= image_tag( @site.default_image, :size=>"120x120") rescue ''%>
|
||||
<% else %>
|
||||
<img class="pull-left upload-picture" src="/assets/default-img.png" />
|
||||
<% end %>
|
||||
<br>
|
||||
<% if @site.default_image.file %>
|
||||
<label class="checkbox">
|
||||
<%= check_box_tag 'site[remove_default_image]' %>
|
||||
<%= t('delete') %>
|
||||
</label>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<div class="control-group" style="margin-bottom: 0;">
|
||||
<label class="control-label"><%= t 'site.mobile_version' %></label>
|
||||
<div class="controls">
|
||||
<label class="checkbox">
|
||||
<%= f.check_box :mobile_on %>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-actions">
|
||||
<%= f.submit t("submit"), :class => "btn btn-primary" %>
|
||||
<%= f.submit t("cancel"), :class => "btn ", :type => 'reset' %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
<%= content_tag :div,:class=>@tag_class do%>
|
||||
<div class="defulat_widget_type_A">
|
||||
<table class="defulat_widget_tb" border="0" cellpadding="0" cellspacing="0" >
|
||||
<thead>
|
||||
<tr>
|
||||
<% @fields.each do |field|%>
|
||||
<th><%= content_tag(:span,field[0],:class=>field[1])%></th>
|
||||
<% end %>
|
||||
</tr>
|
||||
</thead>
|
||||
<% @data.each do |row_data| %>
|
||||
<tr>
|
||||
<% @fields.each do |field|%>
|
||||
<% if field[0] == "bulletin_category"%>
|
||||
<td><%= content_tag(:span,row_data.send(field[0]).title,:class=>field[1])%></td>
|
||||
<% elsif field[0] == "title" %>
|
||||
<td><%= content_tag(:span, link_to(row_data.send(field[0]), panel_announcement_front_end_bulletin_path(row_data)), :class=>field[1]) %></td>
|
||||
<% else %>
|
||||
<td><%= content_tag(:span,row_data.send(field[0]),:class=>field[1])%></td>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</tr>
|
||||
<% end %>
|
||||
</table>
|
||||
<% end %>
|
|
@ -0,0 +1,23 @@
|
|||
<%= content_tag :div,:class=>@tag_class do%>
|
||||
<ul class="defulat_widget_list">
|
||||
<% @data.each do |row_data| %>
|
||||
<%= content_tag(:li) do %>
|
||||
<div class="img app-pic">
|
||||
<%= image_tag row_data.send(@widget_image_field)%>
|
||||
</div>
|
||||
<div class="wrap">
|
||||
<% @fields.each do |field|%>
|
||||
<% if field[0] == "bulletin_category"%>
|
||||
<%= content_tag(:span,row_data.send(field[0]).title,:class=>field[1])%>
|
||||
<% elsif field[0] == "title" %>
|
||||
<%= content_tag(:span, link_to(row_data.send(field[0]), panel_announcement_front_end_bulletin_path(row_data)), :class=>field[1]) %>
|
||||
<% else %>
|
||||
<%= content_tag(:span,row_data.send(field[0]),:class=>field[1])%>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</ul>
|
||||
<div class="more">more</div>
|
||||
<% end %>
|
|
@ -0,0 +1,21 @@
|
|||
<%= content_tag :div,:class=>@tag_class do%>
|
||||
<div class="img app-pic">
|
||||
<%= image_tag @data.first.send(@widget_image_field)%>
|
||||
</div>
|
||||
<ul class="defulat_widget_list">
|
||||
<% @data.each do |row_data| %>
|
||||
<%= content_tag(:li) do %>
|
||||
<% @fields.each do |field|%>
|
||||
<% if field[0] == "bulletin_category"%>
|
||||
<%= content_tag(:span,row_data.send(field[0]).title,:class=>field[1])%>
|
||||
<% elsif field[0] == "title" %>
|
||||
<%= content_tag(:span, link_to(row_data.send(field[0]), panel_announcement_front_end_bulletin_path(row_data)), :class=>field[1]) %>
|
||||
<% else %>
|
||||
<%= content_tag(:span,row_data.send(field[0]),:class=>field[1])%>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</ul>
|
||||
<div class="more">more</div>
|
||||
<% end %>
|
|
@ -19,7 +19,7 @@
|
|||
<div id='slideshow-<%= @ad_banner.title.dehumanize %>' class='slideshow'>
|
||||
<% (images = @ad_banner.ad_images).shuffle.each do |ad_image| %>
|
||||
<% if ad_image.display? %>
|
||||
<img src='<%= ad_image.file %>' alt='<%= ad_image.title || ' ' %>' time_to_next='<%= @ad_banner.transition_msec %>' link_open='<%= ad_image.link_open %>' link_url='<%= (ad_image.direct_to_after_click? ? ad_image.out_link : ad_image.context) || ' ' %>' link_url='<%= (ad_image.out_link) %>' style=' <%= 'cursor:pointer;' if !ad_image.out_link.blank? %>'/>
|
||||
<img src='<%= ad_image.file %>' alt='<%= ad_image.title || ' ' %>' time_to_next='<%= @ad_banner.transition_msec %>' link_open='<%= ad_image.link_open %>' link_url='<%= (ad_image.out_link) %>' style=' <%= 'cursor:pointer;' if !ad_image.out_link.blank? %>'/>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<% if @menu_page && @menu_page.visible_children.size > 0 %>
|
||||
<div class='category_list'>
|
||||
<h3 class='h3'><%= @menu_page.title %></h3>
|
||||
<ul class='list'>"
|
||||
<ul class='list'>
|
||||
<% @menu_page.visible_children.each do |child| %>
|
||||
<li class="<%= @page_id.eql?(child.id) ? 'active' : nil %>">
|
||||
<a href="<%= (child.class.to_s.eql?('Page') ? '/' + child.path : child.url) %>"><%= child.title %></a>
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
<%# Link to the "First" page
|
||||
- available local variables
|
||||
url: url to the first page
|
||||
current_page: a page object for the currently displayed page
|
||||
num_pages: total number of pages
|
||||
per_page: number of items to fetch per page
|
||||
remote: data-remote
|
||||
-%>
|
||||
<li class="first">
|
||||
<%= link_to_unless current_page.first?, "«", url, :remote => remote %>
|
||||
</li>
|
|
@ -0,0 +1,8 @@
|
|||
<%# Non-link tag that stands for skipped pages...
|
||||
- available local variables
|
||||
current_page: a page object for the currently displayed page
|
||||
num_pages: total number of pages
|
||||
per_page: number of items to fetch per page
|
||||
remote: data-remote
|
||||
-%>
|
||||
<!-- <li class="page gap"><%= raw(t 'views.pagination.truncate') %></li> -->
|
|
@ -0,0 +1,11 @@
|
|||
<%# Link to the "Last" page
|
||||
- available local variables
|
||||
url: url to the last page
|
||||
current_page: a page object for the currently displayed page
|
||||
num_pages: total number of pages
|
||||
per_page: number of items to fetch per page
|
||||
remote: data-remote
|
||||
-%>
|
||||
<li class="last">
|
||||
<%= link_to_unless current_page.last?, "»", url, {:remote => remote} %>
|
||||
</li>
|
|
@ -0,0 +1,11 @@
|
|||
<%# Link to the "Next" page
|
||||
- available local variables
|
||||
url: url to the next page
|
||||
current_page: a page object for the currently displayed page
|
||||
num_pages: total number of pages
|
||||
per_page: number of items to fetch per page
|
||||
remote: data-remote
|
||||
-%>
|
||||
<li class="next">
|
||||
<%= link_to_unless current_page.last?, '›', url, :rel => 'next', :remote => remote %>
|
||||
</li>
|
|
@ -0,0 +1,16 @@
|
|||
<%# Link showing page number
|
||||
- available local variables
|
||||
page: a page object for "this" page
|
||||
url: url to this page
|
||||
current_page: a page object for the currently displayed page
|
||||
num_pages: total number of pages
|
||||
per_page: number of items to fetch per page
|
||||
remote: data-remote
|
||||
-%>
|
||||
<li class="page<%= ' active' if page.current? %>">
|
||||
<% if page.current? %>
|
||||
<a><%= page %></a>
|
||||
<% else %>
|
||||
<%= link_to page, url, opts = {:remote => remote, :rel => page.next? ? '›' : page.prev? ? '‹' : nil} %>
|
||||
<% end %>
|
||||
</li>
|
|
@ -0,0 +1,25 @@
|
|||
<%# The container tag
|
||||
- available local variables
|
||||
current_page: a page object for the currently displayed page
|
||||
num_pages: total number of pages
|
||||
per_page: number of items to fetch per page
|
||||
remote: data-remote
|
||||
paginator: the paginator that renders the pagination tags inside
|
||||
-%>
|
||||
<%= paginator.render do -%>
|
||||
<div class="pagination">
|
||||
<ul>
|
||||
<%= first_page_tag unless current_page.first? %>
|
||||
<%= prev_page_tag unless current_page.first? %>
|
||||
<% each_page do |page| -%>
|
||||
<% if page.left_outer? || page.right_outer? || page.inside_window? -%>
|
||||
<%= page_tag page %>
|
||||
<% elsif !page.was_truncated? -%>
|
||||
<%= gap_tag %>
|
||||
<% end -%>
|
||||
<% end -%>
|
||||
<%= next_page_tag unless current_page.last? %>
|
||||
<%= last_page_tag unless current_page.last? %>
|
||||
</ul>
|
||||
</div>
|
||||
<% end -%>
|
|
@ -0,0 +1,11 @@
|
|||
<%# Link to the "Previous" page
|
||||
- available local variables
|
||||
url: url to the previous page
|
||||
current_page: a page object for the currently displayed page
|
||||
num_pages: total number of pages
|
||||
per_page: number of items to fetch per page
|
||||
remote: data-remote
|
||||
-%>
|
||||
<li class="prev">
|
||||
<%= link_to_unless current_page.first?, '‹', url, :rel => 'prev', :remote => remote %>
|
||||
</li>
|
|
@ -1,83 +1,83 @@
|
|||
<header id="orbit-bar" class="navbar">
|
||||
<div class="navbar-inner">
|
||||
<div class="container clear">
|
||||
<div class="dropdown orbit-logo pull-left">
|
||||
<% if !current_user.nil? %>
|
||||
<%= render :partial=>"layouts/member_orbit_menu"%>
|
||||
<% else %>
|
||||
<%= render :partial=>"layouts/guest_orbit_menu"%>
|
||||
<% end -%>
|
||||
</div>
|
||||
<ul class="nav">
|
||||
<li><%= link_to '', root_path, {'data-icon' => 'house'} %></li>
|
||||
<!-- <li><%= link_to '', desktop_path, {'data-icon' => 'desktop'} %></li> -->
|
||||
</ul>
|
||||
<ul class="nav pull-right">
|
||||
<li class="dropdown language">
|
||||
<a class="dropdown-toggle" href="#" data-toggle="dropdown" data-icon="earth"></a>
|
||||
<ul class="dropdown-menu language-menu">
|
||||
<% @site_in_use_locales.each do |locale| %>
|
||||
<%= content_tag :li, (link_to t(:_locale, :locale => locale), add_locale(remove_locale((referer rescue request.fullpath)), locale)), :class => (I18n.locale.eql?(locale.to_sym) ? 'active' : nil) %>
|
||||
<% end %>
|
||||
</ul>
|
||||
<div class="navbar-inner">
|
||||
<div class="container clear">
|
||||
<div class="dropdown orbit-logo pull-left">
|
||||
<% if !current_user.nil? %>
|
||||
<%= render :partial=>"layouts/member_orbit_menu"%>
|
||||
<% else %>
|
||||
<%= render :partial=>"layouts/guest_orbit_menu"%>
|
||||
<% end -%>
|
||||
</div>
|
||||
<ul class="nav">
|
||||
<li><%= link_to '', root_path, {'data-icon' => 'house'} %></li>
|
||||
<!-- <li><%= link_to '', desktop_path, {'data-icon' => 'desktop'} %></li> -->
|
||||
</ul>
|
||||
<ul class="nav pull-right">
|
||||
<li class="dropdown language">
|
||||
<a class="dropdown-toggle" href="#" data-toggle="dropdown" data-icon="earth"></a>
|
||||
<ul class="dropdown-menu language-menu">
|
||||
<% @site_in_use_locales.each do |locale| %>
|
||||
<%= content_tag :li, (link_to t(:_locale, :locale => locale), add_locale(remove_locale((referer rescue request.fullpath)), locale)), :class => (I18n.locale.eql?(locale.to_sym) ? 'active' : nil) %>
|
||||
<% end %>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="search clear" title="<%= t :search_google %>">
|
||||
<a class="orbit-bar-search" href="#" data-icon="search"></a>
|
||||
<form class="navbar-search" method="get" action="http://www.google.com/custom">
|
||||
<input type="hidden" name="client" value="pub-&" />
|
||||
<input type="hidden" name="ie" id="ie" value="utf-8" />
|
||||
<input type="hidden" name="oe" id="oe" value="utf-8" />
|
||||
<input type="hidden" name="cof" id="cof" value="AH:center;AWFID:03de271f1940eea3;" />
|
||||
<input type='hidden' name='domains' value='<%= @site.search["domains"] rescue ''%>'>
|
||||
<input type='hidden' name='sitesearch' value='<%= @site.search["sitesearch"] rescue '' %>'>
|
||||
<%= text_field_tag 'q','',{:class => "search-query span3",:placeholder=> t(:search_google) ,:disabled=> ((@site.search["sitesearch"] || @site.search["domains"] ).blank? rescue true)}%>
|
||||
</form>
|
||||
</li>
|
||||
<% if user_signed_in? %>
|
||||
<li class="dropdown active">
|
||||
<a class="orbit-bar-account" href="#" data-toggle="dropdown">
|
||||
<img class="member-img" src="/assets/person.png" />
|
||||
<%#= image_tag current_user.avatar.thumb.url, :class => 'member-img' %>
|
||||
<span class="member-name"><%= current_user.name %></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu account-menu">
|
||||
<!-- <li><%= link_to content_tag(:i, nil, :class => 'icons-tools') + ' ' + t(:account_setting), desktop_path+"#settings-account" %></li> -->
|
||||
<!-- <li><%= link_to content_tag(:i, nil, :class => 'icons-desktop') + ' ' + t(:desktop), desktop_path %></li> -->
|
||||
<li><%= link_to content_tag(:i, nil, :class => 'icons-outlog') + ' ' + t(:logout), destroy_user_session_path %></li>
|
||||
<li class="divider"></li>
|
||||
<li>
|
||||
<a href="#">
|
||||
<i class="icons-help"></i>
|
||||
<%= t(:help) %>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="search clear" title="<%= t :search_google %>">
|
||||
<a class="orbit-bar-search" href="#" data-icon="search"></a>
|
||||
<form class="navbar-search" method="get" action="http://www.google.com/custom">
|
||||
<input type="hidden" name="client" value="pub-&" />
|
||||
<input type="hidden" name="ie" id="ie" value="utf-8" />
|
||||
<input type="hidden" name="oe" id="oe" value="utf-8" />
|
||||
<input type="hidden" name="cof" id="cof" value="AH:center;AWFID:03de271f1940eea3;" />
|
||||
<input type='hidden' name='domains' value='<%= @site.search["domains"] rescue ''%>'>
|
||||
<input type='hidden' name='sitesearch' value='<%= @site.search["sitesearch"] rescue '' %>'>
|
||||
<%= text_field_tag 'q','',{:class => "search-query span3",:placeholder=> t(:search_nccu) ,:disabled=> ((@site.search["sitesearch"] || @site.search["domains"] ).blank? rescue true)}%>
|
||||
</form>
|
||||
</li>
|
||||
<% if user_signed_in? %>
|
||||
<li class="dropdown active">
|
||||
<a class="orbit-bar-account" href="#" data-toggle="dropdown">
|
||||
<img class="member-img" src="/assets/person.png" />
|
||||
<%#= image_tag current_user.avatar.thumb.url, :class => 'member-img' %>
|
||||
<span class="member-name"><%= current_user.name %></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu account-menu">
|
||||
<!-- <li><%= link_to content_tag(:i, nil, :class => 'icons-tools') + ' ' + t(:account_setting), desktop_path+"#settings-account" %></li> -->
|
||||
<!-- <li><%= link_to content_tag(:i, nil, :class => 'icons-desktop') + ' ' + t(:desktop), desktop_path %></li> -->
|
||||
<li><%= link_to content_tag(:i, nil, :class => 'icons-outlog') + ' ' + t(:logout), destroy_user_session_path %></li>
|
||||
<li class="divider"></li>
|
||||
<li>
|
||||
<a href="#">
|
||||
<i class="icons-help"></i>
|
||||
<%= t(:help) %>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<% else %>
|
||||
<li class="dropdown bar-login">
|
||||
<a class="dropdown-toggle orbit-bar-member" href="#" data-icon="inlog"></a>
|
||||
<div class="dropdown-menu">
|
||||
<ul class="log">
|
||||
<li class="title hide"></li>
|
||||
<% else %>
|
||||
<li class="dropdown bar-login">
|
||||
<a class="dropdown-toggle orbit-bar-member" href="#" data-icon="inlog"></a>
|
||||
<div class="dropdown-menu">
|
||||
<ul class="log">
|
||||
<li class="title hide"></li>
|
||||
|
||||
<%= form_for :user, :url => user_session_path do |f| %>
|
||||
<li>
|
||||
<div class="input-prepend">
|
||||
<span class="add-on"><i class="icon-user"></i></span>
|
||||
<%= f.text_field :email, :class => 'span2', :placeholder => t(:email), :size => 16 %>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="input-prepend">
|
||||
<span class="add-on"><i class="icon-lock"></i></span>
|
||||
<%= f.password_field :password, :class => 'span2', :placeholder => t(:password), :size => 16 %>
|
||||
</div>
|
||||
</li>
|
||||
<li class="clear hide">
|
||||
<%= link_to t(:forgot_password), new_user_password_path, :class => 'forgot' %>
|
||||
</li>
|
||||
<li>
|
||||
<%= content_tag :button, t(:login), :type => :submit, :class => 'btn btn-primary' %>
|
||||
<%= form_for :user, :url => user_session_path do |f| %>
|
||||
<li>
|
||||
<div class="input-prepend">
|
||||
<span class="add-on"><i class="icon-user"></i></span>
|
||||
<%= f.text_field :email, :class => 'span2', :placeholder => t(:email), :size => 16 %>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="input-prepend">
|
||||
<span class="add-on"><i class="icon-lock"></i></span>
|
||||
<%= f.password_field :password, :class => 'span2', :placeholder => t(:password), :size => 16 %>
|
||||
</div>
|
||||
</li>
|
||||
<li class="clear hide">
|
||||
<%= link_to t(:forgot_password), new_user_password_path, :class => 'forgot' %>
|
||||
</li>
|
||||
<li>
|
||||
<%= content_tag :button, t(:login), :type => :submit, :class => 'btn btn-primary' %>
|
||||
|
||||
</li>
|
||||
<li class="divider hide"><span><%= t(:or_lower) %></span></li>
|
||||
|
|
|
@ -0,0 +1,65 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<base href=<%= "#{request.protocol}#{request.host_with_port}/mobile/"%>>
|
||||
<title><%= @site.title %><%= (' - ' + @page_title) if @page_title %></title>
|
||||
<%= stylesheet_link_tag "mobile" %>
|
||||
<%= javascript_include_tag "mobile" %>
|
||||
<%= javascript_include_tag "http://maps.google.com/maps/api/js?sensor=false&libraries=places" %>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<!-- <meta name="apple-itunes-app" content="app-id=342792525, app-argument=imdb:///?src=mdot"> -->
|
||||
<meta name="description" content="">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black">
|
||||
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0">
|
||||
<!-- iPhone -->
|
||||
<link href="<%= asset_path 'mobile/apple-startup-iPhone.png' %>" media="(device-width: 320px) and (device-height: 480px) and (-webkit-device-pixel-ratio: 1)" rel="apple-touch-startup-image">
|
||||
|
||||
<!-- iPhone (Retina) -->
|
||||
<link href="<%= asset_path 'mobile/apple-startup-iPhone-RETINA.png' %>" media="(device-width: 320px) and (device-height: 480px) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image">
|
||||
|
||||
<!-- iPhone 5 -->
|
||||
<link href="<%= asset_path 'mobile/apple-startup-iPhone-Tall-RETINA.png' %>" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image">
|
||||
|
||||
<!-- iPad Portrait -->
|
||||
<link href="<%= asset_path 'mobile/apple-startup-iPad-Portrait.png' %>" media="(device-width: 768px) and (device-height: 1024px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 1)" rel="apple-touch-startup-image">
|
||||
|
||||
<!-- iPad Landscape -->
|
||||
<link href="<%= asset_path 'mobile/apple-startup-iPad-Landscape.png' %>" media="(device-width: 768px) and (device-height: 1024px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 1)" rel="apple-touch-startup-image">
|
||||
|
||||
<!-- iPad Portrait (Retina) -->
|
||||
<link href="<%= asset_path 'mobile/apple-startup-iPad-RETINA-Portrait.png' %>" media="(device-width: 768px) and (device-height: 1024px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image">
|
||||
|
||||
<!-- iPad Landscape (Retina) -->
|
||||
<link href="<%= asset_path 'mobile/apple-startup-iPad-RETINA-Landscape.png' %>" media="(device-width: 768px) and (device-height: 1024px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image">
|
||||
|
||||
<!-- iPhone icon -->
|
||||
<link rel="apple-touch-icon-precomposed" href="<%= asset_path 'mobile/apple-touch-icon.png' %>">
|
||||
|
||||
<!-- iPhone icon (Retina) -->
|
||||
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="<%= asset_path 'mobile/apple-touch-icon@2x.png' %>">
|
||||
|
||||
<!-- iPad icon -->
|
||||
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="<%= asset_path 'mobile/apple-touch-icon-ipad.png' %>">
|
||||
|
||||
<!-- iPad icon (Retina) -->
|
||||
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="<%= asset_path 'mobile/apple-touch-icon-ipad@2x.png' %>">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div data-role="page" data-url="<%= request.fullpath %>" id="<%= params[:action] %>" data-add-back-btn="<%= params[:action].eql?('index')? nil : 'true' %>">
|
||||
<section class="global">
|
||||
<% if !(yield :header).blank? %>
|
||||
<%= yield :header %>
|
||||
<% else %>
|
||||
<%= render 'header' %>
|
||||
<% end unless @no_header %>
|
||||
<%= render 'menu' unless @no_menu %>
|
||||
<section class="content">
|
||||
<%= yield %>
|
||||
</section>
|
||||
<%= render 'footer' unless @no_footer %>
|
||||
</section>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,24 @@
|
|||
<footer class="footer" data-role="footer" data-position="fixed">
|
||||
<div data-role="navbar">
|
||||
<ul>
|
||||
<li>
|
||||
<%= link_to mobile_dialog_copyright_path, {"data-transition" => "flip", "data-rel" => "dialog", "data-inline" => "true"} do %>
|
||||
<i class="icons-information"></i>
|
||||
<%= t('mobile.copyright') %>
|
||||
<% end %>
|
||||
</li>
|
||||
<li>
|
||||
<%= link_to mobile_map_path, {"data-transition" => "flip"} do %>
|
||||
<i class="icons-location"></i>
|
||||
<%= t('mobile.location') %>
|
||||
<% end %>
|
||||
</li>
|
||||
<li>
|
||||
<%= link_to mobile_dialog_contact_path, {"data-rel" => "dialog"} do %>
|
||||
<i class="icons-phone"></i>
|
||||
<%= t('mobile.contact') %>
|
||||
<% end %>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</footer>
|
|
@ -0,0 +1,9 @@
|
|||
<header class="header" data-role="header">
|
||||
<h1 class="openmenu">
|
||||
<%= image_tag asset_path('mobile/logo.png') %>
|
||||
</h1>
|
||||
<i class="openmenu icons-arrow-bottom-e"></i>
|
||||
<%= link_to mobile_dialog_language_path, {:class => "ui-btn-right language", "data-iconpos" => "notext", "data-icon" => "search", "data-rel" => "dialog"} do %>
|
||||
<i class="icons-earth"></i>
|
||||
<% end %>
|
||||
</header>
|
|
@ -0,0 +1,3 @@
|
|||
<header data-role="header" data-theme="d">
|
||||
<h1><%= t('mobile.contact') %></h1>
|
||||
</header>
|
|
@ -0,0 +1,3 @@
|
|||
<header data-role="header" data-theme="d">
|
||||
<h1><%= t('mobile.copyright') %></h1>
|
||||
</header>
|
|
@ -0,0 +1,3 @@
|
|||
<div data-role="header" data-theme="c">
|
||||
<h3><%= t('mobile.language') %></h3>
|
||||
</div>
|
|
@ -0,0 +1,3 @@
|
|||
<div data-role="header">
|
||||
<h1><%= t('mobile.location') %></h1>
|
||||
</div>
|
|
@ -0,0 +1,9 @@
|
|||
<div data-role="dialog" id="language_select">
|
||||
<div data-role="content" data-theme="c">
|
||||
<h3><%= t('mobile.language') %></h3>
|
||||
<% @site_in_use_locales.each do |locale| %>
|
||||
<%= link_to t(:_locale, :locale => locale), add_locale(remove_locale((referer rescue request.fullpath)), locale), {"data-role" => "button", "data-theme" => "b", "data-shadow" => "true"} %>
|
||||
<% end %>
|
||||
<a href="#" data-role="button" data-mini="true" data-rel="back" data-theme="a"><%= t('mobile.cancel') %></a>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,7 @@
|
|||
<section class="main-menu">
|
||||
<ul class="clear">
|
||||
<li><%= link_to content_tag(:i, nil, :class => "icons-house") + content_tag(:span, t('mobile.home')), mobile_path %></li>
|
||||
<li><%= link_to content_tag(:i, nil, :class => "icons-megaphone") + content_tag(:span, t('mobile.bulletin')), mobile_announcement_path %></li>
|
||||
<li><%= link_to content_tag(:i, nil, :class => "icons-page") + content_tag(:span, t('mobile.page')), mobile_page_path %></li>
|
||||
</ul>
|
||||
</section>
|
|
@ -0,0 +1,13 @@
|
|||
<ul data-role="listview" class="list">
|
||||
<% @bulletins.each do |bulletin| %>
|
||||
<li data-corners="false" data-shadow="false" data-iconshadow="true" data-wrapperels="div" data-icon="arrow-r" data-iconpos="right" data-theme="c">
|
||||
<%= link_to mobile_announcement_content_path(bulletin), :class => "ui-link-inherit" do %>
|
||||
<%= image_tag bulletin.image.url, :class => "ui-li-thumb" %>
|
||||
<h3><%= bulletin.title %></h3>
|
||||
<p class="ui-li-aside ui-li-desc"><%= display_date(bulletin.postdate) %></p>
|
||||
<div class="ui-li-desc"><%= bulletin.subtitle %></div>
|
||||
<% end %>
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
<%= paginate @bulletins, :param_name => :page_main, :window => 2 %>
|
|
@ -0,0 +1,6 @@
|
|||
<div class="newpic">
|
||||
<%= image_tag @bulletin.image.url %>
|
||||
</div>
|
||||
<h3 class="newstitle"><%= @bulletin.title %></h3>
|
||||
<p class="newsDate"><%= display_date_time(@bulletin.postdate) %></p>
|
||||
<div class="newsummary"><%= @bulletin.text.html_safe rescue '' %></div>
|
|
@ -0,0 +1,11 @@
|
|||
<%= content_for :header do %>
|
||||
<%= render 'header_dialog_contact' %>
|
||||
<% end %>
|
||||
|
||||
<ul>
|
||||
<li>總機電話:<a href="tel:+886229393091">02-29393091</a></li>
|
||||
<li>傳真:02-29379611</li>
|
||||
<li>緊急重大事件通聯窗口:校內分機 66119、66110</li>
|
||||
<li>總值日室:<a href="tel:+88229387132">02-29387132</a></li>
|
||||
<li>駐警衛室:<a href="tel:+88229387129">02-29387129</a></li>
|
||||
</ul>
|
|
@ -0,0 +1,6 @@
|
|||
<%= content_for :header do %>
|
||||
<%= render 'header_dialog_copyright' %>
|
||||
<% end %>
|
||||
|
||||
<p>本網站著作權屬於國立政治大學。</p>
|
||||
<p>RulingDigital 銳綸數位建置</p>
|
|
@ -0,0 +1,7 @@
|
|||
<%= content_for :header do %>
|
||||
<%= render 'header_dialog_language' %>
|
||||
<% end %>
|
||||
|
||||
<% @site_in_use_locales.each do |locale| %>
|
||||
<%= link_to t(:_locale, :locale => locale), add_locale(remove_locale((request.referer rescue request.fullpath)), locale), {"data-role" => "button", "data-theme" => "b", "data-shadow" => "true"} %>
|
||||
<% end %>
|
|
@ -0,0 +1,19 @@
|
|||
<div class="slideshow">
|
||||
<% @ad_banner.ad_images.each do |image| %>
|
||||
<div class="slidebanner"><%= image_tag image.file.url, :class => 'slideImg' %></div>
|
||||
<% end %>
|
||||
</div>
|
||||
<div class="newlist clear">
|
||||
<% @bulletins.each do |bulletin| %>
|
||||
<div class="newitem">
|
||||
<div class="newpic">
|
||||
<%= image_tag bulletin.image.url %>
|
||||
</div>
|
||||
<h3 class="newstitle">
|
||||
<%= link_to bulletin.title, mobile_announcement_content_path(bulletin) %>
|
||||
</h3>
|
||||
<p class="newsDate"><%= display_date(bulletin.postdate) %></p>
|
||||
<div class="newsummary"><%= bulletin.subtitle %></div>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
|
@ -0,0 +1,5 @@
|
|||
<%= content_for :header do %>
|
||||
<%= render 'header_map' %>
|
||||
<% end %>
|
||||
|
||||
<div id='map_canvas'></div>
|
|
@ -0,0 +1,10 @@
|
|||
<ul data-role="listview" class="list">
|
||||
<% @page_contexts.each do |page_context| %>
|
||||
<li>
|
||||
<%= link_to mobile_page_content_path(page_context) do %>
|
||||
<h3><%= page_context.page.title %></h3>
|
||||
<% end %>
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
<%= paginate @page_contexts, :param_name => :page_main, :window => 2 %>
|
|
@ -0,0 +1,2 @@
|
|||
<h3 class="newstitle"><%= @page_context.page.title %></h3>
|
||||
<div class="newsummary"><%= @page_context.context.html_safe rescue '' %></div>
|
|
@ -80,7 +80,7 @@ Devise.setup do |config|
|
|||
# The time you want to timeout the user session without activity. After this
|
||||
# time the user will be asked for credentials again.
|
||||
# config.timeout_in = 10.minutes
|
||||
config.timeout_in = 10.minutes
|
||||
config.timeout_in = 5.days
|
||||
|
||||
# ==> Configuration for :lockable
|
||||
# Defines which strategy will be used to lock an account.
|
||||
|
|