Merge branch 'master' into desktop
* master: (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', '> 2.1', '< 3.0.0' | ||||||
| gem 'mongoid-tree', :require => 'mongoid/tree' | gem 'mongoid-tree', :require => 'mongoid/tree' | ||||||
| gem "mongo_session_store-rails3" | gem "mongo_session_store-rails3" | ||||||
| gem 'mysql2' |  | ||||||
| gem 'nokogiri' | 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>"); | 		$("#main-wrap").after("<span id='show_preview'></span>"); | ||||||
| 		$.ajax({ | 		$.ajax({ | ||||||
| 			type: 'PUT', | 			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) { | $("div.editable").live("mouseenter mouseleave", function (event) { | ||||||
|   $(this).children('.edit_link').toggle(); |   $(this).children('.edit_link').toggle(); | ||||||
| }); | }); | ||||||
|  | @ -21,11 +25,11 @@ $("#page_module_app_id").live('change', function() { | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| $("#module_app_list select").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() { | $("#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() { | $("#tag_list select").live('change', function() { | ||||||
|  |  | ||||||
|  | @ -14,7 +14,6 @@ function load_tinymce() { | ||||||
|     theme_advanced_toolbar_align : "left", |     theme_advanced_toolbar_align : "left", | ||||||
|     theme_advanced_statusbar_location : "bottom", |     theme_advanced_statusbar_location : "bottom", | ||||||
|     theme_advanced_resizing : true, |     theme_advanced_resizing : true, | ||||||
|     relative_urls : false, |  | ||||||
| 
 | 
 | ||||||
|     // Skin options |     // Skin options | ||||||
|     skin : "o2k7", |     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 |   def destroy | ||||||
|     @design = Design.find(params[:id]) |     @design = Design.find(params[:id]) | ||||||
|  |     if @site.design == @design | ||||||
|  |       flash[:error] = "Failed! You can not delete a design that used by default " | ||||||
|  |     else | ||||||
|       @design.destroy |       @design.destroy | ||||||
|  |       flash[:notice] = "Successfully deleted design." | ||||||
|  |     end | ||||||
|     redirect_to admin_designs_url |     redirect_to admin_designs_url | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -4,7 +4,6 @@ class Admin::ObjectAuthsNewInterfaceController < OrbitBackendController | ||||||
|    |    | ||||||
|    |    | ||||||
|   def setting |   def setting | ||||||
| 
 |  | ||||||
|     @sys_users = User.all(conditions: {admin: false}).includes(:avatar).not_guest_user |     @sys_users = User.all(conditions: {admin: false}).includes(:avatar).not_guest_user | ||||||
|     @ob_auth = ObjectAuth.find params[:object_auth_id] |     @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] } |     @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 |   def force_order | ||||||
|     authenticate_user! |     authenticate_user! | ||||||
|  |     setup_vars | ||||||
|     check_if_user_can_do_object_auth |     check_if_user_can_do_object_auth | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|  | @ -76,15 +76,25 @@ class Admin::ObjectAuthsNewInterfaceController < OrbitBackendController | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   def setup_vars |   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] |       @app_key = params[:app_key] | ||||||
|     else |     else | ||||||
|       @app_key = request.env['HTTP_REFERER'].split('/')[4]    |       @app_key = http_referer.split('/')[4]    | ||||||
|     end |     end | ||||||
| 
 | 
 | ||||||
|     #@app_key = request.fullpath.split('/')[1] if(@app_key == "back_end")  |     #@app_key = request.fullpath.split('/')[1] if(@app_key == "back_end")  | ||||||
|  |     if @app_key | ||||||
|       @app_key.gsub!(/[?].*/,'') |       @app_key.gsub!(/[?].*/,'') | ||||||
|       @module_app = ModuleApp.first(conditions: {:key => @app_key} ) |       @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 | ||||||
| 
 | 
 | ||||||
| end | end | ||||||
|  |  | ||||||
|  | @ -39,9 +39,8 @@ class Admin::PagePartsController < ApplicationController | ||||||
|         when 'announcement' |         when 'announcement' | ||||||
|           @categories =  BulletinCategory.all |           @categories =  BulletinCategory.all | ||||||
|           @tags = AnnouncementTag.all |           @tags = AnnouncementTag.all | ||||||
|         when 'news' |         when 'gallery' | ||||||
|           @categories =  NewsBulletinCategory.all |           @albums = GalleryAlbum.all | ||||||
|           @tags = NewsTag.all |  | ||||||
|         when 'web_resource' |         when 'web_resource' | ||||||
|           @categories =  WebLinkCategory.all |           @categories =  WebLinkCategory.all | ||||||
|           @tags = WebResourceTag.all |           @tags = WebResourceTag.all | ||||||
|  | @ -90,6 +89,7 @@ class Admin::PagePartsController < ApplicationController | ||||||
|   end |   end | ||||||
|    |    | ||||||
|   def reload_widgets |   def reload_widgets | ||||||
|  |     @part = PagePart.find params[:part_id] | ||||||
|     @categories =[] |     @categories =[] | ||||||
|     @module_app = ModuleApp.find(params[:id]) |     @module_app = ModuleApp.find(params[:id]) | ||||||
| 	 | 	 | ||||||
|  | @ -101,9 +101,8 @@ class Admin::PagePartsController < ApplicationController | ||||||
|       when 'announcement' |       when 'announcement' | ||||||
|         @categories =  BulletinCategory.all |         @categories =  BulletinCategory.all | ||||||
|         @tags = AnnouncementTag.all |         @tags = AnnouncementTag.all | ||||||
|       when 'news' |       when 'gallery' | ||||||
|         @categories =  NewsBulletinCategory.all |         @albums = GalleryAlbum.all | ||||||
|         @tags = NewsTag.all |  | ||||||
|       when 'web_resource' |       when 'web_resource' | ||||||
|         @categories =  WebLinkCategory.all |         @categories =  WebLinkCategory.all | ||||||
|         @tags = WebResourceTag.all |         @tags = WebResourceTag.all | ||||||
|  | @ -112,6 +111,7 @@ class Admin::PagePartsController < ApplicationController | ||||||
|         @tags = ArchiveTag.all |         @tags = ArchiveTag.all | ||||||
|     end |     end | ||||||
| 
 | 
 | ||||||
|  |     @part.widget_path = @module_app.widgets.first if @module_app.needs_to_widget_option? | ||||||
|     respond_to do |format| |     respond_to do |format| | ||||||
|       format.js  {} |       format.js  {} | ||||||
|     end |     end | ||||||
|  |  | ||||||
|  | @ -46,12 +46,16 @@ class Admin::TagsController < OrbitBackendController | ||||||
|    |    | ||||||
|   protected |   protected | ||||||
|    |    | ||||||
|   def set_module_app |  | ||||||
|     @module_app ||= ModuleApp.first(:conditions => {:key => @app_title.underscore}) rescue nil |  | ||||||
|   end |  | ||||||
|    |  | ||||||
|   def get_tags |   def get_tags | ||||||
|     @tags = (@module_app ?  @module_app.tags : Tag.all) |     @tags = (@module_app ?  @module_app.tags : Tag.all) | ||||||
|   end |   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 | end | ||||||
|  |  | ||||||
|  | @ -2,14 +2,23 @@ class ApplicationController < ActionController::Base | ||||||
|   protect_from_forgery |   protect_from_forgery | ||||||
| 
 | 
 | ||||||
|   include ParserFrontEnd, ParserBackEnd, ApplicationHelper |   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 |   layout :layout_by_resource | ||||||
|    |    | ||||||
|   helper :admin |   helper :admin | ||||||
|   before_filter :set_locale, :set_site |   before_filter :set_locale, :set_site, :prepare_for_mobile | ||||||
| 
 | 
 | ||||||
|   helper_attr :site_valid_locales |   helper_attr :site_valid_locales | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|   def set_current_user |   def set_current_user | ||||||
|     User.current = current_or_guest_user |     User.current = current_or_guest_user | ||||||
|   end |   end | ||||||
|  | @ -121,6 +130,7 @@ class ApplicationController < ActionController::Base | ||||||
|       respond_to do |format| |       respond_to do |format| | ||||||
|         format.html { render :text => parse_page_content(@item), :layout => 'page_layout' } |         format.html { render :text => parse_page_content(@item), :layout => 'page_layout' } | ||||||
|         format.rss { render_main_rss } |         format.rss { render_main_rss } | ||||||
|  |         format.mobile { redirect_to mobile_path } | ||||||
|       end |       end | ||||||
|     else |     else | ||||||
|       render :text => '404 Not Found' |       render :text => '404 Not Found' | ||||||
|  | @ -228,4 +238,22 @@ class ApplicationController < ActionController::Base | ||||||
|     redirect_to ret |     redirect_to ret | ||||||
|   end |   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 | 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 << "'>" |       res << "'>" | ||||||
|       i = nil |       i = nil | ||||||
|       i = 1 if menu.values["li_incremental_#{current}"] |       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| |       children.each do |child| | ||||||
|         res << menu_li(child, current_page, current, menu, i) |         res << menu_li(child, current_page, current, menu, i) | ||||||
|         i += 1 if 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 |   def setup_vars | ||||||
|     @app_title ||= controller_path.split('/')[1].singularize |     @app_title ||= controller_path.split('/')[1].singularize | ||||||
|     @module_app ||= ModuleApp.first(conditions: {:key => @app_title} ) |     @module_app ||= ModuleApp.first(conditions: {:key => @app_title} ) | ||||||
|  |     raise ModuleAppError, 'Can not find ModuleApp' if @module_app.nil? | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   private |   private | ||||||
|  |  | ||||||
|  | @ -17,7 +17,6 @@ class PagesController < ApplicationController | ||||||
|   def show   |   def show   | ||||||
|     #begin   |     #begin   | ||||||
|       @item = Item.first(:conditions => {:path => params[:page_name]}) |       @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)) |       if @item && @item.is_published && (@item.enabled_for.nil? ? true : @item.enabled_for.include?(I18n.locale.to_s)) | ||||||
|         impressionist(@item) |         impressionist(@item) | ||||||
|         case @item.class.to_s |         case @item.class.to_s | ||||||
|  | @ -66,6 +65,7 @@ class PagesController < ApplicationController | ||||||
|     |     | ||||||
|   def get_item |   def get_item | ||||||
|     module_app = ModuleApp.first(:conditions => {:key => params[:app_name]}) |     module_app = ModuleApp.first(:conditions => {:key => params[:app_name]}) | ||||||
|  | 
 | ||||||
|     if !params[:category_id].blank? && !params[:tag_id].blank? |     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 => 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 |       @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 |       @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 |     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 |     @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 |   end | ||||||
|    |    | ||||||
|   def save_from_no_lang_for_page |   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/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='/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 '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 |     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 } |     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 |     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/lib/social-share-button.js'></script>\n" | ||||||
|     javascripts << "<script type='text/javascript' src='/assets/event.js'></script>\n" |     javascripts << "<script type='text/javascript' src='/assets/event.js'></script>\n" | ||||||
|     page.design.javascripts.each do |js| |     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 |     end | ||||||
|     javascripts |     javascripts | ||||||
|   end |   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) |       new_parent = Item.find(new_parent) | ||||||
|       current_position_sibling = find_by_parent_and_position(new_parent, position.to_i) |       current_position_sibling = find_by_parent_and_position(new_parent, position.to_i) | ||||||
|       if current_position_sibling |       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 |       elsif self.parent != new_parent | ||||||
|         self.parent = new_parent |         self.parent = new_parent | ||||||
|         save! |         save | ||||||
|       end |       end | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   def show_in_sitemap_for(locale) |   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 |       sitemap_enabled[locale].eql?('true') ? true : false | ||||||
|     else |     else | ||||||
|       true |       true | ||||||
|  |  | ||||||
|  | @ -17,7 +17,8 @@ class ModuleApp | ||||||
|   # field :widgets ,type: Array |   # field :widgets ,type: Array | ||||||
|   field :widgets ,type: Hash |   field :widgets ,type: Hash | ||||||
|   field :widget_fields ,type: Array |   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 :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 |   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 |   before_save :set_key | ||||||
|    |    | ||||||
|  |   #>>>>>>>>>>>>> remove after app config applied | ||||||
|  |   def get_default_widget | ||||||
|  |     {:query=>'Bulletin.all',:image=> 'image'} | ||||||
|  |   end | ||||||
|  |   #<<<<<<<<<<<<@@ | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|   def is_manager?(user) |   def is_manager?(user) | ||||||
|     managing_users.include?(user) |     managing_users.include?(user) | ||||||
|   end |   end | ||||||
|  | @ -79,6 +87,14 @@ class ModuleApp | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
|    |    | ||||||
|  |   def needs_to_widget_option? | ||||||
|  |     if self.widget_options | ||||||
|  |       self.widget_options.has_key? widgets.first | ||||||
|  |     else | ||||||
|  |       false   | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|   protected |   protected | ||||||
|    |    | ||||||
|   def set_key |   def set_key | ||||||
|  |  | ||||||
|  | @ -24,9 +24,8 @@ class Page < Item | ||||||
|   has_many :page_metas, :autosave => true, :dependent => :destroy |   has_many :page_metas, :autosave => true, :dependent => :destroy | ||||||
|   accepts_nested_attributes_for :page_parts, :allow_destroy => true |   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? } |   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 |   protected | ||||||
|    |    | ||||||
|  | @ -37,6 +36,7 @@ class Page < Item | ||||||
|     page_design.layout.layout_parts.each do |layout_part| |     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.detect{|page_part| page_part.name.eql?(layout_part.name)} | ||||||
|       current_part = self.page_parts.build(:name => layout_part.name) unless current_part |       current_part = self.page_parts.build(:name => layout_part.name) unless current_part | ||||||
|  | 
 | ||||||
|       if menu_part && current_part.name.eql?(menu_part.name)  |       if menu_part && current_part.name.eql?(menu_part.name)  | ||||||
|         if current_part.new_record? |         if current_part.new_record? | ||||||
|           current_part.kind = menu_part.kind |           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) |             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 | ||||||
|         end |         end | ||||||
|  |       elsif current_part.new_record? | ||||||
|  |         PagePart.without_callback(:save, :after, :update_parent) do | ||||||
|  |           current_part.save | ||||||
|  |         end | ||||||
|       end |       end | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
|  | @ -67,10 +71,7 @@ class Page < Item | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   def generate_html |   def generate_html | ||||||
|     Page.without_callback(:save, :after, :generate_html) do |  | ||||||
|     self.content_translations = parse_page_noko(self, Site.first) |     self.content_translations = parse_page_noko(self, Site.first) | ||||||
|       self.save |  | ||||||
|     end |  | ||||||
|   end |   end | ||||||
|    |    | ||||||
| end | end | ||||||
|  |  | ||||||
|  | @ -14,6 +14,7 @@ class PagePart | ||||||
|    |    | ||||||
|   field :widget_style |   field :widget_style | ||||||
|   field :widget_field , :type => Array |   field :widget_field , :type => Array | ||||||
|  |   field :widget_options ,:type=>Hash | ||||||
|   field :widget_data_count |   field :widget_data_count | ||||||
| 
 | 
 | ||||||
|   belongs_to :page |   belongs_to :page | ||||||
|  | @ -22,6 +23,7 @@ class PagePart | ||||||
|   before_save :delete_empty_widget_field |   before_save :delete_empty_widget_field | ||||||
|   after_save :update_parent |   after_save :update_parent | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|   protected |   protected | ||||||
|    |    | ||||||
|   def delete_empty_widget_field |   def delete_empty_widget_field | ||||||
|  | @ -35,4 +37,5 @@ class PagePart | ||||||
|     self.page.save |     self.page.save | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| end | end | ||||||
|  | @ -26,6 +26,8 @@ class Site | ||||||
|   field :footer, localize: true |   field :footer, localize: true | ||||||
|   field :sub_menu, localize: true |   field :sub_menu, localize: true | ||||||
| 
 | 
 | ||||||
|  |   field :mobile_on, :type => Boolean, :default => false | ||||||
|  |    | ||||||
|   belongs_to :design |   belongs_to :design | ||||||
|   has_many :site_metas, :autosave => true, :dependent => :destroy |   has_many :site_metas, :autosave => true, :dependent => :destroy | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,4 +1,45 @@ | ||||||
| class Tag < ProtoTag | # class Tag < ProtoTag | ||||||
|   belongs_to :module_app | #   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 | 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"); | $('#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"); | $("#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} %> | 	<%#= 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> | </span> | ||||||
| 
 | 
 | ||||||
| <div id="widget_data_count"> | <span id="widget_options"> | ||||||
| <%= f.label :widget_data_count %> | 	<%= render 'widget_options' %> | ||||||
| <%= f.text_field :widget_data_count %> | </span> | ||||||
| </div> |  | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| 	 |  | ||||||
| 	<% if (@module_app && @module_app.widget_fields) %> | 	<% if (@module_app && @module_app.widget_fields) %> | ||||||
| 	 | 	 | ||||||
| 	<%= label_tag('widget_field') %> | 	<%= 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 /> | 		<%= 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 %> | 	<% end %> | ||||||
| 	 | 	 | ||||||
|  | 		<%= label_tag :widget_data_count %> | ||||||
|  | 		<%= text_field_tag :widget_data_count,@part.widget_data_count %> | ||||||
| 	<% end %>	 | 	<% 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_field').html("<%= j render 'widget_fields' %>"); | ||||||
| $('#widget_category').html("<%= j render 'widget_categories' %>"); | $('#widget_category').html("<%= j render 'widget_categories' %>"); | ||||||
| $('#widget_tag').html("<%= j render 'widget_tags' %>"); | $('#widget_tag').html("<%= j render 'widget_tags' %>"); | ||||||
|  | 
 | ||||||
|  | $("#widget_options").html("<%= j render 'widget_options'%>"); | ||||||
|  | @ -5,7 +5,7 @@ | ||||||
| <% end %> | <% end %> | ||||||
| 
 | 
 | ||||||
| <div id="poststuff"> | <div id="poststuff"> | ||||||
| <%= form_for @site, :url => admin_site_path(@site), :html => {:class => "clear"} do |f| %> |   <%= form_for @site, :url => admin_site_path(@site), :html => {:class => "clear"} do |f| %> | ||||||
|     <div id="post-body"> |     <div id="post-body"> | ||||||
|       <div id="post-body-content" class="clear"> |       <div id="post-body-content" class="clear"> | ||||||
|         <ul class="nav nav-tabs"> |         <ul class="nav nav-tabs"> | ||||||
|  | @ -64,6 +64,14 @@ | ||||||
|                   <p class="help-block"><%= (t 'site.description_help').html_safe %></p> |                   <p class="help-block"><%= (t 'site.description_help').html_safe %></p> | ||||||
|                 </div> |                 </div> | ||||||
|               </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"> |               <div class="control-group"> | ||||||
|                 <label class="control-label"><%= t 'site.footer' %></label> |                 <label class="control-label"><%= t 'site.footer' %></label> | ||||||
|                 <div class="controls"> |                 <div class="controls"> | ||||||
|  | @ -73,14 +81,6 @@ | ||||||
|                   <p class="help-block"><%= (t 'site.footer_help').html_safe %></p> |                   <p class="help-block"><%= (t 'site.footer_help').html_safe %></p> | ||||||
|                 </div> |                 </div> | ||||||
|               </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"> |               <div class="control-group"> | ||||||
|                 <label class="control-label"><%= t 'site.default_image' %></label> |                 <label class="control-label"><%= t 'site.default_image' %></label> | ||||||
|                 <div class="controls"> |                 <div class="controls"> | ||||||
|  | @ -94,13 +94,23 @@ | ||||||
|                   <% end %> |                   <% end %> | ||||||
|                   <br> |                   <br> | ||||||
|                   <% if @site.default_image.file %> |                   <% if @site.default_image.file %> | ||||||
| 								  <%= f.check_box :remove_default_image %> |                     <label class="checkbox"> | ||||||
| 								  <%= t('刪除已上傳檔案') %> |                     <%= check_box_tag 'site[remove_default_image]' %> | ||||||
|  |                     <%= t('delete') %> | ||||||
|  |                     </label> | ||||||
|                   <% end %> |                   <% end %> | ||||||
|                 </div> |                 </div> | ||||||
|               </div> |               </div> | ||||||
|             <% end %> |             <% end %> | ||||||
|           <% 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> | ||||||
|     </div> |     </div> | ||||||
|  | @ -108,5 +118,5 @@ | ||||||
|       <%= f.submit t("submit"), :class => "btn btn-primary" %> |       <%= f.submit t("submit"), :class => "btn btn-primary" %> | ||||||
|       <%= f.submit t("cancel"), :class => "btn ", :type => 'reset' %> |       <%= f.submit t("cancel"), :class => "btn ", :type => 'reset' %> | ||||||
|     </div> |     </div> | ||||||
| <% end %> |   <% end %> | ||||||
| </div> | </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'> |   <div id='slideshow-<%= @ad_banner.title.dehumanize %>' class='slideshow'> | ||||||
|     <% (images = @ad_banner.ad_images).shuffle.each do |ad_image| %> |     <% (images = @ad_banner.ad_images).shuffle.each do |ad_image| %> | ||||||
|       <% if ad_image.display? %> |       <% 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 %> | ||||||
|     <% end %> |     <% end %> | ||||||
|   </div> |   </div> | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| <% if @menu_page && @menu_page.visible_children.size > 0 %> | <% if @menu_page && @menu_page.visible_children.size > 0 %> | ||||||
|   <div class='category_list'> |   <div class='category_list'> | ||||||
|     <h3 class='h3'><%= @menu_page.title %></h3> |     <h3 class='h3'><%= @menu_page.title %></h3> | ||||||
|     <ul class='list'>" |     <ul class='list'> | ||||||
|       <% @menu_page.visible_children.each do |child| %> |       <% @menu_page.visible_children.each do |child| %> | ||||||
|         <li class="<%= @page_id.eql?(child.id) ? 'active' : nil %>"> |         <li class="<%= @page_id.eql?(child.id) ? 'active' : nil %>"> | ||||||
|           <a href="<%= (child.class.to_s.eql?('Page') ? '/' + child.path : child.url) %>"><%= child.title %></a> |           <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,5 +1,5 @@ | ||||||
| <header id="orbit-bar" class="navbar"> | <header id="orbit-bar" class="navbar"> | ||||||
| 	<div class="navbar-inner"> | <div class="navbar-inner"> | ||||||
|   <div class="container clear"> |   <div class="container clear"> | ||||||
|     <div class="dropdown orbit-logo pull-left"> |     <div class="dropdown orbit-logo pull-left"> | ||||||
|       <% if !current_user.nil?  %> |       <% if !current_user.nil?  %> | ||||||
|  | @ -30,7 +30,7 @@ | ||||||
|         <input type="hidden" name="cof" id="cof" value="AH:center;AWFID:03de271f1940eea3;" /> |         <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='domains' value='<%= @site.search["domains"]  rescue ''%>'> | ||||||
|         <input type='hidden' name='sitesearch' value='<%= @site.search["sitesearch"] 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)}%> |         <%= text_field_tag 'q','',{:class => "search-query span3",:placeholder=> t(:search_google) ,:disabled=> ((@site.search["sitesearch"] || @site.search["domains"] ).blank? rescue true)}%> | ||||||
|       </form> |       </form> | ||||||
|       </li> |       </li> | ||||||
|       <% if user_signed_in? %> |       <% if user_signed_in? %> | ||||||
|  |  | ||||||
|  | @ -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 |   # The time you want to timeout the user session without activity. After this | ||||||
|   # time the user will be asked for credentials again. |   # time the user will be asked for credentials again. | ||||||
|   # config.timeout_in = 10.minutes |   # config.timeout_in = 10.minutes | ||||||
|   config.timeout_in = 10.minutes |   config.timeout_in = 5.days | ||||||
| 
 | 
 | ||||||
|   # ==> Configuration for :lockable |   # ==> Configuration for :lockable | ||||||
|   # Defines which strategy will be used to lock an account. |   # Defines which strategy will be used to lock an account. | ||||||
|  |  | ||||||