mirror of
https://github.com/YunoHost-Apps/jappix_ynh.git
synced 2024-09-03 19:26:19 +02:00
update source to 1.0.3
This commit is contained in:
parent
979b376609
commit
01fbda2f9b
463 changed files with 28475 additions and 158714 deletions
|
@ -4,250 +4,264 @@ Jappix Changelog
|
|||
Here's the log of what has changed over the Jappix releases.
|
||||
|
||||
|
||||
One, v1.0.3 (March 2014)
|
||||
------------------------
|
||||
|
||||
* Fix JSJaC packet register @valeriansaliou, @sstrigler
|
||||
|
||||
|
||||
One, v1.0.2 (March 2014)
|
||||
------------------------
|
||||
|
||||
* Fix IQ spoofing security issue @valeriansaliou, @sstrigler
|
||||
* Better autocompletion @Nabellaleen
|
||||
* Various bugfixes @Nabellaleen, @valeriansaliou
|
||||
|
||||
|
||||
One, v1.0.1 (January 2014)
|
||||
--------------------------
|
||||
|
||||
* Changed MAM namespace to a temporary one
|
||||
* Fixed broken Jappix Mini CSS loader in some cases
|
||||
* Libs update
|
||||
* Change MAM namespace to a temporary one @maranda
|
||||
* Fix broken Jappix Mini CSS loader in some cases @valeriansaliou
|
||||
* Libs update @valeriansaliou
|
||||
|
||||
|
||||
One, v1.0.0 (January 2014)
|
||||
--------------------------
|
||||
|
||||
* XEP-0166: Jingle
|
||||
* XEP-0292: vCard4 Over XMPP
|
||||
* XEP-0280: Message Carbons
|
||||
* IE9, IE10, IE11 support
|
||||
* Libs update
|
||||
* Client code rewrite
|
||||
* Directory tree re-organization
|
||||
* Tested code (pass CSSLint, JSHint and PHPLint)
|
||||
* XEP-0166: Jingle @valeriansaliou
|
||||
* XEP-0292: vCard4 Over XMPP @valeriansaliou
|
||||
* XEP-0280: Message Carbons @valeriansaliou
|
||||
* IE9, IE10, IE11 support @valeriansaliou
|
||||
* Libs update @valeriansaliou
|
||||
* Client code rewrite @valeriansaliou
|
||||
* Directory tree re-organization @valeriansaliou
|
||||
* Tested code (pass CSSLint, JSHint and PHPLint) @valeriansaliou
|
||||
|
||||
|
||||
Nemesis Alpha 9, v0.9.9 (August 2013)
|
||||
-------------------------------------
|
||||
|
||||
* XEP-0313: Message Archive Management
|
||||
* Drop support for Message Archiving (XEP-0136), outpaced by MAM (XEP-0313)
|
||||
* Jappix Desktop performances improved (noticeable with big rosters)
|
||||
* Fix Jappix Desktop avatar system, unable to cache avatars (thus increasing network load and delays)
|
||||
* New translations added (Mongolian), and a few ones updated
|
||||
* XEP-0313: Message Archive Management @valeriansaliou
|
||||
* Drop support for Message Archiving (XEP-0136), outpaced by MAM (XEP-0313) @valeriansaliou
|
||||
* Jappix Desktop performances improved (noticeable with big rosters) @valeriansaliou
|
||||
* Fix Jappix Desktop avatar system, unable to cache avatars (thus increasing network load and delays) @valeriansaliou
|
||||
* New translations added (Mongolian), and a few ones updated @valeriansaliou
|
||||
|
||||
|
||||
Nemesis Alpha 8, v0.9.8 (May 2013)
|
||||
----------------------------------
|
||||
|
||||
* RTL (Right-To-Left Languages) support
|
||||
* Various bufixes
|
||||
* RTL (Right-To-Left Languages) support @valeriansaliou
|
||||
* Various bufixes @valeriansaliou
|
||||
|
||||
|
||||
Nemesis Alpha 7, v0.9.7 (April 2013)
|
||||
------------------------------------
|
||||
|
||||
* Fix overflow events in Mini
|
||||
* Fix user info display bug with formatted text
|
||||
* Jappix Me notification system
|
||||
* Update JSJaC
|
||||
* Update jQuery (v1.10.1)
|
||||
* Fix overflow events in Mini @valeriansaliou
|
||||
* Fix user info display bug with formatted text @valeriansaliou
|
||||
* Jappix Me notification system @valeriansaliou
|
||||
* Update JSJaC @valeriansaliou
|
||||
* Update jQuery (v1.10.1) @valeriansaliou
|
||||
|
||||
|
||||
Nemesis Alpha 6, v0.9.6 (April 2013)
|
||||
------------------------------------
|
||||
|
||||
* Fix login with accented usernames
|
||||
* WOFF Get API headers fixed
|
||||
* Better Get API URL generator
|
||||
* Fix broken Jappix Mini extraction script
|
||||
* Show when user joins/exits MUC in Jappix Mini
|
||||
* Fix login with accented usernames @valeriansaliou
|
||||
* WOFF Get API headers fixed @valeriansaliou
|
||||
* Better Get API URL generator @valeriansaliou
|
||||
* Fix broken Jappix Mini extraction script @valeriansaliou
|
||||
* Show when user joins/exits MUC in Jappix Mini @valeriansaliou
|
||||
|
||||
|
||||
Nemesis Alpha 5, v0.9.5 (March 2013)
|
||||
------------------------------------
|
||||
|
||||
* Jappix Mini enhancements
|
||||
* Fix Jappix over non-standard ports
|
||||
* Locale detector improved
|
||||
* Load more items on social channel scroll
|
||||
* Fix a lot of English base language typos
|
||||
* Support for XHTML microblog entries (Movim compatibility)
|
||||
* Show Jappix Desktop on tablets (not mobile anymore)
|
||||
* Option to disable Jappix Mini on mobile phones
|
||||
* Fix broken MUC bookmarks retrieval
|
||||
* Jappix Mini enhancements @valeriansaliou
|
||||
* Fix Jappix over non-standard ports @valeriansaliou
|
||||
* Locale detector improved @valeriansaliou
|
||||
* Load more items on social channel scroll @valeriansaliou
|
||||
* Fix a lot of English base language typos @valeriansaliou
|
||||
* Support for XHTML microblog entries (Movim compatibility) @valeriansaliou
|
||||
* Show Jappix Desktop on tablets (not mobile anymore) @valeriansaliou
|
||||
* Option to disable Jappix Mini on mobile phones @valeriansaliou
|
||||
* Fix broken MUC bookmarks retrieval @valeriansaliou
|
||||
|
||||
|
||||
Nemesis Alpha 4, v0.9.4 (March 2013)
|
||||
------------------------------------
|
||||
|
||||
* [SECURITY] Fix insafe HTML escaping
|
||||
* PHP 5.4 compatibility
|
||||
* Auto-populate microblog on connect
|
||||
* Register API support for Metronome XMPPd
|
||||
* Non-blocking PHP sessions
|
||||
* Permissive geoloc selector in microblog
|
||||
* Select priority more easily
|
||||
* Compliancy with Atom specification (social inbox)
|
||||
* Added project mirrors
|
||||
* [SECURITY] Fix insafe HTML escaping @valeriansaliou
|
||||
* PHP 5.4 compatibility @valeriansaliou
|
||||
* Auto-populate microblog on connect @valeriansaliou
|
||||
* Register API support for Metronome XMPPd @valeriansaliou
|
||||
* Non-blocking PHP sessions @valeriansaliou
|
||||
* Permissive geoloc selector in microblog @valeriansaliou
|
||||
* Select priority more easily @valeriansaliou
|
||||
* Compliancy with Atom specification (social inbox) @valeriansaliou
|
||||
* Added project mirrors @valeriansaliou
|
||||
|
||||
|
||||
Nemesis Alpha 3, v0.9.3 (February 2013)
|
||||
---------------------------------------
|
||||
|
||||
* [SECURITY] More randomness in CAPTCHA
|
||||
* Fix buggy roster filter with groups
|
||||
* Add Piwik tracking feature (configurable in manager)
|
||||
* Easy popup close by clicking away
|
||||
* Fix cropped uploaded pictures
|
||||
* Revert to old File Share API (which is far better)
|
||||
* Fixes broken translations (strange UTF-8 chars due to bugged Gettext compiler)
|
||||
* [SECURITY] More randomness in CAPTCHA @valeriansaliou
|
||||
* Fix buggy roster filter with groups @valeriansaliou
|
||||
* Add Piwik tracking feature (configurable in manager) @valeriansaliou
|
||||
* Easy popup close by clicking away @valeriansaliou
|
||||
* Fix cropped uploaded pictures @valeriansaliou
|
||||
* Revert to old File Share API (which is far better) @valeriansaliou
|
||||
* Fixes broken translations (strange UTF-8 chars due to bugged Gettext compiler) @valeriansaliou
|
||||
|
||||
|
||||
Nemesis Alpha 2, v0.9.2 (January 2013)
|
||||
--------------------------------------
|
||||
|
||||
* [SECURITY] Introduced the Register API (prevents register flood by spam bots)
|
||||
* Reworked Storage API
|
||||
* Jappix Mini code beautify
|
||||
* Lighter and Web-safe font files
|
||||
* Better error logging
|
||||
* Fix Openfire ping request
|
||||
* Typing notification in Jappix Mini
|
||||
* Support for WebKit notifications
|
||||
* Jappix Mini groupchat suggest
|
||||
* Enhanced Download API
|
||||
* Mini animated chat icon, much sexier
|
||||
* IE custom font compatibility
|
||||
* Legal changes
|
||||
* Update licensing with real names
|
||||
* [SECURITY] Introduce the Register API (prevents register flood by spam bots) @valeriansaliou
|
||||
* Reworked Storage API @valeriansaliou
|
||||
* Jappix Mini code beautify @valeriansaliou
|
||||
* Lighter and Web-safe font files @valeriansaliou
|
||||
* Better error logging @valeriansaliou
|
||||
* Fix Openfire ping request @valeriansaliou
|
||||
* Typing notification in Jappix Mini @valeriansaliou
|
||||
* Support for WebKit notifications @valeriansaliou
|
||||
* Jappix Mini groupchat suggest @valeriansaliou
|
||||
* Enhanced Download API @valeriansaliou
|
||||
* Mini animated chat icon, much sexier @valeriansaliou
|
||||
* IE custom font compatibility @valeriansaliou
|
||||
* Legal changes @valeriansaliou
|
||||
* Update licensing with real names @valeriansaliou
|
||||
|
||||
|
||||
Nemesis Alpha 1, v0.9.1 (2012)
|
||||
------------------------------
|
||||
|
||||
* Show an 'add to home' button on iOS devices
|
||||
* Ability to suspend statistics
|
||||
* Fix IE9 issue with clustering
|
||||
* Show profile button in user search results
|
||||
* Ability to change message font, font size and color
|
||||
* Fix choppy Jappix Mini status picker
|
||||
* Sounds for Safari & IE9
|
||||
* Enhance new file storage functions
|
||||
* No resize for textareas
|
||||
* Add a configurable legal disclaimer
|
||||
* Fix a loop bug on presence if no support for sessionStorage
|
||||
* Universal fonts
|
||||
* Add ability to configure the node owner name & website
|
||||
* HTTP authentication for LDAP
|
||||
* Better notification + comments management
|
||||
* Show an 'add to home' button on iOS devices @camaran
|
||||
* Ability to suspend statistics @valeriansaliou
|
||||
* Fix IE9 issue with clustering @valeriansaliou
|
||||
* Show profile button in user search results @valeriansaliou
|
||||
* Ability to change message font, font size and color @valeriansaliou
|
||||
* Fix choppy Jappix Mini status picker @valeriansaliou
|
||||
* Sounds for Safari & IE9 @valeriansaliou
|
||||
* Enhance new file storage functions @valeriansaliou
|
||||
* No resize for textareas @valeriansaliou
|
||||
* Add a configurable legal disclaimer @valeriansaliou
|
||||
* Fix a loop bug on presence if no support for sessionStorage @valeriansaliou
|
||||
* Universal fonts @valeriansaliou
|
||||
* Add ability to configure the node owner name & website @valeriansaliou
|
||||
* HTTP authentication for LDAP @valeriansaliou
|
||||
* Better notification + comments management @valeriansaliou
|
||||
|
||||
|
||||
Spaco, v0.9 (2011)
|
||||
------------------
|
||||
|
||||
* [SECURITY] Fix when sending files to a contact
|
||||
* Better Jappix Mini performances
|
||||
* Fix Jappix Mini display issues
|
||||
* Connection issue fixed with BOSH API
|
||||
* Open XMPP links when Jappix is ready
|
||||
* [SECURITY] Fix when sending files to a contact @valeriansaliou
|
||||
* Better Jappix Mini performances @valeriansaliou
|
||||
* Fix Jappix Mini display issues @valeriansaliou
|
||||
* Connection issue fixed with BOSH API @valeriansaliou
|
||||
* Open XMPP links when Jappix is ready @valeriansaliou
|
||||
|
||||
|
||||
Suno, v0.8 (2011)
|
||||
---------------------
|
||||
|
||||
* XEP-0066: Out of Band Data
|
||||
* Switch from OpenStreetMap to Google Maps for geolocation
|
||||
* XEP-0066: Out of Band Data @valeriansaliou
|
||||
* Switch from OpenStreetMap to Google Maps for geolocation @valeriansaliou
|
||||
|
||||
|
||||
Stelo, v0.7 (2011)
|
||||
------------------
|
||||
|
||||
* Lighter Jappix Mini
|
||||
* Welcome popup
|
||||
* Support for /me command in Jappix Mini
|
||||
* Fixes in social channel
|
||||
* Bigger BOSH poll interval (avoids some overactivity errors)
|
||||
* Compression disabled by default in Get API
|
||||
* Send chatstates in MUC
|
||||
* Social notification inbox
|
||||
* Lighter Jappix Mini @valeriansaliou
|
||||
* Welcome popup @valeriansaliou
|
||||
* Support for /me command in Jappix Mini @valeriansaliou
|
||||
* Fixes in social channel @valeriansaliou
|
||||
* Bigger BOSH poll interval (avoids some overactivity errors) @valeriansaliou
|
||||
* Compression disabled by default in Get API @valeriansaliou
|
||||
* Send chatstates in MUC @valeriansaliou
|
||||
* Social notification inbox @valeriansaliou
|
||||
|
||||
|
||||
Lumo, v0.6 (2011)
|
||||
-----------------
|
||||
|
||||
* Smoother Mini animation
|
||||
* Show avatars in social channel comments
|
||||
* Legacy mode for microblog comments
|
||||
* Microblog updated to comply with a new version of XEP-0277
|
||||
* Fix DNS SRV issue because of a 'route' attribute on BOSH initiation
|
||||
* Smoother Mini animation @valeriansaliou
|
||||
* Show avatars in social channel comments @valeriansaliou
|
||||
* Legacy mode for microblog comments @valeriansaliou
|
||||
* Microblog updated to comply with a new version of XEP-0277 @valeriansaliou
|
||||
* Fix DNS SRV issue because of a 'route' attribute on BOSH initiation @valeriansaliou
|
||||
|
||||
|
||||
Ribelo, v0.5 (2011)
|
||||
-------------------
|
||||
|
||||
* Add support for comments in microblog
|
||||
* Jappix Mini fixes and improvements
|
||||
* Add support for comments in microblog @valeriansaliou
|
||||
* Jappix Mini fixes and improvements @valeriansaliou
|
||||
|
||||
|
||||
Lupo, v0.4 (2011)
|
||||
-----------------
|
||||
|
||||
* Full IE5.5 compatibility for Jappix Mini
|
||||
* BOSH without cURL (if cURL unavailable)
|
||||
* Handle multiple microblog attached files
|
||||
* Microblog attached files thumbnails
|
||||
* BOM (Byte Order Mark) filtering for Get API
|
||||
* Autoplay for new YouTube HTML5 player
|
||||
* Support for privacy lists pushs
|
||||
* Roster-side privacy lists (make contact blocking/unblocking easy)
|
||||
* Better update checker
|
||||
* XEP-0144: Roster Item Exchange
|
||||
* Cross domain support for Internet Explorer and legacy browsers
|
||||
* Update jQuery (v1.4.4)
|
||||
* TZO fix (for negative timezones, e.g.: UTC-5)
|
||||
* Better language detection
|
||||
* Use HTML5 or Flash for YouTube embedded videos
|
||||
* Full IE5.5 compatibility for Jappix Mini @valeriansaliou
|
||||
* BOSH without cURL (if cURL unavailable) @valeriansaliou
|
||||
* Handle multiple microblog attached files @valeriansaliou
|
||||
* Microblog attached files thumbnails @valeriansaliou
|
||||
* BOM (Byte Order Mark) filtering for Get API @valeriansaliou
|
||||
* Autoplay for new YouTube HTML5 player @valeriansaliou
|
||||
* Support for privacy lists pushs @valeriansaliou
|
||||
* Roster-side privacy lists (make contact blocking/unblocking easy) @valeriansaliou
|
||||
* Better update checker @valeriansaliou
|
||||
* XEP-0144: Roster Item Exchange @valeriansaliou
|
||||
* Cross domain support for Internet Explorer and legacy browsers @valeriansaliou
|
||||
* Update jQuery (v1.4.4) @valeriansaliou
|
||||
* TZO fix (for negative timezones, e.g.: UTC-5) @valeriansaliou
|
||||
* Better language detection @valeriansaliou
|
||||
* Use HTML5 or Flash for YouTube embedded videos @valeriansaliou
|
||||
|
||||
|
||||
Prism, v0.3 (2011)
|
||||
------------------
|
||||
|
||||
* [SECURITY] Fix JS escape bug for quotes
|
||||
* [SECURITY] HTML-encode notification username
|
||||
* Introduction of Jappix Mini
|
||||
* Introduction of Jappix Manager
|
||||
* Introduction of Jappix Install
|
||||
* XEP-0050: Ad-Hoc Commands
|
||||
* XEP-0136: Message Archiving
|
||||
* Update Jappix logo
|
||||
* Declare application language to XMPP server
|
||||
* Add a buddy search tool
|
||||
* Support for old/legacy vCard server implementations
|
||||
* Inbox messages sorted by date
|
||||
* Better music search
|
||||
* Human-readable geolocation
|
||||
* Gateway show/hide
|
||||
* HTML5 forms
|
||||
* Better notification management
|
||||
* Unified chat design
|
||||
* Dynamic DOM load (better performances)
|
||||
* Jappix logo shown when connected (improves branding)
|
||||
* [SECURITY] Fix JS escape bug for quotes @valeriansaliou
|
||||
* [SECURITY] HTML-encode notification username @valeriansaliou
|
||||
* Introduction of Jappix Mini @valeriansaliou
|
||||
* Introduction of Jappix Manager @valeriansaliou
|
||||
* Introduction of Jappix Install @valeriansaliou
|
||||
* XEP-0050: Ad-Hoc Commands @valeriansaliou
|
||||
* XEP-0136: Message Archiving @valeriansaliou
|
||||
* Update Jappix logo @valeriansaliou
|
||||
* Declare application language to XMPP server @valeriansaliou
|
||||
* Add a buddy search tool @valeriansaliou
|
||||
* Support for old/legacy vCard server implementations @valeriansaliou
|
||||
* Inbox messages sorted by date @valeriansaliou
|
||||
* Better music search @valeriansaliou
|
||||
* Human-readable geolocation @valeriansaliou
|
||||
* Gateway show/hide @valeriansaliou
|
||||
* HTML5 forms @valeriansaliou
|
||||
* Better notification management @valeriansaliou
|
||||
* Unified chat design @valeriansaliou
|
||||
* Dynamic DOM load (better performances) @valeriansaliou
|
||||
* Jappix logo shown when connected (improves branding) @valeriansaliou
|
||||
|
||||
|
||||
Lidar, v0.2 (2010)
|
||||
------------------
|
||||
|
||||
* Introduction of Jappix Mobile
|
||||
* UI redesign (from grey to black and blue)
|
||||
* Social channel introduced (microblog)
|
||||
* Introduction of Jappix Mobile @valeriansaliou
|
||||
* UI redesign (from grey to black and blue) @valeriansaliou
|
||||
* Social channel introduced (microblog) @valeriansaliou
|
||||
|
||||
|
||||
Genesis, v0.1 (2010)
|
||||
--------------------
|
||||
|
||||
* Initial version, released after private beta
|
||||
* Introduction of Jappix Desktop
|
||||
* Basic chat, groupchat, roster and profile features
|
||||
* Basic UI
|
||||
* Initial version, released after private beta @valeriansaliou
|
||||
* Introduction of Jappix Desktop @valeriansaliou
|
||||
* Basic chat, groupchat, roster and profile features @valeriansaliou
|
||||
* Basic UI @valeriansaliou
|
||||
|
||||
|
||||
**For more information about what changed through time, check the changes made to our source code on GitHub: https://github.com/jappix/jappix/commits/master**
|
||||
|
|
1324
source/COPYING.md
1324
source/COPYING.md
File diff suppressed because it is too large
Load diff
|
@ -7,17 +7,17 @@ We would like to thanks the authors of these tools, coming from other projects:
|
|||
Projects
|
||||
--------
|
||||
|
||||
* Base64 https://github.com/dankogai/js-base64
|
||||
* DrawSVGChart http://codingteam.net/project/codingteam
|
||||
* idzXHR http://www.iadvize.com/plugin_strophe_xmpp.html
|
||||
* JSJaC http://blog.jwchat.org/jsjac/
|
||||
* JSMin http://github.com/rgrove/jsmin-php/
|
||||
* jQuery http://jquery.com/
|
||||
* jQuery Form http://jquery.malsup.com/form/
|
||||
* jQuery Timers http://plugins.jquery.com/project/timers
|
||||
* jXHR http://mulletxhr.com/
|
||||
* Mobile Detect https://github.com/serbanghita/Mobile-Detect
|
||||
* ParaType http://paratype.ru/
|
||||
* PHP-gettext https://launchpad.net/php-gettext
|
||||
* Silk icons http://www.famfamfam.com/lab/icons/silk/
|
||||
* Smileys http://www.gajim.org/
|
||||
* Base64 https://github.com/dankogai/js-base64
|
||||
* DrawSVGChart http://codingteam.net/project/codingteam
|
||||
* idzXHR http://www.iadvize.com/plugin_strophe_xmpp.html
|
||||
* JSJaC http://blog.jwchat.org/jsjac/
|
||||
* JSMin http://github.com/rgrove/jsmin-php/
|
||||
* jQuery http://jquery.com/
|
||||
* jQuery Form http://jquery.malsup.com/form/
|
||||
* jQuery Timers http://plugins.jquery.com/project/timers
|
||||
* jXHR http://mulletxhr.com/
|
||||
* Mobile Detect https://github.com/serbanghita/Mobile-Detect
|
||||
* ParaType http://paratype.ru/
|
||||
* PHP-gettext https://launchpad.net/php-gettext
|
||||
* Silk icons http://www.famfamfam.com/lab/icons/silk/
|
||||
* Smileys http://www.gajim.org/
|
||||
|
|
|
@ -1 +1 @@
|
|||
One [1.0.1]
|
||||
One [1.0.3]
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<jappix xmlns="jappix:file:get">
|
||||
<css>anonymous.css</css>
|
||||
<js>anonymous.js</js>
|
||||
<css>anonymous.css</css>
|
||||
<js>anonymous.js</js>
|
||||
</jappix>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<jappix xmlns="jappix:file:get">
|
||||
<css>fonts.css~main.css~images.css~board.css~home.css~others.css~tools.css~roster.css~myinfos.css~pageengine.css~channel.css~pageswitch.css~smileys.css~popup.css~vcard.css~options.css~favorites.css~discovery.css~directory.css~adhoc.css~privacy.css~inbox.css~mucadmin.css~integratebox.css~userinfos.css~search.css~welcome.css~me.css~rosterx.css~jingle.css</css>
|
||||
<js>origin.js~jxhr.js~datejs.js~jquery.js~jquery.ui.js~jquery.json.js~jquery.form.js~jquery.timers.js~jquery.placeholder.js~jquery.textrange.js~base64.js~jsjac.js~jsjac.jingle.js~system.js~constants.js~datastore.js~browser-detect.js~home.js~talk.js~popup.js~audio.js~board.js~bubble.js~chat.js~groupchat.js~smileys.js~oob.js~avatar.js~mucadmin.js~connection.js~dataform.js~discovery.js~directory.js~adhoc.js~privacy.js~errors.js~name.js~favorites.js~features.js~interface.js~xmpplinks.js~iq.js~message.js~chatstate.js~receipts.js~tooltip.js~filter.js~links.js~inbox.js~microblog.js~music.js~notification.js~httpreply.js~options.js~integratebox.js~pubsub.js~pep.js~presence.js~roster.js~jingle.js~storage.js~console.js~common.js~utilities.js~date.js~caps.js~vcard.js~userinfos.js~search.js~autocompletion.js~welcome.js~me.js~rosterx.js~mam.js~carbons.js</js>
|
||||
<css>fonts.css~main.css~images.css~board.css~home.css~others.css~tools.css~roster.css~myinfos.css~pageengine.css~channel.css~pageswitch.css~smileys.css~popup.css~vcard.css~options.css~favorites.css~discovery.css~directory.css~adhoc.css~privacy.css~inbox.css~mucadmin.css~integratebox.css~userinfos.css~search.css~welcome.css~me.css~rosterx.css~jingle.css</css>
|
||||
<js>origin.js~jxhr.js~datejs.js~jquery.js~jquery.ui.js~jquery.json.js~jquery.form.js~jquery.timers.js~jquery.placeholder.js~jquery.textrange.js~base64.js~jsjac.js~jsjac.jingle.js~system.js~constants.js~datastore.js~browser-detect.js~home.js~talk.js~popup.js~audio.js~board.js~bubble.js~chat.js~groupchat.js~smileys.js~oob.js~avatar.js~mucadmin.js~connection.js~dataform.js~discovery.js~directory.js~adhoc.js~privacy.js~errors.js~name.js~favorites.js~features.js~interface.js~xmpplinks.js~iq.js~message.js~chatstate.js~receipts.js~tooltip.js~filter.js~links.js~inbox.js~microblog.js~music.js~notification.js~httpreply.js~options.js~integratebox.js~pubsub.js~pep.js~presence.js~roster.js~jingle.js~storage.js~console.js~common.js~utilities.js~date.js~caps.js~vcard.js~userinfos.js~search.js~autocompletion.js~welcome.js~me.js~rosterx.js~mam.js~carbons.js</js>
|
||||
</jappix>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<jappix xmlns="jappix:file:get">
|
||||
<js>httpauth.js</js>
|
||||
<js>httpauth.js</js>
|
||||
</jappix>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<jappix xmlns="jappix:file:get">
|
||||
<css>main.css~install.css~images.css</css>
|
||||
<js></js>
|
||||
<css>main.css~install.css~images.css</css>
|
||||
<js></js>
|
||||
</jappix>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<jappix xmlns="jappix:file:get">
|
||||
<css>main.css~manager.css~images.css</css>
|
||||
<js></js>
|
||||
<css>main.css~manager.css~images.css</css>
|
||||
<js></js>
|
||||
</jappix>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<jappix xmlns="jappix:file:get">
|
||||
<css>mini.css</css>
|
||||
<js>origin.js~jxhr.js~base64.js~jsjac.js~jquery.json.js~jquery.timers.js~jquery.scrollto.js~system.js~constants.js~datastore.js~browser-detect.js~console.js~common.js~date.js~links.js~mini.js</js>
|
||||
<css>mini.css</css>
|
||||
<js>origin.js~jxhr.js~base64.js~jsjac.js~jquery.json.js~jquery.timers.js~jquery.scrollto.js~system.js~constants.js~datastore.js~browser-detect.js~console.js~common.js~date.js~links.js~mini.js</js>
|
||||
</jappix>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<jappix xmlns="jappix:file:get">
|
||||
<css>mobile.css~ios.css~images.css</css>
|
||||
<js>origin.js~jxhr.js~base64.js~jsjac.js~system.js~constants.js~console.js~browser-detect.js~links.js~mobile.js~ios.js</js>
|
||||
<css>mobile.css~ios.css~images.css</css>
|
||||
<js>origin.js~jxhr.js~base64.js~jsjac.js~system.js~constants.js~console.js~browser-detect.js~links.js~mobile.js~ios.js</js>
|
||||
</jappix>
|
||||
|
|
|
@ -20,7 +20,7 @@ var Anonymous = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Connected to an anonymous session
|
||||
* @public
|
||||
* @return {undefined}
|
||||
|
|
|
@ -46,7 +46,7 @@ var Audio = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Plays the given sound ID
|
||||
* @public
|
||||
* @param {string} name
|
||||
|
|
|
@ -21,23 +21,24 @@ var Autocompletion = (function () {
|
|||
|
||||
|
||||
/**
|
||||
* Sort an array with insensitivity to the case
|
||||
* Sort an autocompletion result array with insensitivity to the case,
|
||||
* using the 1st elements (a[0] and b[0]) to process comparison
|
||||
* @public
|
||||
* @param {string} a
|
||||
* @param {string} b
|
||||
* @param {array} a
|
||||
* @param {array} b
|
||||
* @return {undefined}
|
||||
*/
|
||||
self.caseInsensitiveSort = function(a, b) {
|
||||
|
||||
try {
|
||||
// Put the two strings into lower case
|
||||
a = a.toLowerCase();
|
||||
b = b.toLowerCase();
|
||||
var sA = a[0].toLowerCase();
|
||||
var sB = b[0].toLowerCase();
|
||||
|
||||
// Process the sort
|
||||
if(a > b)
|
||||
if(sA > sB)
|
||||
return 1;
|
||||
if(a < b)
|
||||
if(sA < sB)
|
||||
return -1;
|
||||
} catch(e) {
|
||||
Console.error('Autocompletion.caseInsensitiveSort', e);
|
||||
|
@ -47,11 +48,52 @@ var Autocompletion = (function () {
|
|||
|
||||
|
||||
/**
|
||||
* Creates an array with the autocompletion results
|
||||
* @public
|
||||
* Split a query into its subqueries ready to be used in autocompletion
|
||||
* The function return an array containing two others : the first with subqueries
|
||||
* and the second with remaining parts
|
||||
* For example, if query is "A B C", the subqueries are ["C", "B C", "A B C"] and
|
||||
* the remaining parts are ["A B ", "A ", ""]
|
||||
* @param {string} query
|
||||
* @return {Array}
|
||||
*/
|
||||
self.getSubQueries = function(query) {
|
||||
|
||||
var subqueries = [];
|
||||
var remnants = [];
|
||||
|
||||
var queryLastCharPos = query.length - 1;
|
||||
var spaceCounter = 0;
|
||||
for (var i=queryLastCharPos; i>=0; i--) {
|
||||
// Search from the end of the query
|
||||
var iChar = query.charAt(i);
|
||||
if (spaceCounter === 0 && iChar.search(/\s/) === 0) {
|
||||
// the first "local" space was found
|
||||
// add the subquery and its remnant to results
|
||||
subqueries.push(query.slice(i+1));
|
||||
remnants.push(query.slice(0, i+1));
|
||||
spaceCounter++;
|
||||
} else {
|
||||
spaceCounter = 0;
|
||||
}
|
||||
}
|
||||
if (spaceCounter === 0) {
|
||||
// If the first char of the query is not a space, add the full query to results
|
||||
subqueries.push(query);
|
||||
remnants.push("");
|
||||
}
|
||||
|
||||
return [subqueries, remnants];
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Creates an array with the autocompletion results. An autocompletion result
|
||||
* is an array containing the result himself and the rank of the query which
|
||||
* matched this answer
|
||||
* @public
|
||||
* @param {Array} query
|
||||
* @param {string} id
|
||||
* @return {object}
|
||||
* @return {Array}
|
||||
*/
|
||||
self.process = function(query, id) {
|
||||
|
||||
|
@ -60,16 +102,23 @@ var Autocompletion = (function () {
|
|||
try {
|
||||
// Replace forbidden characters in regex
|
||||
query = Common.escapeRegex(query);
|
||||
|
||||
// Build an array of regex to use
|
||||
var queryRegExp = [];
|
||||
for (i = 0; i<query.length; i++) {
|
||||
if (query[i] !== null) {
|
||||
queryRegExp.push(new RegExp('(^)' + query[i], 'gi'));
|
||||
}
|
||||
}
|
||||
// Search in the roster
|
||||
$('#' + id + ' .user').each(function() {
|
||||
var nick = $(this).find('.name').text();
|
||||
var regex = new RegExp('(^)' + query, 'gi');
|
||||
|
||||
if(nick.match(regex))
|
||||
results.push(nick);
|
||||
for (i = 0; i<queryRegExp.length; i++) {
|
||||
var regex = queryRegExp[i];
|
||||
if(nick.match(regex)) {
|
||||
results.push([nick, i]);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Sort the array
|
||||
results = results.sort(self.caseInsensitiveSort);
|
||||
} catch(e) {
|
||||
|
@ -106,7 +155,7 @@ var Autocompletion = (function () {
|
|||
*/
|
||||
self.create = function(hash) {
|
||||
|
||||
try {
|
||||
try {
|
||||
// Initialize
|
||||
var vSelector = $('#' + hash + ' .message-area');
|
||||
var value = vSelector.val();
|
||||
|
@ -117,10 +166,13 @@ var Autocompletion = (function () {
|
|||
|
||||
var query = vSelector.attr('data-autocompletion-query');
|
||||
|
||||
// The autocompletion has not been yet launched
|
||||
if(query === undefined) {
|
||||
query = value;
|
||||
vSelector.attr('data-autocompletion-query', query);
|
||||
// The autocompletion has not been yet launched
|
||||
query = self.getSubQueries(value);
|
||||
vSelector.attr('data-autocompletion-query', JSON.stringify(query));
|
||||
} else {
|
||||
// The autocompletion has already stored a query
|
||||
query = JSON.parse(query);
|
||||
}
|
||||
|
||||
// Get the pointer
|
||||
|
@ -131,7 +183,11 @@ var Autocompletion = (function () {
|
|||
i = parseInt(pointer);
|
||||
|
||||
// We get the nickname
|
||||
var nick = self.process(query, hash)[i];
|
||||
var nickResult = self.process(query[0], hash)[i];
|
||||
var nick;
|
||||
if (nickResult !== undefined) {
|
||||
nick = nickResult[0];
|
||||
}
|
||||
|
||||
// Shit, this is my nick!
|
||||
if((nick !== undefined) && (nick.toLowerCase() == Name.getMUCNick(hash).toLowerCase())) {
|
||||
|
@ -139,14 +195,18 @@ var Autocompletion = (function () {
|
|||
i++;
|
||||
|
||||
// Get the next nick
|
||||
nick = self.process(query, hash)[i];
|
||||
nickResult = self.process(query[0], hash)[i];
|
||||
if (nickResult !== undefined) {
|
||||
nick = nickResult[0];
|
||||
}
|
||||
}
|
||||
|
||||
// We quote the nick
|
||||
if(nick !== undefined) {
|
||||
if((nickResult !== undefined) && (nick !== undefined)) {
|
||||
// Increment
|
||||
i++;
|
||||
Utils.quoteMyNick(hash, nick);
|
||||
var message = query[1][nickResult[1]];
|
||||
Utils.quoteMyNick(hash, nick, message);
|
||||
|
||||
// Put a pointer
|
||||
vSelector.attr('data-autocompletion-pointer', i);
|
||||
|
|
|
@ -20,11 +20,11 @@ var Avatar = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/* Variables */
|
||||
self.pending = [];
|
||||
/* Variables */
|
||||
self.pending = [];
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Requests the avatar of a given user
|
||||
* @public
|
||||
* @param {string} xid
|
||||
|
|
|
@ -20,7 +20,7 @@ var Board = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Creates a board panel
|
||||
* @public
|
||||
* @param {string} type
|
||||
|
@ -202,7 +202,7 @@ var Board = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Closes a given board
|
||||
* @public
|
||||
* @param {string} board
|
||||
|
@ -235,8 +235,9 @@ var Board = (function () {
|
|||
|
||||
try {
|
||||
// Cannot process?
|
||||
if(Common.isFocused() || !content || !window.webkitNotifications)
|
||||
if(Common.isFocused() || !content || !(window.webkitNotifications || window.Notification)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Default icon?
|
||||
if(!icon) {
|
||||
|
@ -256,49 +257,77 @@ var Board = (function () {
|
|||
}
|
||||
|
||||
// Default title?
|
||||
if(!title)
|
||||
if(!title) {
|
||||
title = Common._e("New event!");
|
||||
}
|
||||
|
||||
// Click callback
|
||||
var cb_click_fn = function() {
|
||||
// Click action?
|
||||
switch(type) {
|
||||
case 'chat':
|
||||
Interface.switchChan(hex_md5(xid));
|
||||
break;
|
||||
|
||||
case 'groupchat':
|
||||
Interface.switchChan(hex_md5(Common.bareXID(xid)));
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
// Focus on msg-me
|
||||
window.focus();
|
||||
|
||||
// Remove notification
|
||||
this.cancel();
|
||||
};
|
||||
|
||||
// Check for notification permission
|
||||
if(window.webkitNotifications.checkPermission() === 0) {
|
||||
// Create notification
|
||||
var notification = window.webkitNotifications.createNotification(icon, title, content);
|
||||
try {
|
||||
if(Notification.permission == 'granted' || Notification.permission === undefined) {
|
||||
var notification = new Notification(title, {
|
||||
dir: 'auto',
|
||||
lang: '',
|
||||
body: content,
|
||||
tag: type,
|
||||
icon: icon
|
||||
});
|
||||
|
||||
notification.onclick = cb_click_fn;
|
||||
|
||||
// Auto-hide after a while
|
||||
notification.ondisplay = function(event) {
|
||||
setTimeout(function() {
|
||||
event.currentTarget.cancel();
|
||||
notification.close();
|
||||
}, 10000);
|
||||
};
|
||||
|
||||
// Click event
|
||||
notification.onclick = function() {
|
||||
// Click action?
|
||||
switch(type) {
|
||||
case 'chat':
|
||||
Interface.switchChan(hex_md5(xid));
|
||||
break;
|
||||
|
||||
case 'groupchat':
|
||||
Interface.switchChan(hex_md5(Common.bareXID(xid)));
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
if(notification.permission == 'granted') {
|
||||
return notification;
|
||||
}
|
||||
}
|
||||
} catch(_e) {
|
||||
if(window.webkitNotifications.checkPermission() === 0) {
|
||||
// Create notification
|
||||
var notification = window.webkitNotifications.createNotification(icon, title, content);
|
||||
|
||||
// Focus on msg-me
|
||||
window.focus();
|
||||
// Auto-hide after a while
|
||||
notification.ondisplay = function(event) {
|
||||
setTimeout(function() {
|
||||
event.currentTarget.cancel();
|
||||
}, 10000);
|
||||
};
|
||||
|
||||
// Remove notification
|
||||
this.cancel();
|
||||
};
|
||||
// Click event
|
||||
notification.onclick = cb_click_fn;
|
||||
|
||||
// Show notification
|
||||
notification.show();
|
||||
// Show notification
|
||||
notification.show();
|
||||
|
||||
return notification;
|
||||
return notification;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
} catch(e) {
|
||||
Console.error('Board.quick', e);
|
||||
}
|
||||
|
@ -314,11 +343,21 @@ var Board = (function () {
|
|||
self.quickPermission = function() {
|
||||
|
||||
try {
|
||||
if(!window.webkitNotifications || (window.webkitNotifications.checkPermission() === 0))
|
||||
return;
|
||||
try {
|
||||
// W3C Notification API (still a draft!)
|
||||
if(Notification.permission !== 'granted') {
|
||||
// Ask for permission
|
||||
Notification.requestPermission();
|
||||
}
|
||||
} catch (_e) {
|
||||
// WebKit Notification API (fallback)
|
||||
if(!window.webkitNotifications || (window.webkitNotifications.checkPermission() === 0)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Ask for permission
|
||||
window.webkitNotifications.requestPermission();
|
||||
// Ask for permission
|
||||
window.webkitNotifications.requestPermission();
|
||||
}
|
||||
} catch(e) {
|
||||
Console.error('Board.quickPermission', e);
|
||||
}
|
||||
|
|
|
@ -4,122 +4,122 @@
|
|||
*/
|
||||
|
||||
var BrowserDetect = {
|
||||
init: function () {
|
||||
this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
|
||||
this.version = this.searchVersion(navigator.userAgent)
|
||||
|| this.searchVersion(navigator.appVersion)
|
||||
|| "an unknown version";
|
||||
this.OS = this.searchString(this.dataOS) || "an unknown OS";
|
||||
},
|
||||
init: function () {
|
||||
this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
|
||||
this.version = this.searchVersion(navigator.userAgent)
|
||||
|| this.searchVersion(navigator.appVersion)
|
||||
|| "an unknown version";
|
||||
this.OS = this.searchString(this.dataOS) || "an unknown OS";
|
||||
},
|
||||
|
||||
searchString: function (data) {
|
||||
for (var i=0;i<data.length;i++) {
|
||||
var dataString = data[i].string;
|
||||
var dataProp = data[i].prop;
|
||||
this.versionSearchString = data[i].versionSearch || data[i].identity;
|
||||
if (dataString) {
|
||||
if (dataString.indexOf(data[i].subString) != -1)
|
||||
return data[i].identity;
|
||||
}
|
||||
else if (dataProp)
|
||||
return data[i].identity;
|
||||
}
|
||||
},
|
||||
searchString: function (data) {
|
||||
for (var i=0;i<data.length;i++) {
|
||||
var dataString = data[i].string;
|
||||
var dataProp = data[i].prop;
|
||||
this.versionSearchString = data[i].versionSearch || data[i].identity;
|
||||
if (dataString) {
|
||||
if (dataString.indexOf(data[i].subString) != -1)
|
||||
return data[i].identity;
|
||||
}
|
||||
else if (dataProp)
|
||||
return data[i].identity;
|
||||
}
|
||||
},
|
||||
|
||||
searchVersion: function (dataString) {
|
||||
var index = dataString.indexOf(this.versionSearchString);
|
||||
if (index == -1) return;
|
||||
return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
|
||||
},
|
||||
searchVersion: function (dataString) {
|
||||
var index = dataString.indexOf(this.versionSearchString);
|
||||
if (index == -1) return;
|
||||
return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
|
||||
},
|
||||
|
||||
dataBrowser: [
|
||||
{
|
||||
string: navigator.userAgent,
|
||||
subString: "Chrome",
|
||||
identity: "Chrome"
|
||||
},
|
||||
{ string: navigator.userAgent,
|
||||
subString: "OmniWeb",
|
||||
versionSearch: "OmniWeb/",
|
||||
identity: "OmniWeb"
|
||||
},
|
||||
{
|
||||
string: navigator.vendor,
|
||||
subString: "Apple",
|
||||
identity: "Safari",
|
||||
versionSearch: "Version"
|
||||
},
|
||||
{
|
||||
prop: window.opera,
|
||||
identity: "Opera"
|
||||
},
|
||||
{
|
||||
string: navigator.vendor,
|
||||
subString: "iCab",
|
||||
identity: "iCab"
|
||||
},
|
||||
{
|
||||
string: navigator.vendor,
|
||||
subString: "KDE",
|
||||
identity: "Konqueror"
|
||||
},
|
||||
{
|
||||
string: navigator.userAgent,
|
||||
subString: "Firefox",
|
||||
identity: "Firefox"
|
||||
},
|
||||
{
|
||||
string: navigator.vendor,
|
||||
subString: "Camino",
|
||||
identity: "Camino"
|
||||
},
|
||||
{ // for newer Netscapes (6+)
|
||||
string: navigator.userAgent,
|
||||
subString: "Netscape",
|
||||
identity: "Netscape"
|
||||
},
|
||||
{
|
||||
string: navigator.userAgent,
|
||||
subString: "MSIE",
|
||||
identity: "Explorer",
|
||||
versionSearch: "MSIE"
|
||||
},
|
||||
{
|
||||
string: navigator.userAgent,
|
||||
subString: "Gecko",
|
||||
identity: "Mozilla",
|
||||
versionSearch: "rv"
|
||||
},
|
||||
{ // for older Netscapes (4-)
|
||||
string: navigator.userAgent,
|
||||
subString: "Mozilla",
|
||||
identity: "Netscape",
|
||||
versionSearch: "Mozilla"
|
||||
}
|
||||
],
|
||||
dataBrowser: [
|
||||
{
|
||||
string: navigator.userAgent,
|
||||
subString: "Chrome",
|
||||
identity: "Chrome"
|
||||
},
|
||||
{ string: navigator.userAgent,
|
||||
subString: "OmniWeb",
|
||||
versionSearch: "OmniWeb/",
|
||||
identity: "OmniWeb"
|
||||
},
|
||||
{
|
||||
string: navigator.vendor,
|
||||
subString: "Apple",
|
||||
identity: "Safari",
|
||||
versionSearch: "Version"
|
||||
},
|
||||
{
|
||||
prop: window.opera,
|
||||
identity: "Opera"
|
||||
},
|
||||
{
|
||||
string: navigator.vendor,
|
||||
subString: "iCab",
|
||||
identity: "iCab"
|
||||
},
|
||||
{
|
||||
string: navigator.vendor,
|
||||
subString: "KDE",
|
||||
identity: "Konqueror"
|
||||
},
|
||||
{
|
||||
string: navigator.userAgent,
|
||||
subString: "Firefox",
|
||||
identity: "Firefox"
|
||||
},
|
||||
{
|
||||
string: navigator.vendor,
|
||||
subString: "Camino",
|
||||
identity: "Camino"
|
||||
},
|
||||
{ // for newer Netscapes (6+)
|
||||
string: navigator.userAgent,
|
||||
subString: "Netscape",
|
||||
identity: "Netscape"
|
||||
},
|
||||
{
|
||||
string: navigator.userAgent,
|
||||
subString: "MSIE",
|
||||
identity: "Explorer",
|
||||
versionSearch: "MSIE"
|
||||
},
|
||||
{
|
||||
string: navigator.userAgent,
|
||||
subString: "Gecko",
|
||||
identity: "Mozilla",
|
||||
versionSearch: "rv"
|
||||
},
|
||||
{ // for older Netscapes (4-)
|
||||
string: navigator.userAgent,
|
||||
subString: "Mozilla",
|
||||
identity: "Netscape",
|
||||
versionSearch: "Mozilla"
|
||||
}
|
||||
],
|
||||
|
||||
dataOS : [
|
||||
{
|
||||
string: navigator.platform,
|
||||
subString: "Win",
|
||||
identity: "Windows"
|
||||
},
|
||||
{
|
||||
string: navigator.platform,
|
||||
subString: "Mac",
|
||||
identity: "Mac"
|
||||
},
|
||||
{
|
||||
string: navigator.userAgent,
|
||||
subString: "iPhone",
|
||||
identity: "iPhone/iPod"
|
||||
},
|
||||
{
|
||||
string: navigator.platform,
|
||||
subString: "Linux",
|
||||
identity: "Linux"
|
||||
}
|
||||
]
|
||||
dataOS : [
|
||||
{
|
||||
string: navigator.platform,
|
||||
subString: "Win",
|
||||
identity: "Windows"
|
||||
},
|
||||
{
|
||||
string: navigator.platform,
|
||||
subString: "Mac",
|
||||
identity: "Mac"
|
||||
},
|
||||
{
|
||||
string: navigator.userAgent,
|
||||
subString: "iPhone",
|
||||
identity: "iPhone/iPod"
|
||||
},
|
||||
{
|
||||
string: navigator.platform,
|
||||
subString: "Linux",
|
||||
identity: "Linux"
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
BrowserDetect.init();
|
||||
|
|
|
@ -20,7 +20,7 @@ var Bubble = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Closes all the opened bubbles
|
||||
* @public
|
||||
* @return {boolean}
|
||||
|
|
|
@ -39,7 +39,7 @@ var Caps = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Returns an array of the Jappix disco#infos
|
||||
* @public
|
||||
* @return {object}
|
||||
|
@ -468,7 +468,7 @@ var Caps = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Generates the Jappix CAPS hash
|
||||
* @public
|
||||
* @return {string}
|
||||
|
|
|
@ -20,7 +20,7 @@ var Chat = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Correctly opens a new chat
|
||||
* @public
|
||||
* @param {string} xid
|
||||
|
|
|
@ -20,7 +20,7 @@ var ChatState = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Sends a given chatstate to a given entity
|
||||
* @public
|
||||
* @param {string} state
|
||||
|
|
|
@ -20,7 +20,7 @@ var Common = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Checks if an element exists in the DOM
|
||||
* @public
|
||||
* @param {string} path
|
||||
|
@ -162,7 +162,7 @@ var Common = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Replaces '%s' to a given value for a translated string
|
||||
* @public
|
||||
* @param {string} string
|
||||
|
@ -298,7 +298,7 @@ var Common = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* nodepreps an XMPP node
|
||||
* @public
|
||||
* @param {string} node
|
||||
|
@ -360,8 +360,9 @@ var Common = (function () {
|
|||
xid = self.cutResource(xid);
|
||||
|
||||
// Launch nodeprep
|
||||
if(xid.indexOf('@') != -1)
|
||||
if(xid.indexOf('@') != -1) {
|
||||
xid = self.nodeprep(self.getXIDNick(xid)) + '@' + self.getXIDHost(xid);
|
||||
}
|
||||
|
||||
return xid;
|
||||
} catch(e) {
|
||||
|
@ -417,7 +418,7 @@ var Common = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Gets the host from a XID
|
||||
* @public
|
||||
* @param {string} aXID
|
||||
|
@ -482,7 +483,7 @@ var Common = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Gets the full XID of the user
|
||||
* @public
|
||||
* @return {string}
|
||||
|
@ -572,8 +573,9 @@ var Common = (function () {
|
|||
var from = stanza.getFrom();
|
||||
|
||||
// No from, we assume this is our XID
|
||||
if(!from)
|
||||
if(!from) {
|
||||
from = self.getXID();
|
||||
}
|
||||
|
||||
return from;
|
||||
} catch(e) {
|
||||
|
@ -583,6 +585,29 @@ var Common = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
* Returns whether the stanza has been really sent from our own server or entity
|
||||
* @public
|
||||
* @param {object} stanza
|
||||
* @return {string}
|
||||
*/
|
||||
self.isSafeStanza = function(stanza) {
|
||||
|
||||
var is_safe = false;
|
||||
|
||||
try {
|
||||
var from = self.getStanzaFrom(stanza);
|
||||
|
||||
is_safe = (!from || from == con.domain || from == self.getXID()) && true;
|
||||
} catch(e) {
|
||||
Console.error('Common.isSafeStanza', e);
|
||||
} finally {
|
||||
return is_safe;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Adds a zero to a date when needed
|
||||
* @public
|
||||
|
@ -610,17 +635,31 @@ var Common = (function () {
|
|||
|
||||
|
||||
/**
|
||||
* Escapes a string for a regex usage
|
||||
* Escapes a string (or an array of string) for a regex usage. In case of an
|
||||
* array, escapes are not done "in place", keeping the query unmodified
|
||||
* @public
|
||||
* @param {string} query
|
||||
* @return {string}
|
||||
* @param {object} query
|
||||
* @return {object}
|
||||
*/
|
||||
self.escapeRegex = function(query) {
|
||||
|
||||
try {
|
||||
return query.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
|
||||
} catch(e) {
|
||||
Console.error('Common.escapeRegex', e);
|
||||
if (query instanceof Array) {
|
||||
var result = new Array(query.length);
|
||||
for(i=0; i<query.length; i++) {
|
||||
try {
|
||||
result[i] = Common.escapeRegex(query[i]);
|
||||
} catch(e) {
|
||||
Console.error('Common.escapeRegex', e);
|
||||
result[i] = null;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
} else {
|
||||
try {
|
||||
return query.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
|
||||
} catch(e) {
|
||||
Console.error('Common.escapeRegex', e);
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
@ -663,7 +702,7 @@ var Common = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Converts a XML document to a string
|
||||
* @public
|
||||
* @param {object} xmlData
|
||||
|
|
|
@ -29,7 +29,7 @@ var Connection = (function () {
|
|||
self.resume = false;
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Does the user login
|
||||
* @public
|
||||
* @param {string} lNick
|
||||
|
@ -363,7 +363,7 @@ var Connection = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Triggers the connected state
|
||||
* @public
|
||||
* @return {undefined}
|
||||
|
@ -513,7 +513,7 @@ var Connection = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Quits a session
|
||||
* @public
|
||||
* @param {type} name
|
||||
|
@ -710,7 +710,7 @@ var Connection = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Resets the connection markers
|
||||
* @public
|
||||
* @return {undefined}
|
||||
|
|
|
@ -178,54 +178,54 @@ var BOSH_SAME_ORIGIN = false;
|
|||
|
||||
// XMPP error stanzas
|
||||
function STANZA_ERROR(code, type, cond) {
|
||||
if(window == this) {
|
||||
return new STANZA_ERROR(code, type, cond);
|
||||
}
|
||||
if(window == this) {
|
||||
return new STANZA_ERROR(code, type, cond);
|
||||
}
|
||||
|
||||
this.code = code;
|
||||
this.type = type;
|
||||
this.cond = cond;
|
||||
this.code = code;
|
||||
this.type = type;
|
||||
this.cond = cond;
|
||||
}
|
||||
|
||||
var ERR_BAD_REQUEST =
|
||||
STANZA_ERROR('400', 'modify', 'bad-request');
|
||||
STANZA_ERROR('400', 'modify', 'bad-request');
|
||||
var ERR_CONFLICT =
|
||||
STANZA_ERROR('409', 'cancel', 'conflict');
|
||||
STANZA_ERROR('409', 'cancel', 'conflict');
|
||||
var ERR_FEATURE_NOT_IMPLEMENTED =
|
||||
STANZA_ERROR('501', 'cancel', 'feature-not-implemented');
|
||||
STANZA_ERROR('501', 'cancel', 'feature-not-implemented');
|
||||
var ERR_FORBIDDEN =
|
||||
STANZA_ERROR('403', 'auth', 'forbidden');
|
||||
STANZA_ERROR('403', 'auth', 'forbidden');
|
||||
var ERR_GONE =
|
||||
STANZA_ERROR('302', 'modify', 'gone');
|
||||
STANZA_ERROR('302', 'modify', 'gone');
|
||||
var ERR_INTERNAL_SERVER_ERROR =
|
||||
STANZA_ERROR('500', 'wait', 'internal-server-error');
|
||||
STANZA_ERROR('500', 'wait', 'internal-server-error');
|
||||
var ERR_ITEM_NOT_FOUND =
|
||||
STANZA_ERROR('404', 'cancel', 'item-not-found');
|
||||
STANZA_ERROR('404', 'cancel', 'item-not-found');
|
||||
var ERR_JID_MALFORMED =
|
||||
STANZA_ERROR('400', 'modify', 'jid-malformed');
|
||||
STANZA_ERROR('400', 'modify', 'jid-malformed');
|
||||
var ERR_NOT_ACCEPTABLE =
|
||||
STANZA_ERROR('406', 'modify', 'not-acceptable');
|
||||
STANZA_ERROR('406', 'modify', 'not-acceptable');
|
||||
var ERR_NOT_ALLOWED =
|
||||
STANZA_ERROR('405', 'cancel', 'not-allowed');
|
||||
STANZA_ERROR('405', 'cancel', 'not-allowed');
|
||||
var ERR_NOT_AUTHORIZED =
|
||||
STANZA_ERROR('401', 'auth', 'not-authorized');
|
||||
STANZA_ERROR('401', 'auth', 'not-authorized');
|
||||
var ERR_PAYMENT_REQUIRED =
|
||||
STANZA_ERROR('402', 'auth', 'payment-required');
|
||||
STANZA_ERROR('402', 'auth', 'payment-required');
|
||||
var ERR_RECIPIENT_UNAVAILABLE =
|
||||
STANZA_ERROR('404', 'wait', 'recipient-unavailable');
|
||||
STANZA_ERROR('404', 'wait', 'recipient-unavailable');
|
||||
var ERR_REDIRECT =
|
||||
STANZA_ERROR('302', 'modify', 'redirect');
|
||||
STANZA_ERROR('302', 'modify', 'redirect');
|
||||
var ERR_REGISTRATION_REQUIRED =
|
||||
STANZA_ERROR('407', 'auth', 'registration-required');
|
||||
STANZA_ERROR('407', 'auth', 'registration-required');
|
||||
var ERR_REMOTE_SERVER_NOT_FOUND =
|
||||
STANZA_ERROR('404', 'cancel', 'remote-server-not-found');
|
||||
STANZA_ERROR('404', 'cancel', 'remote-server-not-found');
|
||||
var ERR_REMOTE_SERVER_TIMEOUT =
|
||||
STANZA_ERROR('504', 'wait', 'remote-server-timeout');
|
||||
STANZA_ERROR('504', 'wait', 'remote-server-timeout');
|
||||
var ERR_RESOURCE_CONSTRAINT =
|
||||
STANZA_ERROR('500', 'wait', 'resource-constraint');
|
||||
STANZA_ERROR('500', 'wait', 'resource-constraint');
|
||||
var ERR_SERVICE_UNAVAILABLE =
|
||||
STANZA_ERROR('503', 'cancel', 'service-unavailable');
|
||||
STANZA_ERROR('503', 'cancel', 'service-unavailable');
|
||||
var ERR_SUBSCRIPTION_REQUIRED =
|
||||
STANZA_ERROR('407', 'auth', 'subscription-required');
|
||||
STANZA_ERROR('407', 'auth', 'subscription-required');
|
||||
var ERR_UNEXPECTED_REQUEST =
|
||||
STANZA_ERROR('400', 'wait', 'unexpected-request');
|
||||
STANZA_ERROR('400', 'wait', 'unexpected-request');
|
||||
|
|
|
@ -20,7 +20,7 @@ var DataForm = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Gets the defined dataform elements
|
||||
* @public
|
||||
* @param {string} host
|
||||
|
@ -384,7 +384,7 @@ var DataForm = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Handles the command dataform
|
||||
* @public
|
||||
* @param {object} iq
|
||||
|
@ -943,7 +943,7 @@ var DataForm = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Gets the dataform type
|
||||
* @public
|
||||
* @param {string} host
|
||||
|
|
|
@ -25,7 +25,7 @@ var DataStore = (function () {
|
|||
self._persistent_emulated = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Common: storage adapter
|
||||
* @public
|
||||
* @param {object} storage_native
|
||||
|
@ -234,7 +234,7 @@ var DataStore = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Temporary: used to check a database entry exists
|
||||
* @public
|
||||
* @param {string} dbID
|
||||
|
@ -378,7 +378,7 @@ var DataStore = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Persistent: used to remove a database entry
|
||||
* @public
|
||||
* @param {string} dbID
|
||||
|
|
|
@ -25,7 +25,7 @@ var DateUtils = (function () {
|
|||
self.presence_last_activity = 0;
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Gets a stamp from a date
|
||||
* @public
|
||||
* @param {Date} date
|
||||
|
@ -115,7 +115,7 @@ var DateUtils = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Generates the time for XMPP
|
||||
* @public
|
||||
* @param {string} location
|
||||
|
@ -288,7 +288,7 @@ var DateUtils = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Parses a XMPP date (hh-mm-ss) into an human-readable one
|
||||
* @public
|
||||
* @param {string} to_parse
|
||||
|
|
|
@ -20,7 +20,7 @@ var Directory = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Opens the directory popup
|
||||
* @public
|
||||
* @return {boolean}
|
||||
|
|
|
@ -20,7 +20,7 @@ var Discovery = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Opens the discovery popup
|
||||
* @public
|
||||
* @return {boolean}
|
||||
|
|
|
@ -20,7 +20,7 @@ var Errors = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Shows the given error output
|
||||
* @public
|
||||
* @param {string} condition
|
||||
|
|
|
@ -20,7 +20,7 @@ var Favorites = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Opens the favorites popup
|
||||
* @public
|
||||
* @return {undefined}
|
||||
|
@ -255,7 +255,7 @@ var Favorites = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Edits a favorite
|
||||
* @public
|
||||
* @return {undefined}
|
||||
|
@ -365,6 +365,8 @@ var Favorites = (function () {
|
|||
Console.info('Action on this bookmark: ' + room + '@' + server + ' / ' + type);
|
||||
} catch(e) {
|
||||
Console.error('Favorites.terminateThis', e);
|
||||
} finally {
|
||||
return false;
|
||||
}
|
||||
|
||||
};
|
||||
|
@ -444,7 +446,7 @@ var Favorites = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Gets a list of the MUC items on a given server
|
||||
* @public
|
||||
* @return {undefined}
|
||||
|
@ -663,11 +665,11 @@ var Favorites = (function () {
|
|||
if(e.keyCode == 13) {
|
||||
// Edit a favorite
|
||||
if($(path + 'fedit-edit').is(':visible'))
|
||||
terminateThis('edit');
|
||||
self.terminateThis('edit');
|
||||
|
||||
// Add a favorite
|
||||
else
|
||||
terminateThis('add');
|
||||
self.terminateThis('add');
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -690,15 +692,15 @@ var Favorites = (function () {
|
|||
});
|
||||
|
||||
$(path + 'fedit-add').click(function() {
|
||||
return terminateThis('add');
|
||||
return self.terminateThis('add');
|
||||
});
|
||||
|
||||
$(path + 'fedit-edit').click(function() {
|
||||
return terminateThis('edit');
|
||||
return self.terminateThis('edit');
|
||||
});
|
||||
|
||||
$(path + 'fedit-remove').click(function() {
|
||||
return terminateThis('remove');
|
||||
return self.terminateThis('remove');
|
||||
});
|
||||
|
||||
$(path + 'bottom .finish').click(function() {
|
||||
|
|
|
@ -20,7 +20,23 @@ var Features = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/* Constants */
|
||||
self.SERVER_NAMES = [
|
||||
'metronome',
|
||||
'prosody',
|
||||
'ejabberd',
|
||||
'jabberd',
|
||||
'openfire',
|
||||
'tigase',
|
||||
'isode'
|
||||
];
|
||||
|
||||
|
||||
/* Variables */
|
||||
self.server_name = null;
|
||||
|
||||
|
||||
/**
|
||||
* Gets the features of a server
|
||||
* @public
|
||||
* @return {undefined}
|
||||
|
@ -89,10 +105,12 @@ var Features = (function () {
|
|||
// Markers
|
||||
var namespaces = [NS_PUBSUB, NS_PUBSUB_CN, NS_URN_MAM, NS_COMMANDS, NS_URN_CARBONS];
|
||||
|
||||
var identity = selector.find('identity');
|
||||
|
||||
var cur_feature;
|
||||
var features = {
|
||||
// This weird selector fixes the same IE8 bug as above...
|
||||
'pep': (selector.find('identity').filter(function() {
|
||||
'pep': (identity.filter(function() {
|
||||
var this_sel = $(this);
|
||||
return (this_sel.attr('category') == 'pubsub' && this_sel.attr('type') == 'pep');
|
||||
}).size() && true)
|
||||
|
@ -106,6 +124,11 @@ var Features = (function () {
|
|||
}
|
||||
});
|
||||
|
||||
// Retrieve server identity
|
||||
self.server_name = self._normalizeServerName(
|
||||
identity.filter('[category="server"]').attr('name')
|
||||
);
|
||||
|
||||
// Enable the pep elements if available
|
||||
if(features.pep === true) {
|
||||
// Update our database
|
||||
|
@ -246,7 +269,7 @@ var Features = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Returns the XMPP server PEP support
|
||||
* @public
|
||||
* @return {boolean}
|
||||
|
@ -362,6 +385,49 @@ var Features = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
* Normalizes the XMPP server name
|
||||
* @private
|
||||
* @return {string}
|
||||
*/
|
||||
self._normalizeServerName = function(name) {
|
||||
|
||||
try {
|
||||
var cur_r;
|
||||
|
||||
for(var i in self.SERVER_NAMES) {
|
||||
cur_r = new RegExp(self.SERVER_NAMES[i], 'gi');
|
||||
|
||||
if(cur_r.exec(name) !== null) {
|
||||
name = self.SERVER_NAMES[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
} catch(e) {
|
||||
Console.error('Features._normalizeServerName', e);
|
||||
} finally {
|
||||
return name;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Returns the XMPP server name
|
||||
* @public
|
||||
* @return {string}
|
||||
*/
|
||||
self.getServerName = function() {
|
||||
|
||||
try {
|
||||
return self.server_name;
|
||||
} catch(e) {
|
||||
Console.error('Features.getServerName', e);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Return class scope
|
||||
*/
|
||||
|
|
|
@ -20,7 +20,7 @@ var Filter = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Generates a given emoticon HTML code
|
||||
* @public
|
||||
* @param {string} image
|
||||
|
|
|
@ -24,7 +24,7 @@ var Groupchat = (function () {
|
|||
var JOIN_SUGGEST = [];
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Displays the MUC admin elements
|
||||
* @public
|
||||
* @param {string} affiliation
|
||||
|
@ -348,7 +348,7 @@ var Groupchat = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Generates a groupchat to join array
|
||||
* @public
|
||||
* @return {object}
|
||||
|
|
|
@ -20,7 +20,7 @@ var Home = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Allows the user to switch the difference home page elements
|
||||
* @public
|
||||
* @param {string} div
|
||||
|
|
|
@ -20,7 +20,7 @@ var HTTPAuth = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Login to a HTTP session
|
||||
* @public
|
||||
* @param {string} lNick
|
||||
|
@ -55,7 +55,7 @@ var HTTPAuth = (function () {
|
|||
}
|
||||
|
||||
// And we handle everything that happen
|
||||
self.setupCon(con);
|
||||
Connection.setupCon(con);
|
||||
|
||||
// Generate a resource
|
||||
var random_resource = DataStore.getDB(Connection.desktop_hash, 'session', 'resource');
|
||||
|
|
|
@ -20,7 +20,7 @@ var Inbox = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Opens the inbox popup
|
||||
* @public
|
||||
* @return {boolean}
|
||||
|
@ -232,7 +232,7 @@ var Inbox = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Cleans the inbox
|
||||
* @public
|
||||
* @return {undefined}
|
||||
|
@ -469,7 +469,7 @@ var Inbox = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Stores an inbox message
|
||||
* @public
|
||||
* @param {string} from
|
||||
|
@ -715,7 +715,7 @@ var Inbox = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Hides a normal message content
|
||||
* @public
|
||||
* @param {string} id
|
||||
|
|
|
@ -20,7 +20,7 @@ var IntegrateBox = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Opens the integratebox popup
|
||||
* @public
|
||||
* @return {undefined}
|
||||
|
@ -309,7 +309,7 @@ var IntegrateBox = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Filters a string to apply the integratebox links
|
||||
* @public
|
||||
* @param {string} data
|
||||
|
|
|
@ -24,7 +24,7 @@ var Interface = (function () {
|
|||
self.chat_focus_hash = null;
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Changes the title of the document
|
||||
* @public
|
||||
* @param {string} new_title
|
||||
|
@ -166,7 +166,7 @@ var Interface = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Loads the complete chat switcher
|
||||
* @public
|
||||
* @return {undefined}
|
||||
|
@ -433,7 +433,7 @@ var Interface = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Notifies the user from a new incoming message
|
||||
* @public
|
||||
* @param {string} hash
|
||||
|
@ -451,17 +451,19 @@ var Interface = (function () {
|
|||
// We notify the user if he has not the focus on the chat
|
||||
if(!active || !Common.isFocused() || (self.chat_focus_hash != hash)) {
|
||||
if(!active) {
|
||||
if(type == 'personal')
|
||||
if(type == 'personal') {
|
||||
$(tested + ', ' + chat_switch + 'more-button').addClass('chan-newmessage');
|
||||
else if(type == 'unread')
|
||||
} else if(type == 'unread') {
|
||||
$(tested).addClass('chan-unread');
|
||||
}
|
||||
}
|
||||
|
||||
// Count the number of pending messages
|
||||
var pending = 1;
|
||||
|
||||
if(Common.exists('#' + hash + '[data-counter]'))
|
||||
if(Common.exists('#' + hash + '[data-counter]')) {
|
||||
pending = parseInt($('#' + hash).attr('data-counter')) + 1;
|
||||
}
|
||||
|
||||
$('#' + hash).attr('data-counter', pending);
|
||||
}
|
||||
|
@ -570,7 +572,7 @@ var Interface = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Shows all the buddies in the roster
|
||||
* @public
|
||||
* @param {string} from
|
||||
|
|
|
@ -15,340 +15,340 @@ Author: Camaran
|
|||
* 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,
|
||||
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,
|
||||
positionInterval,
|
||||
closeTimeout,
|
||||
|
||||
options = {
|
||||
autostart: true, // Automatically open the balloon
|
||||
returningVisitor: false, // Show the balloon to returning visitors only (setting this to true is highly recommended)
|
||||
animationIn: 'drop', // drop || bubble || fade
|
||||
animationOut: 'fade', // drop || bubble || fade
|
||||
startDelay: 2000, // 2 seconds from page load before the balloon appears
|
||||
lifespan: 15000, // 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: false, // Display the touch icon
|
||||
arrow: true, // Display the balloon arrow
|
||||
hookOnLoad: true, // Should we hook to onload event? (really advanced usage)
|
||||
closeButton: true, // Let the user close the balloon
|
||||
iterations: 100 // Internal/debug use
|
||||
},
|
||||
options = {
|
||||
autostart: true, // Automatically open the balloon
|
||||
returningVisitor: false, // Show the balloon to returning visitors only (setting this to true is highly recommended)
|
||||
animationIn: 'drop', // drop || bubble || fade
|
||||
animationOut: 'fade', // drop || bubble || fade
|
||||
startDelay: 2000, // 2 seconds from page load before the balloon appears
|
||||
lifespan: 15000, // 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: false, // Display the touch icon
|
||||
arrow: true, // Display the balloon arrow
|
||||
hookOnLoad: true, // Should we hook to onload event? (really advanced usage)
|
||||
closeButton: true, // Let the user close the balloon
|
||||
iterations: 100 // Internal/debug use
|
||||
},
|
||||
|
||||
intl = {
|
||||
ar: '<span dir="rtl">قم بتثبيت هذا التطبيق على <span dir="ltr">%device:</span>انقر<span dir="ltr">%icon</span> ،<strong>ثم اضفه الى الشاشة الرئيسية.</strong></span>',
|
||||
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>Voeg toe aan 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 aplicativo 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 em <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: 'Bu uygulamayı %device\'a eklemek için %icon simgesine sonrasında <strong>Ana Ekrana Ekle</strong> düğmesine basın.',
|
||||
uk_ua: 'Встановіть цей веб сайт на Ваш %device: натисніть %icon, а потім <strong>На початковий екран</strong>.',
|
||||
zh_cn: '您可以将此应用程式安装到您的 %device 上。请按 %icon 然后点选<strong>添加至主屏幕</strong>。',
|
||||
zh_tw: '您可以將此應用程式安裝到您的 %device 上。請按 %icon 然後點選<strong>加入主畫面螢幕</strong>。'
|
||||
};
|
||||
intl = {
|
||||
ar: '<span dir="rtl">قم بتثبيت هذا التطبيق على <span dir="ltr">%device:</span>انقر<span dir="ltr">%icon</span> ،<strong>ثم اضفه الى الشاشة الرئيسية.</strong></span>',
|
||||
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>Voeg toe aan 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 aplicativo 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 em <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: 'Bu uygulamayı %device\'a eklemek için %icon simgesine sonrasında <strong>Ana Ekrana Ekle</strong> düğmesine basın.',
|
||||
uk_ua: 'Встановіть цей веб сайт на Ваш %device: натисніть %icon, а потім <strong>На початковий екран</strong>.',
|
||||
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;
|
||||
function init () {
|
||||
// Preliminary check, all further checks are performed on iDevices only
|
||||
if ( !isIDevice ) return;
|
||||
|
||||
var now = Date.now(),
|
||||
i;
|
||||
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;
|
||||
// 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 && OSVersion[1] ? +OSVersion[1].replace('_', '.') : 0;
|
||||
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 && OSVersion[1] ? +OSVersion[1].replace('_', '.') : 0;
|
||||
|
||||
lastVisit = +w.localStorage.getItem('addToHome');
|
||||
lastVisit = +w.localStorage.getItem('addToHome');
|
||||
|
||||
isSessionActive = w.sessionStorage.getItem('addToHomeSession');
|
||||
isReturningVisitor = options.returningVisitor ? lastVisit && lastVisit + 28*24*60*60*1000 > now : true;
|
||||
isSessionActive = w.sessionStorage.getItem('addToHomeSession');
|
||||
isReturningVisitor = options.returningVisitor ? lastVisit && lastVisit + 28*24*60*60*1000 > now : true;
|
||||
|
||||
if ( !lastVisit ) lastVisit = now;
|
||||
if ( !lastVisit ) lastVisit = now;
|
||||
|
||||
// If it is expired we need to reissue a new balloon
|
||||
isExpired = isReturningVisitor && 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();
|
||||
}
|
||||
if ( options.hookOnLoad ) w.addEventListener('load', loaded, false);
|
||||
else if ( !options.hookOnLoad && options.autostart ) loaded();
|
||||
}
|
||||
|
||||
function loaded () {
|
||||
w.removeEventListener('load', loaded, false);
|
||||
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 ( !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;
|
||||
if ( !overrideChecks && ( !isSafari || !isExpired || isSessionActive || isStandalone || !isReturningVisitor ) ) return;
|
||||
|
||||
var touchIcon = '',
|
||||
platform = nav.platform.split(' ')[0],
|
||||
language = nav.language.replace('-', '_');
|
||||
var touchIcon = '',
|
||||
platform = nav.platform.split(' ')[0],
|
||||
language = nav.language.replace('-', '_');
|
||||
|
||||
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');
|
||||
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'];
|
||||
}
|
||||
// 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'];
|
||||
}
|
||||
|
||||
if ( options.touchIcon ) {
|
||||
touchIcon = isRetina ?
|
||||
document.querySelector('head link[rel^=apple-touch-icon][sizes="114x114"],head link[rel^=apple-touch-icon][sizes="144x144"],head link[rel^=apple-touch-icon]') :
|
||||
document.querySelector('head link[rel^=apple-touch-icon][sizes="57x57"],head link[rel^=apple-touch-icon]');
|
||||
if ( options.touchIcon ) {
|
||||
touchIcon = isRetina ?
|
||||
document.querySelector('head link[rel^=apple-touch-icon][sizes="114x114"],head link[rel^=apple-touch-icon][sizes="144x144"],head link[rel^=apple-touch-icon]') :
|
||||
document.querySelector('head link[rel^=apple-touch-icon][sizes="57x57"],head link[rel^=apple-touch-icon]');
|
||||
|
||||
if ( touchIcon ) {
|
||||
touchIcon = '<span style="background-image:url(' + touchIcon.href + ')" class="addToHomeTouchIcon"></span>';
|
||||
}
|
||||
}
|
||||
if ( touchIcon ) {
|
||||
touchIcon = '<span style="background-image:url(' + touchIcon.href + ')" 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' + (OSVersion >= 7 ? ' addToHomeShareOS7' : '') + '"></span>' : '<span class="addToHomePlus">+</span>') +
|
||||
(options.arrow ? '<span class="addToHomeArrow"></span>' : '') +
|
||||
(options.closeButton ? '<span class="addToHomeClose">\u00D7</span>' : '');
|
||||
balloon.className = (isIPad ? 'addToHomeIpad' : 'addToHomeIphone') + (touchIcon ? ' addToHomeWide' : '');
|
||||
balloon.innerHTML = touchIcon +
|
||||
options.message.replace('%device', platform).replace('%icon', OSVersion >= 4.2 ? '<span class="addToHomeShare' + (OSVersion >= 7 ? ' addToHomeShareOS7' : '') + '"></span>' : '<span class="addToHomePlus">+</span>') +
|
||||
(options.arrow ? '<span class="addToHomeArrow"></span>' : '') +
|
||||
(options.closeButton ? '<span class="addToHomeClose">\u00D7</span>' : '');
|
||||
|
||||
document.body.appendChild(balloon);
|
||||
document.body.appendChild(balloon);
|
||||
|
||||
// Add the close action
|
||||
if ( options.closeButton ) balloon.addEventListener('click', clicked, false);
|
||||
// Add the close action
|
||||
if ( options.closeButton ) balloon.addEventListener('click', clicked, false);
|
||||
|
||||
if ( !isIPad && OSVersion >= 6 ) window.addEventListener('orientationchange', orientationCheck, false);
|
||||
if ( !isIPad && OSVersion >= 6 ) window.addEventListener('orientationchange', orientationCheck, false);
|
||||
|
||||
setTimeout(show, options.startDelay);
|
||||
}
|
||||
setTimeout(show, options.startDelay);
|
||||
}
|
||||
|
||||
function show () {
|
||||
var duration,
|
||||
iPadXShift = 208;
|
||||
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;
|
||||
}
|
||||
// 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';
|
||||
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;
|
||||
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';
|
||||
}
|
||||
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';
|
||||
}
|
||||
}
|
||||
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);
|
||||
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);
|
||||
}
|
||||
closeTimeout = setTimeout(close, options.lifespan);
|
||||
}
|
||||
|
||||
function manualShow (override) {
|
||||
if ( !isIDevice || balloon ) return;
|
||||
function manualShow (override) {
|
||||
if ( !isIDevice || balloon ) return;
|
||||
|
||||
overrideChecks = override;
|
||||
loaded();
|
||||
}
|
||||
overrideChecks = override;
|
||||
loaded();
|
||||
}
|
||||
|
||||
function close () {
|
||||
clearInterval( positionInterval );
|
||||
clearTimeout( closeTimeout );
|
||||
closeTimeout = null;
|
||||
function close () {
|
||||
clearInterval( positionInterval );
|
||||
clearTimeout( closeTimeout );
|
||||
closeTimeout = null;
|
||||
|
||||
// check if the popup is displayed and prevent errors
|
||||
if ( !balloon ) return;
|
||||
// check if the popup is displayed and prevent errors
|
||||
if ( !balloon ) return;
|
||||
|
||||
var posY = 0,
|
||||
posX = 0,
|
||||
opacity = '1',
|
||||
duration = '0';
|
||||
var posY = 0,
|
||||
posX = 0,
|
||||
opacity = '1',
|
||||
duration = '0';
|
||||
|
||||
if ( options.closeButton ) balloon.removeEventListener('click', clicked, false);
|
||||
if ( !isIPad && OSVersion >= 6 ) window.removeEventListener('orientationchange', orientationCheck, false);
|
||||
if ( options.closeButton ) balloon.removeEventListener('click', clicked, 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;
|
||||
}
|
||||
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';
|
||||
balloon.style.webkitTransitionProperty = '-webkit-transform,opacity';
|
||||
|
||||
switch ( options.animationOut ) {
|
||||
case 'drop':
|
||||
if ( isIPad ) {
|
||||
duration = '0.4s';
|
||||
opacity = '0';
|
||||
posY += 50;
|
||||
} else {
|
||||
duration = '0.6s';
|
||||
posY += balloon.offsetHeight + options.bottomOffset + 50;
|
||||
}
|
||||
break;
|
||||
case 'bubble':
|
||||
if ( isIPad ) {
|
||||
duration = '0.8s';
|
||||
posY -= balloon.offsetHeight + options.bottomOffset + 50;
|
||||
} else {
|
||||
duration = '0.4s';
|
||||
opacity = '0';
|
||||
posY -= 50;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
duration = '0.8s';
|
||||
opacity = '0';
|
||||
}
|
||||
switch ( options.animationOut ) {
|
||||
case 'drop':
|
||||
if ( isIPad ) {
|
||||
duration = '0.4s';
|
||||
opacity = '0';
|
||||
posY += 50;
|
||||
} else {
|
||||
duration = '0.6s';
|
||||
posY += balloon.offsetHeight + options.bottomOffset + 50;
|
||||
}
|
||||
break;
|
||||
case 'bubble':
|
||||
if ( isIPad ) {
|
||||
duration = '0.8s';
|
||||
posY -= balloon.offsetHeight + options.bottomOffset + 50;
|
||||
} else {
|
||||
duration = '0.4s';
|
||||
opacity = '0';
|
||||
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)';
|
||||
}
|
||||
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 clicked () {
|
||||
w.sessionStorage.setItem('addToHomeSession', '1');
|
||||
isSessionActive = true;
|
||||
close();
|
||||
}
|
||||
|
||||
function transitionEnd () {
|
||||
balloon.removeEventListener('webkitTransitionEnd', transitionEnd, false);
|
||||
function transitionEnd () {
|
||||
balloon.removeEventListener('webkitTransitionEnd', transitionEnd, false);
|
||||
|
||||
balloon.style.webkitTransitionProperty = '-webkit-transform';
|
||||
balloon.style.webkitTransitionDuration = '0.2s';
|
||||
balloon.style.webkitTransitionProperty = '-webkit-transform';
|
||||
balloon.style.webkitTransitionDuration = '0.2s';
|
||||
|
||||
// We reached the end!
|
||||
if ( !closeTimeout ) {
|
||||
balloon.parentNode.removeChild(balloon);
|
||||
balloon = null;
|
||||
return;
|
||||
}
|
||||
// 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);
|
||||
}
|
||||
// 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;
|
||||
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;
|
||||
// Screen didn't move
|
||||
if ( posY == matrix.m42 && posX == matrix.m41 ) return;
|
||||
|
||||
balloon.style.webkitTransform = 'translate3d(' + posX + 'px,' + posY + 'px,0)';
|
||||
}
|
||||
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');
|
||||
}
|
||||
// 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';
|
||||
}
|
||||
function orientationCheck () {
|
||||
balloon.style.marginLeft = -Math.round(balloon.offsetWidth / 2) - ( w.orientation%180 && OSVersion >= 6 ? 40 : 0 ) + 'px';
|
||||
}
|
||||
|
||||
// Bootstrap!
|
||||
init();
|
||||
// Bootstrap!
|
||||
init();
|
||||
|
||||
return {
|
||||
show: manualShow,
|
||||
close: close,
|
||||
reset: reset
|
||||
};
|
||||
return {
|
||||
show: manualShow,
|
||||
close: close,
|
||||
reset: reset
|
||||
};
|
||||
})(window);
|
||||
|
|
|
@ -20,7 +20,7 @@ var IQ = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Handles an incoming IQ packet
|
||||
* @public
|
||||
* @param {object} iq
|
||||
|
@ -109,7 +109,7 @@ var IQ = (function () {
|
|||
}
|
||||
|
||||
// Privacy lists push
|
||||
else if((iqQueryXMLNS == NS_PRIVACY) && (iqType == 'set')) {
|
||||
else if((iqQueryXMLNS == NS_PRIVACY) && (iqType == 'set') && Common.isSafeStanza(iq)) {
|
||||
// REF : http://xmpp.org/extensions/xep-0016.html
|
||||
|
||||
// Roster push
|
||||
|
@ -124,7 +124,7 @@ var IQ = (function () {
|
|||
}
|
||||
|
||||
// Roster push
|
||||
else if((iqQueryXMLNS == NS_ROSTER) && (iqType == 'set')) {
|
||||
else if((iqQueryXMLNS == NS_ROSTER) && (iqType == 'set') && Common.isSafeStanza(iq)) {
|
||||
// REF : http://xmpp.org/extensions/xep-0092.html
|
||||
|
||||
// Roster push
|
||||
|
|
|
@ -29,7 +29,7 @@ var Jingle = (function() {
|
|||
|
||||
/**
|
||||
* Provides an adapter to the JSJaCJingle console implementation which is different
|
||||
* @public
|
||||
* @private
|
||||
* @return {object}
|
||||
*/
|
||||
self._consoleAdapter = (function() {
|
||||
|
|
16160
source/app/javascripts/jquery.js
vendored
16160
source/app/javascripts/jquery.js
vendored
File diff suppressed because it is too large
Load diff
|
@ -14,188 +14,188 @@
|
|||
* @license MIT License <http://www.opensource.org/licenses/mit-license.php>
|
||||
*/
|
||||
(function ($) {
|
||||
'use strict';
|
||||
'use strict';
|
||||
|
||||
var escape = /["\\\x00-\x1f\x7f-\x9f]/g,
|
||||
meta = {
|
||||
'\b': '\\b',
|
||||
'\t': '\\t',
|
||||
'\n': '\\n',
|
||||
'\f': '\\f',
|
||||
'\r': '\\r',
|
||||
'"' : '\\"',
|
||||
'\\': '\\\\'
|
||||
},
|
||||
hasOwn = Object.prototype.hasOwnProperty;
|
||||
var escape = /["\\\x00-\x1f\x7f-\x9f]/g,
|
||||
meta = {
|
||||
'\b': '\\b',
|
||||
'\t': '\\t',
|
||||
'\n': '\\n',
|
||||
'\f': '\\f',
|
||||
'\r': '\\r',
|
||||
'"' : '\\"',
|
||||
'\\': '\\\\'
|
||||
},
|
||||
hasOwn = Object.prototype.hasOwnProperty;
|
||||
|
||||
/**
|
||||
* jQuery.toJSON
|
||||
* Converts the given argument into a JSON representation.
|
||||
*
|
||||
* @param o {Mixed} The json-serializable *thing* to be converted
|
||||
*
|
||||
* If an object has a toJSON prototype, that will be used to get the representation.
|
||||
* Non-integer/string keys are skipped in the object, as are keys that point to a
|
||||
* function.
|
||||
*
|
||||
*/
|
||||
$.toJSON = typeof JSON === 'object' && JSON.stringify ? JSON.stringify : function (o) {
|
||||
if (o === null) {
|
||||
return 'null';
|
||||
}
|
||||
/**
|
||||
* jQuery.toJSON
|
||||
* Converts the given argument into a JSON representation.
|
||||
*
|
||||
* @param o {Mixed} The json-serializable *thing* to be converted
|
||||
*
|
||||
* If an object has a toJSON prototype, that will be used to get the representation.
|
||||
* Non-integer/string keys are skipped in the object, as are keys that point to a
|
||||
* function.
|
||||
*
|
||||
*/
|
||||
$.toJSON = typeof JSON === 'object' && JSON.stringify ? JSON.stringify : function (o) {
|
||||
if (o === null) {
|
||||
return 'null';
|
||||
}
|
||||
|
||||
var pairs, k, name, val,
|
||||
type = $.type(o);
|
||||
var pairs, k, name, val,
|
||||
type = $.type(o);
|
||||
|
||||
if (type === 'undefined') {
|
||||
return undefined;
|
||||
}
|
||||
if (type === 'undefined') {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
// Also covers instantiated Number and Boolean objects,
|
||||
// which are typeof 'object' but thanks to $.type, we
|
||||
// catch them here. I don't know whether it is right
|
||||
// or wrong that instantiated primitives are not
|
||||
// exported to JSON as an {"object":..}.
|
||||
// We choose this path because that's what the browsers did.
|
||||
if (type === 'number' || type === 'boolean') {
|
||||
return String(o);
|
||||
}
|
||||
if (type === 'string') {
|
||||
return $.quoteString(o);
|
||||
}
|
||||
if (typeof o.toJSON === 'function') {
|
||||
return $.toJSON(o.toJSON());
|
||||
}
|
||||
if (type === 'date') {
|
||||
var month = o.getUTCMonth() + 1,
|
||||
day = o.getUTCDate(),
|
||||
year = o.getUTCFullYear(),
|
||||
hours = o.getUTCHours(),
|
||||
minutes = o.getUTCMinutes(),
|
||||
seconds = o.getUTCSeconds(),
|
||||
milli = o.getUTCMilliseconds();
|
||||
// Also covers instantiated Number and Boolean objects,
|
||||
// which are typeof 'object' but thanks to $.type, we
|
||||
// catch them here. I don't know whether it is right
|
||||
// or wrong that instantiated primitives are not
|
||||
// exported to JSON as an {"object":..}.
|
||||
// We choose this path because that's what the browsers did.
|
||||
if (type === 'number' || type === 'boolean') {
|
||||
return String(o);
|
||||
}
|
||||
if (type === 'string') {
|
||||
return $.quoteString(o);
|
||||
}
|
||||
if (typeof o.toJSON === 'function') {
|
||||
return $.toJSON(o.toJSON());
|
||||
}
|
||||
if (type === 'date') {
|
||||
var month = o.getUTCMonth() + 1,
|
||||
day = o.getUTCDate(),
|
||||
year = o.getUTCFullYear(),
|
||||
hours = o.getUTCHours(),
|
||||
minutes = o.getUTCMinutes(),
|
||||
seconds = o.getUTCSeconds(),
|
||||
milli = o.getUTCMilliseconds();
|
||||
|
||||
if (month < 10) {
|
||||
month = '0' + month;
|
||||
}
|
||||
if (day < 10) {
|
||||
day = '0' + day;
|
||||
}
|
||||
if (hours < 10) {
|
||||
hours = '0' + hours;
|
||||
}
|
||||
if (minutes < 10) {
|
||||
minutes = '0' + minutes;
|
||||
}
|
||||
if (seconds < 10) {
|
||||
seconds = '0' + seconds;
|
||||
}
|
||||
if (milli < 100) {
|
||||
milli = '0' + milli;
|
||||
}
|
||||
if (milli < 10) {
|
||||
milli = '0' + milli;
|
||||
}
|
||||
return '"' + year + '-' + month + '-' + day + 'T' +
|
||||
hours + ':' + minutes + ':' + seconds +
|
||||
'.' + milli + 'Z"';
|
||||
}
|
||||
if (month < 10) {
|
||||
month = '0' + month;
|
||||
}
|
||||
if (day < 10) {
|
||||
day = '0' + day;
|
||||
}
|
||||
if (hours < 10) {
|
||||
hours = '0' + hours;
|
||||
}
|
||||
if (minutes < 10) {
|
||||
minutes = '0' + minutes;
|
||||
}
|
||||
if (seconds < 10) {
|
||||
seconds = '0' + seconds;
|
||||
}
|
||||
if (milli < 100) {
|
||||
milli = '0' + milli;
|
||||
}
|
||||
if (milli < 10) {
|
||||
milli = '0' + milli;
|
||||
}
|
||||
return '"' + year + '-' + month + '-' + day + 'T' +
|
||||
hours + ':' + minutes + ':' + seconds +
|
||||
'.' + milli + 'Z"';
|
||||
}
|
||||
|
||||
pairs = [];
|
||||
pairs = [];
|
||||
|
||||
if ($.isArray(o)) {
|
||||
for (k = 0; k < o.length; k++) {
|
||||
pairs.push($.toJSON(o[k]) || 'null');
|
||||
}
|
||||
return '[' + pairs.join(',') + ']';
|
||||
}
|
||||
if ($.isArray(o)) {
|
||||
for (k = 0; k < o.length; k++) {
|
||||
pairs.push($.toJSON(o[k]) || 'null');
|
||||
}
|
||||
return '[' + pairs.join(',') + ']';
|
||||
}
|
||||
|
||||
// Any other object (plain object, RegExp, ..)
|
||||
// Need to do typeof instead of $.type, because we also
|
||||
// want to catch non-plain objects.
|
||||
if (typeof o === 'object') {
|
||||
for (k in o) {
|
||||
// Only include own properties,
|
||||
// Filter out inherited prototypes
|
||||
if (hasOwn.call(o, k)) {
|
||||
// Keys must be numerical or string. Skip others
|
||||
type = typeof k;
|
||||
if (type === 'number') {
|
||||
name = '"' + k + '"';
|
||||
} else if (type === 'string') {
|
||||
name = $.quoteString(k);
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
type = typeof o[k];
|
||||
// Any other object (plain object, RegExp, ..)
|
||||
// Need to do typeof instead of $.type, because we also
|
||||
// want to catch non-plain objects.
|
||||
if (typeof o === 'object') {
|
||||
for (k in o) {
|
||||
// Only include own properties,
|
||||
// Filter out inherited prototypes
|
||||
if (hasOwn.call(o, k)) {
|
||||
// Keys must be numerical or string. Skip others
|
||||
type = typeof k;
|
||||
if (type === 'number') {
|
||||
name = '"' + k + '"';
|
||||
} else if (type === 'string') {
|
||||
name = $.quoteString(k);
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
type = typeof o[k];
|
||||
|
||||
// Invalid values like these return undefined
|
||||
// from toJSON, however those object members
|
||||
// shouldn't be included in the JSON string at all.
|
||||
if (type !== 'function' && type !== 'undefined') {
|
||||
val = $.toJSON(o[k]);
|
||||
pairs.push(name + ':' + val);
|
||||
}
|
||||
}
|
||||
}
|
||||
return '{' + pairs.join(',') + '}';
|
||||
}
|
||||
};
|
||||
// Invalid values like these return undefined
|
||||
// from toJSON, however those object members
|
||||
// shouldn't be included in the JSON string at all.
|
||||
if (type !== 'function' && type !== 'undefined') {
|
||||
val = $.toJSON(o[k]);
|
||||
pairs.push(name + ':' + val);
|
||||
}
|
||||
}
|
||||
}
|
||||
return '{' + pairs.join(',') + '}';
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* jQuery.evalJSON
|
||||
* Evaluates a given json string.
|
||||
*
|
||||
* @param str {String}
|
||||
*/
|
||||
$.evalJSON = typeof JSON === 'object' && JSON.parse ? JSON.parse : function (str) {
|
||||
/*jshint evil: true */
|
||||
return eval('(' + str + ')');
|
||||
};
|
||||
/**
|
||||
* jQuery.evalJSON
|
||||
* Evaluates a given json string.
|
||||
*
|
||||
* @param str {String}
|
||||
*/
|
||||
$.evalJSON = typeof JSON === 'object' && JSON.parse ? JSON.parse : function (str) {
|
||||
/*jshint evil: true */
|
||||
return eval('(' + str + ')');
|
||||
};
|
||||
|
||||
/**
|
||||
* jQuery.secureEvalJSON
|
||||
* Evals JSON in a way that is *more* secure.
|
||||
*
|
||||
* @param str {String}
|
||||
*/
|
||||
$.secureEvalJSON = typeof JSON === 'object' && JSON.parse ? JSON.parse : function (str) {
|
||||
var filtered =
|
||||
str
|
||||
.replace(/\\["\\\/bfnrtu]/g, '@')
|
||||
.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
|
||||
.replace(/(?:^|:|,)(?:\s*\[)+/g, '');
|
||||
/**
|
||||
* jQuery.secureEvalJSON
|
||||
* Evals JSON in a way that is *more* secure.
|
||||
*
|
||||
* @param str {String}
|
||||
*/
|
||||
$.secureEvalJSON = typeof JSON === 'object' && JSON.parse ? JSON.parse : function (str) {
|
||||
var filtered =
|
||||
str
|
||||
.replace(/\\["\\\/bfnrtu]/g, '@')
|
||||
.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
|
||||
.replace(/(?:^|:|,)(?:\s*\[)+/g, '');
|
||||
|
||||
if (/^[\],:{}\s]*$/.test(filtered)) {
|
||||
/*jshint evil: true */
|
||||
return eval('(' + str + ')');
|
||||
}
|
||||
throw new SyntaxError('Error parsing JSON, source is not valid.');
|
||||
};
|
||||
if (/^[\],:{}\s]*$/.test(filtered)) {
|
||||
/*jshint evil: true */
|
||||
return eval('(' + str + ')');
|
||||
}
|
||||
throw new SyntaxError('Error parsing JSON, source is not valid.');
|
||||
};
|
||||
|
||||
/**
|
||||
* jQuery.quoteString
|
||||
* Returns a string-repr of a string, escaping quotes intelligently.
|
||||
* Mostly a support function for toJSON.
|
||||
* Examples:
|
||||
* >>> jQuery.quoteString('apple')
|
||||
* "apple"
|
||||
*
|
||||
* >>> jQuery.quoteString('"Where are we going?", she asked.')
|
||||
* "\"Where are we going?\", she asked."
|
||||
*/
|
||||
$.quoteString = function (str) {
|
||||
if (str.match(escape)) {
|
||||
return '"' + str.replace(escape, function (a) {
|
||||
var c = meta[a];
|
||||
if (typeof c === 'string') {
|
||||
return c;
|
||||
}
|
||||
c = a.charCodeAt();
|
||||
return '\\u00' + Math.floor(c / 16).toString(16) + (c % 16).toString(16);
|
||||
}) + '"';
|
||||
}
|
||||
return '"' + str + '"';
|
||||
};
|
||||
/**
|
||||
* jQuery.quoteString
|
||||
* Returns a string-repr of a string, escaping quotes intelligently.
|
||||
* Mostly a support function for toJSON.
|
||||
* Examples:
|
||||
* >>> jQuery.quoteString('apple')
|
||||
* "apple"
|
||||
*
|
||||
* >>> jQuery.quoteString('"Where are we going?", she asked.')
|
||||
* "\"Where are we going?\", she asked."
|
||||
*/
|
||||
$.quoteString = function (str) {
|
||||
if (str.match(escape)) {
|
||||
return '"' + str.replace(escape, function (a) {
|
||||
var c = meta[a];
|
||||
if (typeof c === 'string') {
|
||||
return c;
|
||||
}
|
||||
c = a.charCodeAt();
|
||||
return '\\u00' + Math.floor(c / 16).toString(16) + (c % 16).toString(16);
|
||||
}) + '"';
|
||||
}
|
||||
return '"' + str + '"';
|
||||
};
|
||||
|
||||
}(jQuery));
|
||||
|
|
|
@ -1,157 +1,157 @@
|
|||
/*! http://mths.be/placeholder v2.0.7 by @mathias */
|
||||
;(function(window, document, $) {
|
||||
|
||||
var isInputSupported = 'placeholder' in document.createElement('input'),
|
||||
isTextareaSupported = 'placeholder' in document.createElement('textarea'),
|
||||
prototype = $.fn,
|
||||
valHooks = $.valHooks,
|
||||
hooks,
|
||||
placeholder;
|
||||
var isInputSupported = 'placeholder' in document.createElement('input'),
|
||||
isTextareaSupported = 'placeholder' in document.createElement('textarea'),
|
||||
prototype = $.fn,
|
||||
valHooks = $.valHooks,
|
||||
hooks,
|
||||
placeholder;
|
||||
|
||||
if (isInputSupported && isTextareaSupported) {
|
||||
if (isInputSupported && isTextareaSupported) {
|
||||
|
||||
placeholder = prototype.placeholder = function() {
|
||||
return this;
|
||||
};
|
||||
placeholder = prototype.placeholder = function() {
|
||||
return this;
|
||||
};
|
||||
|
||||
placeholder.input = placeholder.textarea = true;
|
||||
placeholder.input = placeholder.textarea = true;
|
||||
|
||||
} else {
|
||||
} else {
|
||||
|
||||
placeholder = prototype.placeholder = function() {
|
||||
var $this = this;
|
||||
$this
|
||||
.filter((isInputSupported ? 'textarea' : ':input') + '[placeholder]')
|
||||
.not('.placeholder')
|
||||
.bind({
|
||||
'focus.placeholder': clearPlaceholder,
|
||||
'blur.placeholder': setPlaceholder
|
||||
})
|
||||
.data('placeholder-enabled', true)
|
||||
.trigger('blur.placeholder');
|
||||
return $this;
|
||||
};
|
||||
placeholder = prototype.placeholder = function() {
|
||||
var $this = this;
|
||||
$this
|
||||
.filter((isInputSupported ? 'textarea' : ':input') + '[placeholder]')
|
||||
.not('.placeholder')
|
||||
.bind({
|
||||
'focus.placeholder': clearPlaceholder,
|
||||
'blur.placeholder': setPlaceholder
|
||||
})
|
||||
.data('placeholder-enabled', true)
|
||||
.trigger('blur.placeholder');
|
||||
return $this;
|
||||
};
|
||||
|
||||
placeholder.input = isInputSupported;
|
||||
placeholder.textarea = isTextareaSupported;
|
||||
placeholder.input = isInputSupported;
|
||||
placeholder.textarea = isTextareaSupported;
|
||||
|
||||
hooks = {
|
||||
'get': function(element) {
|
||||
var $element = $(element);
|
||||
return $element.data('placeholder-enabled') && $element.hasClass('placeholder') ? '' : element.value;
|
||||
},
|
||||
'set': function(element, value) {
|
||||
var $element = $(element);
|
||||
if (!$element.data('placeholder-enabled')) {
|
||||
return element.value = value;
|
||||
}
|
||||
if (value == '') {
|
||||
element.value = value;
|
||||
// Issue #56: Setting the placeholder causes problems if the element continues to have focus.
|
||||
if (element != document.activeElement) {
|
||||
// We can't use `triggerHandler` here because of dummy text/password inputs :(
|
||||
setPlaceholder.call(element);
|
||||
}
|
||||
} else if ($element.hasClass('placeholder')) {
|
||||
clearPlaceholder.call(element, true, value) || (element.value = value);
|
||||
} else {
|
||||
element.value = value;
|
||||
}
|
||||
// `set` can not return `undefined`; see http://jsapi.info/jquery/1.7.1/val#L2363
|
||||
return $element;
|
||||
}
|
||||
};
|
||||
hooks = {
|
||||
'get': function(element) {
|
||||
var $element = $(element);
|
||||
return $element.data('placeholder-enabled') && $element.hasClass('placeholder') ? '' : element.value;
|
||||
},
|
||||
'set': function(element, value) {
|
||||
var $element = $(element);
|
||||
if (!$element.data('placeholder-enabled')) {
|
||||
return element.value = value;
|
||||
}
|
||||
if (value == '') {
|
||||
element.value = value;
|
||||
// Issue #56: Setting the placeholder causes problems if the element continues to have focus.
|
||||
if (element != document.activeElement) {
|
||||
// We can't use `triggerHandler` here because of dummy text/password inputs :(
|
||||
setPlaceholder.call(element);
|
||||
}
|
||||
} else if ($element.hasClass('placeholder')) {
|
||||
clearPlaceholder.call(element, true, value) || (element.value = value);
|
||||
} else {
|
||||
element.value = value;
|
||||
}
|
||||
// `set` can not return `undefined`; see http://jsapi.info/jquery/1.7.1/val#L2363
|
||||
return $element;
|
||||
}
|
||||
};
|
||||
|
||||
isInputSupported || (valHooks.input = hooks);
|
||||
isTextareaSupported || (valHooks.textarea = hooks);
|
||||
isInputSupported || (valHooks.input = hooks);
|
||||
isTextareaSupported || (valHooks.textarea = hooks);
|
||||
|
||||
$(function() {
|
||||
// Look for forms
|
||||
$(document).delegate('form', 'submit.placeholder', function() {
|
||||
// Clear the placeholder values so they don't get submitted
|
||||
var $inputs = $('.placeholder', this).each(clearPlaceholder);
|
||||
setTimeout(function() {
|
||||
$inputs.each(setPlaceholder);
|
||||
}, 10);
|
||||
});
|
||||
});
|
||||
$(function() {
|
||||
// Look for forms
|
||||
$(document).delegate('form', 'submit.placeholder', function() {
|
||||
// Clear the placeholder values so they don't get submitted
|
||||
var $inputs = $('.placeholder', this).each(clearPlaceholder);
|
||||
setTimeout(function() {
|
||||
$inputs.each(setPlaceholder);
|
||||
}, 10);
|
||||
});
|
||||
});
|
||||
|
||||
// Clear placeholder values upon page reload
|
||||
$(window).bind('beforeunload.placeholder', function() {
|
||||
$('.placeholder').each(function() {
|
||||
this.value = '';
|
||||
});
|
||||
});
|
||||
// Clear placeholder values upon page reload
|
||||
$(window).bind('beforeunload.placeholder', function() {
|
||||
$('.placeholder').each(function() {
|
||||
this.value = '';
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function args(elem) {
|
||||
// Return an object of element attributes
|
||||
var newAttrs = {},
|
||||
rinlinejQuery = /^jQuery\d+$/;
|
||||
$.each(elem.attributes, function(i, attr) {
|
||||
if (attr.specified && !rinlinejQuery.test(attr.name)) {
|
||||
newAttrs[attr.name] = attr.value;
|
||||
}
|
||||
});
|
||||
return newAttrs;
|
||||
}
|
||||
function args(elem) {
|
||||
// Return an object of element attributes
|
||||
var newAttrs = {},
|
||||
rinlinejQuery = /^jQuery\d+$/;
|
||||
$.each(elem.attributes, function(i, attr) {
|
||||
if (attr.specified && !rinlinejQuery.test(attr.name)) {
|
||||
newAttrs[attr.name] = attr.value;
|
||||
}
|
||||
});
|
||||
return newAttrs;
|
||||
}
|
||||
|
||||
function clearPlaceholder(event, value) {
|
||||
var input = this,
|
||||
$input = $(input);
|
||||
if (input.value == $input.attr('placeholder') && $input.hasClass('placeholder')) {
|
||||
if ($input.data('placeholder-password')) {
|
||||
$input = $input.hide().next().show().attr('id', $input.removeAttr('id').data('placeholder-id'));
|
||||
// If `clearPlaceholder` was called from `$.valHooks.input.set`
|
||||
if (event === true) {
|
||||
return $input[0].value = value;
|
||||
}
|
||||
$input.focus();
|
||||
} else {
|
||||
input.value = '';
|
||||
$input.removeClass('placeholder');
|
||||
input == document.activeElement && input.select();
|
||||
}
|
||||
}
|
||||
}
|
||||
function clearPlaceholder(event, value) {
|
||||
var input = this,
|
||||
$input = $(input);
|
||||
if (input.value == $input.attr('placeholder') && $input.hasClass('placeholder')) {
|
||||
if ($input.data('placeholder-password')) {
|
||||
$input = $input.hide().next().show().attr('id', $input.removeAttr('id').data('placeholder-id'));
|
||||
// If `clearPlaceholder` was called from `$.valHooks.input.set`
|
||||
if (event === true) {
|
||||
return $input[0].value = value;
|
||||
}
|
||||
$input.focus();
|
||||
} else {
|
||||
input.value = '';
|
||||
$input.removeClass('placeholder');
|
||||
input == document.activeElement && input.select();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function setPlaceholder() {
|
||||
var $replacement,
|
||||
input = this,
|
||||
$input = $(input),
|
||||
$origInput = $input,
|
||||
id = this.id;
|
||||
if (input.value == '') {
|
||||
if (input.type == 'password') {
|
||||
if (!$input.data('placeholder-textinput')) {
|
||||
try {
|
||||
$replacement = $input.clone().attr({ 'type': 'text' });
|
||||
} catch(e) {
|
||||
$replacement = $('<input>').attr($.extend(args(this), { 'type': 'text' }));
|
||||
}
|
||||
$replacement
|
||||
.removeAttr('name')
|
||||
.data({
|
||||
'placeholder-password': true,
|
||||
'placeholder-id': id
|
||||
})
|
||||
.bind('focus.placeholder', clearPlaceholder);
|
||||
$input
|
||||
.data({
|
||||
'placeholder-textinput': $replacement,
|
||||
'placeholder-id': id
|
||||
})
|
||||
.before($replacement);
|
||||
}
|
||||
$input = $input.removeAttr('id').hide().prev().attr('id', id).show();
|
||||
// Note: `$input[0] != input` now!
|
||||
}
|
||||
$input.addClass('placeholder');
|
||||
$input[0].value = $input.attr('placeholder');
|
||||
} else {
|
||||
$input.removeClass('placeholder');
|
||||
}
|
||||
}
|
||||
function setPlaceholder() {
|
||||
var $replacement,
|
||||
input = this,
|
||||
$input = $(input),
|
||||
$origInput = $input,
|
||||
id = this.id;
|
||||
if (input.value == '') {
|
||||
if (input.type == 'password') {
|
||||
if (!$input.data('placeholder-textinput')) {
|
||||
try {
|
||||
$replacement = $input.clone().attr({ 'type': 'text' });
|
||||
} catch(e) {
|
||||
$replacement = $('<input>').attr($.extend(args(this), { 'type': 'text' }));
|
||||
}
|
||||
$replacement
|
||||
.removeAttr('name')
|
||||
.data({
|
||||
'placeholder-password': true,
|
||||
'placeholder-id': id
|
||||
})
|
||||
.bind('focus.placeholder', clearPlaceholder);
|
||||
$input
|
||||
.data({
|
||||
'placeholder-textinput': $replacement,
|
||||
'placeholder-id': id
|
||||
})
|
||||
.before($replacement);
|
||||
}
|
||||
$input = $input.removeAttr('id').hide().prev().attr('id', id).show();
|
||||
// Note: `$input[0] != input` now!
|
||||
}
|
||||
$input.addClass('placeholder');
|
||||
$input[0].value = $input.attr('placeholder');
|
||||
} else {
|
||||
$input.removeClass('placeholder');
|
||||
}
|
||||
}
|
||||
|
||||
}(this, document, jQuery));
|
|
@ -17,169 +17,169 @@
|
|||
}
|
||||
}(function ($) {
|
||||
|
||||
var $scrollTo = $.scrollTo = function( target, duration, settings ) {
|
||||
return $(window).scrollTo( target, duration, settings );
|
||||
};
|
||||
var $scrollTo = $.scrollTo = function( target, duration, settings ) {
|
||||
return $(window).scrollTo( target, duration, settings );
|
||||
};
|
||||
|
||||
$scrollTo.defaults = {
|
||||
axis:'xy',
|
||||
duration: parseFloat($.fn.jquery) >= 1.3 ? 0 : 1,
|
||||
limit:true
|
||||
};
|
||||
$scrollTo.defaults = {
|
||||
axis:'xy',
|
||||
duration: parseFloat($.fn.jquery) >= 1.3 ? 0 : 1,
|
||||
limit:true
|
||||
};
|
||||
|
||||
// Returns the element that needs to be animated to scroll the window.
|
||||
// Kept for backwards compatibility (specially for localScroll & serialScroll)
|
||||
$scrollTo.window = function( scope ) {
|
||||
return $(window)._scrollable();
|
||||
};
|
||||
// Returns the element that needs to be animated to scroll the window.
|
||||
// Kept for backwards compatibility (specially for localScroll & serialScroll)
|
||||
$scrollTo.window = function( scope ) {
|
||||
return $(window)._scrollable();
|
||||
};
|
||||
|
||||
// Hack, hack, hack :)
|
||||
// Returns the real elements to scroll (supports window/iframes, documents and regular nodes)
|
||||
$.fn._scrollable = function() {
|
||||
return this.map(function() {
|
||||
var elem = this,
|
||||
isWin = !elem.nodeName || $.inArray( elem.nodeName.toLowerCase(), ['iframe','#document','html','body'] ) != -1;
|
||||
// Hack, hack, hack :)
|
||||
// Returns the real elements to scroll (supports window/iframes, documents and regular nodes)
|
||||
$.fn._scrollable = function() {
|
||||
return this.map(function() {
|
||||
var elem = this,
|
||||
isWin = !elem.nodeName || $.inArray( elem.nodeName.toLowerCase(), ['iframe','#document','html','body'] ) != -1;
|
||||
|
||||
if (!isWin)
|
||||
return elem;
|
||||
if (!isWin)
|
||||
return elem;
|
||||
|
||||
var doc = (elem.contentWindow || elem).document || elem.ownerDocument || elem;
|
||||
var doc = (elem.contentWindow || elem).document || elem.ownerDocument || elem;
|
||||
|
||||
return /webkit/i.test(navigator.userAgent) || doc.compatMode == 'BackCompat' ?
|
||||
doc.body :
|
||||
doc.documentElement;
|
||||
});
|
||||
};
|
||||
return /webkit/i.test(navigator.userAgent) || doc.compatMode == 'BackCompat' ?
|
||||
doc.body :
|
||||
doc.documentElement;
|
||||
});
|
||||
};
|
||||
|
||||
$.fn.scrollTo = function( target, duration, settings ) {
|
||||
if (typeof duration == 'object') {
|
||||
settings = duration;
|
||||
duration = 0;
|
||||
}
|
||||
if (typeof settings == 'function')
|
||||
settings = { onAfter:settings };
|
||||
$.fn.scrollTo = function( target, duration, settings ) {
|
||||
if (typeof duration == 'object') {
|
||||
settings = duration;
|
||||
duration = 0;
|
||||
}
|
||||
if (typeof settings == 'function')
|
||||
settings = { onAfter:settings };
|
||||
|
||||
if (target == 'max')
|
||||
target = 9e9;
|
||||
if (target == 'max')
|
||||
target = 9e9;
|
||||
|
||||
settings = $.extend( {}, $scrollTo.defaults, settings );
|
||||
// Speed is still recognized for backwards compatibility
|
||||
duration = duration || settings.duration;
|
||||
// Make sure the settings are given right
|
||||
settings.queue = settings.queue && settings.axis.length > 1;
|
||||
settings = $.extend( {}, $scrollTo.defaults, settings );
|
||||
// Speed is still recognized for backwards compatibility
|
||||
duration = duration || settings.duration;
|
||||
// Make sure the settings are given right
|
||||
settings.queue = settings.queue && settings.axis.length > 1;
|
||||
|
||||
if (settings.queue)
|
||||
// Let's keep the overall duration
|
||||
duration /= 2;
|
||||
settings.offset = both( settings.offset );
|
||||
settings.over = both( settings.over );
|
||||
if (settings.queue)
|
||||
// Let's keep the overall duration
|
||||
duration /= 2;
|
||||
settings.offset = both( settings.offset );
|
||||
settings.over = both( settings.over );
|
||||
|
||||
return this._scrollable().each(function() {
|
||||
// Null target yields nothing, just like jQuery does
|
||||
if (target == null) return;
|
||||
return this._scrollable().each(function() {
|
||||
// Null target yields nothing, just like jQuery does
|
||||
if (target == null) return;
|
||||
|
||||
var elem = this,
|
||||
$elem = $(elem),
|
||||
targ = target, toff, attr = {},
|
||||
win = $elem.is('html,body');
|
||||
var elem = this,
|
||||
$elem = $(elem),
|
||||
targ = target, toff, attr = {},
|
||||
win = $elem.is('html,body');
|
||||
|
||||
switch (typeof targ) {
|
||||
// A number will pass the regex
|
||||
case 'number':
|
||||
case 'string':
|
||||
if (/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(targ)) {
|
||||
targ = both( targ );
|
||||
// We are done
|
||||
break;
|
||||
}
|
||||
// Relative selector, no break!
|
||||
targ = $(targ,this);
|
||||
if (!targ.length) return;
|
||||
case 'object':
|
||||
// DOMElement / jQuery
|
||||
if (targ.is || targ.style)
|
||||
// Get the real position of the target
|
||||
toff = (targ = $(targ)).offset();
|
||||
}
|
||||
switch (typeof targ) {
|
||||
// A number will pass the regex
|
||||
case 'number':
|
||||
case 'string':
|
||||
if (/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(targ)) {
|
||||
targ = both( targ );
|
||||
// We are done
|
||||
break;
|
||||
}
|
||||
// Relative selector, no break!
|
||||
targ = $(targ,this);
|
||||
if (!targ.length) return;
|
||||
case 'object':
|
||||
// DOMElement / jQuery
|
||||
if (targ.is || targ.style)
|
||||
// Get the real position of the target
|
||||
toff = (targ = $(targ)).offset();
|
||||
}
|
||||
|
||||
var offset = $.isFunction(settings.offset) && settings.offset(elem, targ) || settings.offset;
|
||||
var offset = $.isFunction(settings.offset) && settings.offset(elem, targ) || settings.offset;
|
||||
|
||||
$.each( settings.axis.split(''), function( i, axis ) {
|
||||
var Pos = axis == 'x' ? 'Left' : 'Top',
|
||||
pos = Pos.toLowerCase(),
|
||||
key = 'scroll' + Pos,
|
||||
old = elem[key],
|
||||
max = $scrollTo.max(elem, axis);
|
||||
$.each( settings.axis.split(''), function( i, axis ) {
|
||||
var Pos = axis == 'x' ? 'Left' : 'Top',
|
||||
pos = Pos.toLowerCase(),
|
||||
key = 'scroll' + Pos,
|
||||
old = elem[key],
|
||||
max = $scrollTo.max(elem, axis);
|
||||
|
||||
if (toff) {// jQuery / DOMElement
|
||||
attr[key] = toff[pos] + ( win ? 0 : old - $elem.offset()[pos] );
|
||||
if (toff) {// jQuery / DOMElement
|
||||
attr[key] = toff[pos] + ( win ? 0 : old - $elem.offset()[pos] );
|
||||
|
||||
// If it's a dom element, reduce the margin
|
||||
if (settings.margin) {
|
||||
attr[key] -= parseInt(targ.css('margin'+Pos)) || 0;
|
||||
attr[key] -= parseInt(targ.css('border'+Pos+'Width')) || 0;
|
||||
}
|
||||
// If it's a dom element, reduce the margin
|
||||
if (settings.margin) {
|
||||
attr[key] -= parseInt(targ.css('margin'+Pos)) || 0;
|
||||
attr[key] -= parseInt(targ.css('border'+Pos+'Width')) || 0;
|
||||
}
|
||||
|
||||
attr[key] += offset[pos] || 0;
|
||||
attr[key] += offset[pos] || 0;
|
||||
|
||||
if(settings.over[pos])
|
||||
// Scroll to a fraction of its width/height
|
||||
attr[key] += targ[axis=='x'?'width':'height']() * settings.over[pos];
|
||||
} else {
|
||||
var val = targ[pos];
|
||||
// Handle percentage values
|
||||
attr[key] = val.slice && val.slice(-1) == '%' ?
|
||||
parseFloat(val) / 100 * max
|
||||
: val;
|
||||
}
|
||||
if(settings.over[pos])
|
||||
// Scroll to a fraction of its width/height
|
||||
attr[key] += targ[axis=='x'?'width':'height']() * settings.over[pos];
|
||||
} else {
|
||||
var val = targ[pos];
|
||||
// Handle percentage values
|
||||
attr[key] = val.slice && val.slice(-1) == '%' ?
|
||||
parseFloat(val) / 100 * max
|
||||
: val;
|
||||
}
|
||||
|
||||
// Number or 'number'
|
||||
if (settings.limit && /^\d+$/.test(attr[key]))
|
||||
// Check the limits
|
||||
attr[key] = attr[key] <= 0 ? 0 : Math.min( attr[key], max );
|
||||
// Number or 'number'
|
||||
if (settings.limit && /^\d+$/.test(attr[key]))
|
||||
// Check the limits
|
||||
attr[key] = attr[key] <= 0 ? 0 : Math.min( attr[key], max );
|
||||
|
||||
// Queueing axes
|
||||
if (!i && settings.queue) {
|
||||
// Don't waste time animating, if there's no need.
|
||||
if (old != attr[key])
|
||||
// Intermediate animation
|
||||
animate( settings.onAfterFirst );
|
||||
// Don't animate this axis again in the next iteration.
|
||||
delete attr[key];
|
||||
}
|
||||
});
|
||||
// Queueing axes
|
||||
if (!i && settings.queue) {
|
||||
// Don't waste time animating, if there's no need.
|
||||
if (old != attr[key])
|
||||
// Intermediate animation
|
||||
animate( settings.onAfterFirst );
|
||||
// Don't animate this axis again in the next iteration.
|
||||
delete attr[key];
|
||||
}
|
||||
});
|
||||
|
||||
animate( settings.onAfter );
|
||||
animate( settings.onAfter );
|
||||
|
||||
function animate( callback ) {
|
||||
$elem.animate( attr, duration, settings.easing, callback && function() {
|
||||
callback.call(this, targ, settings);
|
||||
});
|
||||
};
|
||||
function animate( callback ) {
|
||||
$elem.animate( attr, duration, settings.easing, callback && function() {
|
||||
callback.call(this, targ, settings);
|
||||
});
|
||||
};
|
||||
|
||||
}).end();
|
||||
};
|
||||
}).end();
|
||||
};
|
||||
|
||||
// Max scrolling position, works on quirks mode
|
||||
// It only fails (not too badly) on IE, quirks mode.
|
||||
$scrollTo.max = function( elem, axis ) {
|
||||
var Dim = axis == 'x' ? 'Width' : 'Height',
|
||||
scroll = 'scroll'+Dim;
|
||||
// Max scrolling position, works on quirks mode
|
||||
// It only fails (not too badly) on IE, quirks mode.
|
||||
$scrollTo.max = function( elem, axis ) {
|
||||
var Dim = axis == 'x' ? 'Width' : 'Height',
|
||||
scroll = 'scroll'+Dim;
|
||||
|
||||
if (!$(elem).is('html,body'))
|
||||
return elem[scroll] - $(elem)[Dim.toLowerCase()]();
|
||||
if (!$(elem).is('html,body'))
|
||||
return elem[scroll] - $(elem)[Dim.toLowerCase()]();
|
||||
|
||||
var size = 'client' + Dim,
|
||||
html = elem.ownerDocument.documentElement,
|
||||
body = elem.ownerDocument.body;
|
||||
var size = 'client' + Dim,
|
||||
html = elem.ownerDocument.documentElement,
|
||||
body = elem.ownerDocument.body;
|
||||
|
||||
return Math.max( html[scroll], body[scroll] )
|
||||
- Math.min( html[size] , body[size] );
|
||||
};
|
||||
return Math.max( html[scroll], body[scroll] )
|
||||
- Math.min( html[size] , body[size] );
|
||||
};
|
||||
|
||||
function both( val ) {
|
||||
return $.isFunction(val) || typeof val == 'object' ? val : { top:val, left:val };
|
||||
};
|
||||
function both( val ) {
|
||||
return $.isFunction(val) || typeof val == 'object' ? val : { top:val, left:val };
|
||||
};
|
||||
|
||||
// AMD requirement
|
||||
return $scrollTo;
|
||||
|
|
|
@ -10,129 +10,129 @@
|
|||
**/
|
||||
|
||||
jQuery.fn.extend({
|
||||
everyTime: function(interval, label, fn, times) {
|
||||
return this.each(function() {
|
||||
jQuery.timer.add(this, interval, label, fn, times);
|
||||
});
|
||||
},
|
||||
oneTime: function(interval, label, fn) {
|
||||
return this.each(function() {
|
||||
jQuery.timer.add(this, interval, label, fn, 1);
|
||||
});
|
||||
},
|
||||
stopTime: function(label, fn) {
|
||||
return this.each(function() {
|
||||
jQuery.timer.remove(this, label, fn);
|
||||
});
|
||||
}
|
||||
everyTime: function(interval, label, fn, times) {
|
||||
return this.each(function() {
|
||||
jQuery.timer.add(this, interval, label, fn, times);
|
||||
});
|
||||
},
|
||||
oneTime: function(interval, label, fn) {
|
||||
return this.each(function() {
|
||||
jQuery.timer.add(this, interval, label, fn, 1);
|
||||
});
|
||||
},
|
||||
stopTime: function(label, fn) {
|
||||
return this.each(function() {
|
||||
jQuery.timer.remove(this, label, fn);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
jQuery.extend({
|
||||
timer: {
|
||||
global: [],
|
||||
guid: 1,
|
||||
dataKey: "jQuery.timer",
|
||||
regex: /^([0-9]+(?:\.[0-9]*)?)\s*(.*s)?$/,
|
||||
powers: {
|
||||
// Yeah this is major overkill...
|
||||
'ms': 1,
|
||||
'cs': 10,
|
||||
'ds': 100,
|
||||
's': 1000,
|
||||
'das': 10000,
|
||||
'hs': 100000,
|
||||
'ks': 1000000
|
||||
},
|
||||
timeParse: function(value) {
|
||||
if (value == undefined || value == null)
|
||||
return null;
|
||||
var result = this.regex.exec(jQuery.trim(value.toString()));
|
||||
if (result[2]) {
|
||||
var num = parseFloat(result[1]);
|
||||
var mult = this.powers[result[2]] || 1;
|
||||
return num * mult;
|
||||
} else {
|
||||
return value;
|
||||
}
|
||||
},
|
||||
add: function(element, interval, label, fn, times) {
|
||||
var counter = 0;
|
||||
timer: {
|
||||
global: [],
|
||||
guid: 1,
|
||||
dataKey: "jQuery.timer",
|
||||
regex: /^([0-9]+(?:\.[0-9]*)?)\s*(.*s)?$/,
|
||||
powers: {
|
||||
// Yeah this is major overkill...
|
||||
'ms': 1,
|
||||
'cs': 10,
|
||||
'ds': 100,
|
||||
's': 1000,
|
||||
'das': 10000,
|
||||
'hs': 100000,
|
||||
'ks': 1000000
|
||||
},
|
||||
timeParse: function(value) {
|
||||
if (value == undefined || value == null)
|
||||
return null;
|
||||
var result = this.regex.exec(jQuery.trim(value.toString()));
|
||||
if (result[2]) {
|
||||
var num = parseFloat(result[1]);
|
||||
var mult = this.powers[result[2]] || 1;
|
||||
return num * mult;
|
||||
} else {
|
||||
return value;
|
||||
}
|
||||
},
|
||||
add: function(element, interval, label, fn, times) {
|
||||
var counter = 0;
|
||||
|
||||
if (jQuery.isFunction(label)) {
|
||||
if (!times)
|
||||
times = fn;
|
||||
fn = label;
|
||||
label = interval;
|
||||
}
|
||||
if (jQuery.isFunction(label)) {
|
||||
if (!times)
|
||||
times = fn;
|
||||
fn = label;
|
||||
label = interval;
|
||||
}
|
||||
|
||||
interval = jQuery.timer.timeParse(interval);
|
||||
interval = jQuery.timer.timeParse(interval);
|
||||
|
||||
if (typeof interval != 'number' || isNaN(interval) || interval < 0)
|
||||
return;
|
||||
if (typeof interval != 'number' || isNaN(interval) || interval < 0)
|
||||
return;
|
||||
|
||||
if (typeof times != 'number' || isNaN(times) || times < 0)
|
||||
times = 0;
|
||||
if (typeof times != 'number' || isNaN(times) || times < 0)
|
||||
times = 0;
|
||||
|
||||
times = times || 0;
|
||||
times = times || 0;
|
||||
|
||||
var timers = jQuery.data(element, this.dataKey) || jQuery.data(element, this.dataKey, {});
|
||||
var timers = jQuery.data(element, this.dataKey) || jQuery.data(element, this.dataKey, {});
|
||||
|
||||
if (!timers[label])
|
||||
timers[label] = {};
|
||||
if (!timers[label])
|
||||
timers[label] = {};
|
||||
|
||||
fn.timerID = fn.timerID || this.guid++;
|
||||
fn.timerID = fn.timerID || this.guid++;
|
||||
|
||||
var handler = function() {
|
||||
if ((++counter > times && times !== 0) || fn.call(element, counter) === false)
|
||||
jQuery.timer.remove(element, label, fn);
|
||||
};
|
||||
var handler = function() {
|
||||
if ((++counter > times && times !== 0) || fn.call(element, counter) === false)
|
||||
jQuery.timer.remove(element, label, fn);
|
||||
};
|
||||
|
||||
handler.timerID = fn.timerID;
|
||||
handler.timerID = fn.timerID;
|
||||
|
||||
if (!timers[label][fn.timerID])
|
||||
timers[label][fn.timerID] = window.setInterval(handler,interval);
|
||||
if (!timers[label][fn.timerID])
|
||||
timers[label][fn.timerID] = window.setInterval(handler,interval);
|
||||
|
||||
this.global.push( element );
|
||||
this.global.push( element );
|
||||
|
||||
},
|
||||
remove: function(element, label, fn) {
|
||||
var timers = jQuery.data(element, this.dataKey), ret;
|
||||
},
|
||||
remove: function(element, label, fn) {
|
||||
var timers = jQuery.data(element, this.dataKey), ret;
|
||||
|
||||
if ( timers ) {
|
||||
if ( timers ) {
|
||||
|
||||
if (!label) {
|
||||
for ( label in timers )
|
||||
this.remove(element, label, fn);
|
||||
} else if ( timers[label] ) {
|
||||
if ( fn ) {
|
||||
if ( fn.timerID ) {
|
||||
window.clearInterval(timers[label][fn.timerID]);
|
||||
delete timers[label][fn.timerID];
|
||||
}
|
||||
} else {
|
||||
for ( var fn in timers[label] ) {
|
||||
window.clearInterval(timers[label][fn]);
|
||||
delete timers[label][fn];
|
||||
}
|
||||
}
|
||||
if (!label) {
|
||||
for ( label in timers )
|
||||
this.remove(element, label, fn);
|
||||
} else if ( timers[label] ) {
|
||||
if ( fn ) {
|
||||
if ( fn.timerID ) {
|
||||
window.clearInterval(timers[label][fn.timerID]);
|
||||
delete timers[label][fn.timerID];
|
||||
}
|
||||
} else {
|
||||
for ( var fn in timers[label] ) {
|
||||
window.clearInterval(timers[label][fn]);
|
||||
delete timers[label][fn];
|
||||
}
|
||||
}
|
||||
|
||||
for ( ret in timers[label] ) break;
|
||||
if ( !ret ) {
|
||||
ret = null;
|
||||
delete timers[label];
|
||||
}
|
||||
}
|
||||
for ( ret in timers[label] ) break;
|
||||
if ( !ret ) {
|
||||
ret = null;
|
||||
delete timers[label];
|
||||
}
|
||||
}
|
||||
|
||||
for ( ret in timers ) break;
|
||||
if ( !ret )
|
||||
jQuery.removeData(element, this.dataKey);
|
||||
}
|
||||
}
|
||||
}
|
||||
for ( ret in timers ) break;
|
||||
if ( !ret )
|
||||
jQuery.removeData(element, this.dataKey);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
jQuery(window).bind("unload", function() {
|
||||
jQuery.each(jQuery.timer.global, function(index, item) {
|
||||
jQuery.timer.remove(item);
|
||||
});
|
||||
jQuery.each(jQuery.timer.global, function(index, item) {
|
||||
jQuery.timer.remove(item);
|
||||
});
|
||||
});
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -77,7 +77,7 @@ XmlHttp.create = function () {
|
|||
}
|
||||
|
||||
// Fallback on JSONP
|
||||
return new jXHR();
|
||||
return new jXHR();
|
||||
}
|
||||
// Might be local-domain?
|
||||
if (window.XMLHttpRequest) {
|
||||
|
@ -86,12 +86,12 @@ XmlHttp.create = function () {
|
|||
// some versions of Moz do not support the readyState property
|
||||
// and the onreadystate event so we patch it!
|
||||
if (req.readyState == null) {
|
||||
req.readyState = 1;
|
||||
req.addEventListener("load", function () {
|
||||
req.readyState = 4;
|
||||
if (typeof req.onreadystatechange == "function")
|
||||
req.onreadystatechange();
|
||||
}, false);
|
||||
req.readyState = 1;
|
||||
req.addEventListener("load", function () {
|
||||
req.readyState = 4;
|
||||
if (typeof req.onreadystatechange == "function")
|
||||
req.onreadystatechange();
|
||||
}, false);
|
||||
}
|
||||
|
||||
return req;
|
||||
|
@ -146,12 +146,12 @@ XmlDocument.create = function (name,ns) {
|
|||
// some versions of Moz do not support the readyState property
|
||||
// and the onreadystate event so we patch it!
|
||||
if (doc.readyState == null) {
|
||||
doc.readyState = 1;
|
||||
doc.addEventListener("load", function () {
|
||||
doc.readyState = 4;
|
||||
if (typeof doc.onreadystatechange == "function")
|
||||
doc.onreadystatechange();
|
||||
}, false);
|
||||
doc.readyState = 1;
|
||||
doc.addEventListener("load", function () {
|
||||
doc.readyState = 4;
|
||||
if (typeof doc.onreadystatechange == "function")
|
||||
doc.onreadystatechange();
|
||||
}, false);
|
||||
}
|
||||
} else if (window.ActiveXObject) {
|
||||
doc = new ActiveXObject(XmlDocument.getPrefix() + ".DomDocument");
|
||||
|
@ -333,7 +333,7 @@ String.prototype.revertHtmlEnc = function() {
|
|||
Date.jab2date = function(ts) {
|
||||
// Timestamp
|
||||
if(!isNaN(ts))
|
||||
return new Date(ts * 1000);
|
||||
return new Date(ts * 1000);
|
||||
|
||||
// Get the UTC date
|
||||
var date = new Date(Date.UTC(ts.substr(0,4),ts.substr(5,2)-1,ts.substr(8,2),ts.substr(11,2),ts.substr(14,2),ts.substr(17,2)));
|
||||
|
@ -361,7 +361,17 @@ Date.hrTime = function(ts) {
|
|||
return Date.jab2date(ts).toLocaleString();
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
/**
|
||||
* Current timestamp.
|
||||
* @return Seconds since 1.1.1970.
|
||||
* @type int
|
||||
*/
|
||||
if (!Date.now) {
|
||||
Date.now = function() { return new Date().getTime(); }
|
||||
}
|
||||
|
||||
/**
|
||||
* somewhat opposit to {@link #hrTime}
|
||||
* expects a javascript Date object as parameter and returns a jabber
|
||||
* date string conforming to
|
||||
|
@ -1195,6 +1205,7 @@ function cnonce(size) {
|
|||
|
||||
JSJAC_HAVEKEYS = true; // whether to use keys
|
||||
JSJAC_NKEYS = 16; // number of keys to generate
|
||||
|
||||
JSJAC_INACTIVITY = 300; // qnd hack to make suspend/resume
|
||||
// work more smoothly with polling
|
||||
JSJAC_ERR_COUNT = 10; // number of retries in case of connection
|
||||
|
@ -1209,11 +1220,19 @@ JSJAC_TIMERVAL = 2000; // default polling interval
|
|||
JSJAC_ALLOW_PLAIN = true; // whether to allow plaintext logins
|
||||
JSJAC_ALLOW_SCRAM = false; // allow usage of SCRAM-SHA-1 authentication; please note that it is quite slow so it is disable by default
|
||||
|
||||
// Options specific to HTTP Binding (BOSH)
|
||||
JSJACHBC_MAX_HOLD = 1; // default for number of connections held by
|
||||
// connection manager
|
||||
JSJACHBC_MAX_WAIT = 20; // default 'wait' param - how long an idle connection
|
||||
// should be held by connection manager
|
||||
JSJAC_RETRYDELAY = 5000; // msecs to wait before trying next
|
||||
// request after error
|
||||
|
||||
JSJAC_REGID_TIMEOUT = 20000; // time in msec until registered
|
||||
// callbacks for ids timeout
|
||||
|
||||
/* Options specific to HTTP Binding (BOSH) */
|
||||
JSJACHBC_MAX_HOLD = 1; // default for number of connctions
|
||||
// held by connection manager
|
||||
|
||||
JSJACHBC_MAX_WAIT = 300; // default 'wait' param - how long an
|
||||
// idle connection should be held by
|
||||
// connection manager
|
||||
|
||||
JSJACHBC_BOSH_VERSION = "1.6";
|
||||
JSJACHBC_USE_BOSH_VER = true;
|
||||
|
@ -1265,7 +1284,7 @@ JSJaCJSON.toString = function (obj) {
|
|||
v = x[i];
|
||||
f = s[typeof v];
|
||||
if (f) {
|
||||
try {
|
||||
try {
|
||||
v = f(v);
|
||||
if (typeof v == 'string') {
|
||||
if (b) {
|
||||
|
@ -1274,8 +1293,8 @@ JSJaCJSON.toString = function (obj) {
|
|||
a[a.length] = v;
|
||||
b = true;
|
||||
}
|
||||
} catch(e) {
|
||||
}
|
||||
} catch(e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
a[a.length] = ']';
|
||||
|
@ -1301,7 +1320,7 @@ JSJaCJSON.toString = function (obj) {
|
|||
v = x[i];
|
||||
f = s[typeof v];
|
||||
if (f) {
|
||||
try {
|
||||
try {
|
||||
v = f(v);
|
||||
if (typeof v == 'string') {
|
||||
if (b) {
|
||||
|
@ -1310,8 +1329,8 @@ JSJaCJSON.toString = function (obj) {
|
|||
a.push(s.string(i), ':', v);
|
||||
b = true;
|
||||
}
|
||||
} catch(e) {
|
||||
}
|
||||
} catch(e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1517,7 +1536,7 @@ JSJaCJID.prototype.clone = function() {
|
|||
*/
|
||||
JSJaCJID.prototype.isEntity = function(jid) {
|
||||
if (typeof jid == 'string')
|
||||
jid = (new JSJaCJID(jid));
|
||||
jid = (new JSJaCJID(jid));
|
||||
jid.removeResource();
|
||||
return (this.clone().removeResource().toString() === jid.toString());
|
||||
};
|
||||
|
@ -2263,7 +2282,7 @@ JSJaCIQ.prototype.setQuery = function(xmlns) {
|
|||
query = this.getDoc().createElementNS(xmlns,'query');
|
||||
} catch (e) {
|
||||
query = this.getDoc().createElement('query');
|
||||
query.setAttribute('xmlns',xmlns);
|
||||
query.setAttribute('xmlns',xmlns);
|
||||
}
|
||||
this.getNode().appendChild(query);
|
||||
return query;
|
||||
|
@ -2965,9 +2984,9 @@ JSJaCConnection.prototype.resumeFromData = function(data) {
|
|||
this._handleEvent('onresume');
|
||||
setTimeout(JSJaC.bind(this._resume, this),this.getPollInterval());
|
||||
this._interval = setInterval(JSJaC.bind(this._checkQueue, this),
|
||||
JSJAC_CHECKQUEUEINTERVAL);
|
||||
JSJAC_CHECKQUEUEINTERVAL);
|
||||
this._inQto = setInterval(JSJaC.bind(this._checkInQ, this),
|
||||
JSJAC_CHECKINQUEUEINTERVAL);
|
||||
JSJAC_CHECKINQUEUEINTERVAL);
|
||||
}
|
||||
|
||||
return (this._connected === true);
|
||||
|
@ -3009,7 +3028,7 @@ JSJaCConnection.prototype.send = function(packet,cb,arg) {
|
|||
|
||||
// remember id for response if callback present
|
||||
if (cb)
|
||||
this._registerPID(packet.getID(),cb,arg);
|
||||
this._registerPID(packet, cb, arg);
|
||||
|
||||
try {
|
||||
this._handleEvent(packet.pType()+'_out', packet);
|
||||
|
@ -3063,7 +3082,7 @@ JSJaCConnection.prototype.sendIQ = function(iq, handlers, arg) {
|
|||
|
||||
/**
|
||||
* Sets polling interval for this connection
|
||||
* @param {int} millisecs Milliseconds to set timer to
|
||||
* @param {int} timerval Milliseconds to set timer to
|
||||
* @return effective interval this connection has been set to
|
||||
* @type int
|
||||
*/
|
||||
|
@ -3502,6 +3521,11 @@ JSJaCConnection.prototype._doXMPPSess = function(iq) {
|
|||
this.fulljid = iq.getChildVal("jid");
|
||||
this.jid = this.fulljid.substring(0,this.fulljid.lastIndexOf('/'));
|
||||
|
||||
if (!this.legacy_sessions) {
|
||||
this._handleEvent('onconnect');
|
||||
return;
|
||||
}
|
||||
|
||||
iq = new JSJaCIQ();
|
||||
iq.setIQ(null,'set','sess_1');
|
||||
iq.appendNode("session", {xmlns: "urn:ietf:params:xml:ns:xmpp-session"},
|
||||
|
@ -3539,8 +3563,8 @@ JSJaCConnection.prototype._handleEvent = function(event,arg) {
|
|||
if (arg) {
|
||||
if (arg.pType) { // it's a packet
|
||||
if ((!arg.getNode().hasChildNodes() && aEvent.childName != '*') ||
|
||||
(arg.getNode().hasChildNodes() &&
|
||||
!arg.getChild(aEvent.childName, aEvent.childNS)))
|
||||
(arg.getNode().hasChildNodes() &&
|
||||
!arg.getChild(aEvent.childName, aEvent.childNS)))
|
||||
continue;
|
||||
if (aEvent.type != '*' &&
|
||||
arg.getType() != aEvent.type)
|
||||
|
@ -3573,29 +3597,39 @@ JSJaCConnection.prototype._handleEvent = function(event,arg) {
|
|||
/**
|
||||
* @private
|
||||
*/
|
||||
JSJaCConnection.prototype._handlePID = function(aJSJaCPacket) {
|
||||
if (!aJSJaCPacket.getID())
|
||||
JSJaCConnection.prototype._handlePID = function(packet) {
|
||||
if (!packet.getID())
|
||||
return false;
|
||||
for (var i in this._regIDs) {
|
||||
if (this._regIDs.hasOwnProperty(i) &&
|
||||
this._regIDs[i] && i == aJSJaCPacket.getID()) {
|
||||
var pID = aJSJaCPacket.getID();
|
||||
this.oDbg.log("handling "+pID,3);
|
||||
try {
|
||||
if (this._regIDs[i].cb.call(this, aJSJaCPacket, this._regIDs[i].arg) === false) {
|
||||
// don't unregister
|
||||
return false;
|
||||
} else {
|
||||
this._unregisterPID(pID);
|
||||
return true;
|
||||
}
|
||||
} catch (e) {
|
||||
// broken handler?
|
||||
this.oDbg.log(e.name+": "+ e.message, 1);
|
||||
this._unregisterPID(pID);
|
||||
|
||||
if (packet.pType() != 'iq' ||
|
||||
(packet.getType() != 'error' && packet.getType() != 'result'))
|
||||
return false;
|
||||
|
||||
var jid = packet.getFrom() || this.jid;
|
||||
|
||||
if (packet.getFrom() == this.domain)
|
||||
jid = this.jid;
|
||||
|
||||
var id = packet.getID();
|
||||
if (this._regIDs[jid] && this._regIDs[jid][id]) {
|
||||
try {
|
||||
this.oDbg.log("handling id "+id,3);
|
||||
var reg = this._regIDs[jid][id];
|
||||
if (reg.cb.call(this, packet, reg.arg) === false) {
|
||||
// don't unregister
|
||||
return false;
|
||||
} else {
|
||||
delete this._regIDs[jid][id];
|
||||
return true;
|
||||
}
|
||||
} catch (e) {
|
||||
// broken handler?
|
||||
this.oDbg.log(e.name+": "+ e.message, 1);
|
||||
delete this._regIDs[jid][id];
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
this.oDbg.log("not handling id '"+id+"' from jid "+jid, 1);
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
@ -3687,6 +3721,12 @@ JSJaCConnection.prototype._parseStreamFeatures = function(doc) {
|
|||
}
|
||||
}
|
||||
|
||||
// Get legacy session capability if available
|
||||
this.legacy_sessions=null;
|
||||
if (doc.getElementsByTagName("session")[0]) {
|
||||
this.legacy_sessions=true;
|
||||
}
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
|
@ -3784,20 +3824,69 @@ JSJaCConnection.prototype._process = function(timerval) {
|
|||
|
||||
/**
|
||||
* @private
|
||||
@param {JSJaCPacket} packet The packet to be sent.
|
||||
@param {function} cb The callback to be called when response is received.
|
||||
@param {any} arg Optional arguments to be passed to 'cb' when executing it.
|
||||
@return Whether registering an ID was successful
|
||||
@type boolean
|
||||
*/
|
||||
JSJaCConnection.prototype._registerPID = function(pID,cb,arg) {
|
||||
if (!pID || !cb)
|
||||
JSJaCConnection.prototype._registerPID = function(packet, cb, arg) {
|
||||
this.oDbg.log("registering id for packet "+packet.xml(), 3);
|
||||
var id = packet.getID();
|
||||
if (!id) {
|
||||
this.oDbg.log("id missing", 1);
|
||||
return false;
|
||||
this._regIDs[pID] = new Object();
|
||||
this._regIDs[pID].cb = cb;
|
||||
if (arg)
|
||||
this._regIDs[pID].arg = arg;
|
||||
this.oDbg.log("registered "+pID,3);
|
||||
}
|
||||
|
||||
if (typeof cb != 'function') {
|
||||
this.oDbg.log("callback is not a function", 1);
|
||||
return false;
|
||||
}
|
||||
|
||||
var jid = packet.getTo() || this.jid;
|
||||
|
||||
if (packet.getTo() == this.domain)
|
||||
jid = this.jid;
|
||||
|
||||
if (!this._regIDs[jid]) {
|
||||
this._regIDs[jid] = {};
|
||||
}
|
||||
|
||||
if (this._regIDs[jid][id] != null) {
|
||||
this.oDbg.log("id already registered: " + id, 1);
|
||||
return false;
|
||||
}
|
||||
this._regIDs[jid][id] = {
|
||||
cb: cb,
|
||||
arg: arg,
|
||||
ts: Date.now()
|
||||
};
|
||||
this.oDbg.log("registered id "+id,3);
|
||||
this._cleanupRegisteredPIDs();
|
||||
return true;
|
||||
};
|
||||
|
||||
/**
|
||||
* partial function binding sendEmpty to callback
|
||||
* @private
|
||||
*/
|
||||
JSJaCConnection.prototype._cleanupRegisteredPIDs = function() {
|
||||
var now = Date.now();
|
||||
for (var jid in this._regIDs) {
|
||||
if (this._regIDs.hasOwnProperty(jid)) {
|
||||
for (var id in this._regIDs[jid]) {
|
||||
if (this._regIDs[jid].hasOwnProperty(id)) {
|
||||
if (this._regIDs[jid][id].ts + JSJAC_REGID_TIMEOUT < now) {
|
||||
this.oDbg.log("deleting registered id '"+id+ "' due to timeout", 1);
|
||||
delete this._regIDs[jid][id];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Partial function binding sendEmpty to callback
|
||||
* @private
|
||||
*/
|
||||
JSJaCConnection.prototype._prepSendEmpty = function(cb, ctx) {
|
||||
|
@ -3862,17 +3951,6 @@ JSJaCConnection.prototype._setStatus = function(status) {
|
|||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
JSJaCConnection.prototype._unregisterPID = function(pID) {
|
||||
if (!this._regIDs[pID])
|
||||
return false;
|
||||
this._regIDs[pID] = null;
|
||||
this.oDbg.log("unregistered "+pID,3);
|
||||
return true;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @fileoverview All stuff related to HTTP Binding
|
||||
|
@ -4240,18 +4318,18 @@ JSJaCHttpBindingConnection.prototype._parseResponse = function(req) {
|
|||
}
|
||||
} catch (e) {
|
||||
this.oDbg.log("XMLHttpRequest error: status not available", 1);
|
||||
this._errcnt++;
|
||||
if (this._errcnt > JSJAC_ERR_COUNT) {
|
||||
// abort
|
||||
this._abort();
|
||||
} else {
|
||||
this._errcnt++;
|
||||
if (this._errcnt > JSJAC_ERR_COUNT) {
|
||||
// abort
|
||||
this._abort();
|
||||
} else {
|
||||
if (this.connected()) {
|
||||
this.oDbg.log("repeating ("+this._errcnt+")",1);
|
||||
this.oDbg.log("repeating ("+this._errcnt+")",1);
|
||||
|
||||
this._setStatus('proto_error_fallback');
|
||||
this._setStatus('proto_error_fallback');
|
||||
|
||||
// schedule next tick
|
||||
setTimeout(JSJaC.bind(this._resume, this),
|
||||
// schedule next tick
|
||||
setTimeout(JSJaC.bind(this._resume, this),
|
||||
this.getPollInterval());
|
||||
}
|
||||
}
|
||||
|
@ -4260,7 +4338,7 @@ JSJaCHttpBindingConnection.prototype._parseResponse = function(req) {
|
|||
|
||||
var body = r.responseXML.documentElement;
|
||||
if (!body || body.tagName != 'body' ||
|
||||
body.namespaceURI != 'http://jabber.org/protocol/httpbind') {
|
||||
body.namespaceURI != 'http://jabber.org/protocol/httpbind') {
|
||||
this.oDbg.log("invalid response:\n" + r.responseText,1);
|
||||
|
||||
clearTimeout(this._timeout); // remove timer
|
||||
|
@ -4273,7 +4351,7 @@ JSJaCHttpBindingConnection.prototype._parseResponse = function(req) {
|
|||
|
||||
this._setStatus('internal_server_error');
|
||||
this._handleEvent('onerror',
|
||||
JSJaCError('500','wait','internal-server-error'));
|
||||
JSJaCError('500','wait','internal-server-error'));
|
||||
|
||||
return null;
|
||||
}
|
||||
|
@ -4841,7 +4919,7 @@ JSJaCWebSocketConnection.prototype.send = function(packet, cb, arg) {
|
|||
}
|
||||
|
||||
// register callback with id
|
||||
this._registerPID(packet.getID(), cb, arg);
|
||||
this._registerPID(packet, cb, arg);
|
||||
}
|
||||
|
||||
try {
|
||||
|
|
|
@ -5,112 +5,112 @@
|
|||
// for http://www.iadvize.com
|
||||
|
||||
(function(global){
|
||||
var SETTIMEOUT = global.setTimeout, // for better compression
|
||||
doc = global.document,
|
||||
callback_counter = 0;
|
||||
var SETTIMEOUT = global.setTimeout, // for better compression
|
||||
doc = global.document,
|
||||
callback_counter = 0;
|
||||
|
||||
global.jXHR = function() {
|
||||
var script_url,
|
||||
script_loaded,
|
||||
jsonp_callback,
|
||||
scriptElem,
|
||||
publicAPI = null;
|
||||
global.jXHR = function() {
|
||||
var script_url,
|
||||
script_loaded,
|
||||
jsonp_callback,
|
||||
scriptElem,
|
||||
publicAPI = null;
|
||||
|
||||
function removeScript() { try { scriptElem.parentNode.removeChild(scriptElem); } catch (err) { } }
|
||||
function removeScript() { try { scriptElem.parentNode.removeChild(scriptElem); } catch (err) { } }
|
||||
|
||||
function reset() {
|
||||
script_loaded = false;
|
||||
script_url = "";
|
||||
removeScript();
|
||||
scriptElem = null;
|
||||
fireReadyStateChange(0);
|
||||
}
|
||||
function reset() {
|
||||
script_loaded = false;
|
||||
script_url = "";
|
||||
removeScript();
|
||||
scriptElem = null;
|
||||
fireReadyStateChange(0);
|
||||
}
|
||||
|
||||
function ThrowError(msg) {
|
||||
try {
|
||||
publicAPI.onerror.call(publicAPI,msg,script_url);
|
||||
} catch (err) {
|
||||
//throw new Error(msg);
|
||||
}
|
||||
}
|
||||
function ThrowError(msg) {
|
||||
try {
|
||||
publicAPI.onerror.call(publicAPI,msg,script_url);
|
||||
} catch (err) {
|
||||
//throw new Error(msg);
|
||||
}
|
||||
}
|
||||
|
||||
function handleScriptLoad() {
|
||||
if ((this.readyState && this.readyState!=="complete" && this.readyState!=="loaded") || script_loaded) { return; }
|
||||
this.onload = this.onreadystatechange = null; // prevent memory leak
|
||||
script_loaded = true;
|
||||
if (publicAPI.readyState !== 4) ThrowError("handleScriptLoad: Script failed to load ["+script_url+"].");
|
||||
removeScript();
|
||||
}
|
||||
function handleScriptLoad() {
|
||||
if ((this.readyState && this.readyState!=="complete" && this.readyState!=="loaded") || script_loaded) { return; }
|
||||
this.onload = this.onreadystatechange = null; // prevent memory leak
|
||||
script_loaded = true;
|
||||
if (publicAPI.readyState !== 4) ThrowError("handleScriptLoad: Script failed to load ["+script_url+"].");
|
||||
removeScript();
|
||||
}
|
||||
|
||||
function parseXMLString(xmlStr) {
|
||||
var xmlDoc = null;
|
||||
if(window.DOMParser) {
|
||||
var parser = new DOMParser();
|
||||
xmlDoc = parser.parseFromString(xmlStr,"text/xml");
|
||||
}
|
||||
else {
|
||||
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
|
||||
xmlDoc.async="false";
|
||||
xmlDoc.loadXML(xmlStr);
|
||||
}
|
||||
return xmlDoc;
|
||||
}
|
||||
function parseXMLString(xmlStr) {
|
||||
var xmlDoc = null;
|
||||
if(window.DOMParser) {
|
||||
var parser = new DOMParser();
|
||||
xmlDoc = parser.parseFromString(xmlStr,"text/xml");
|
||||
}
|
||||
else {
|
||||
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
|
||||
xmlDoc.async="false";
|
||||
xmlDoc.loadXML(xmlStr);
|
||||
}
|
||||
return xmlDoc;
|
||||
}
|
||||
|
||||
function fireReadyStateChange(rs,args) {
|
||||
function fireReadyStateChange(rs,args) {
|
||||
|
||||
args = args || [];
|
||||
publicAPI.readyState = rs;
|
||||
if (rs == 4) {
|
||||
publicAPI.responseText = args[0].reply;
|
||||
publicAPI.responseXML = parseXMLString(args[0].reply);
|
||||
}
|
||||
if (typeof publicAPI.onreadystatechange === "function") publicAPI.onreadystatechange.apply(publicAPI,args);
|
||||
}
|
||||
args = args || [];
|
||||
publicAPI.readyState = rs;
|
||||
if (rs == 4) {
|
||||
publicAPI.responseText = args[0].reply;
|
||||
publicAPI.responseXML = parseXMLString(args[0].reply);
|
||||
}
|
||||
if (typeof publicAPI.onreadystatechange === "function") publicAPI.onreadystatechange.apply(publicAPI,args);
|
||||
}
|
||||
|
||||
publicAPI = {
|
||||
onerror:null,
|
||||
onreadystatechange:null,
|
||||
readyState:0,
|
||||
status:200,
|
||||
responseBody: null,
|
||||
responseText: null,
|
||||
responseXML: null,
|
||||
open:function(method,url){
|
||||
reset();
|
||||
var internal_callback = "cb"+(callback_counter++);
|
||||
(function(icb){
|
||||
global.jXHR[icb] = function() {
|
||||
try { fireReadyStateChange.call(publicAPI,4,arguments); }
|
||||
catch(err) {
|
||||
publicAPI.readyState = -1;
|
||||
ThrowError("Script failed to run ["+script_url+"].");
|
||||
}
|
||||
global.jXHR[icb] = null;
|
||||
};
|
||||
})(internal_callback);
|
||||
script_url = url + '?callback=?jXHR&data=';
|
||||
script_url = script_url.replace(/=\?jXHR/,"=jXHR."+internal_callback);
|
||||
fireReadyStateChange(1);
|
||||
},
|
||||
send:function(data){
|
||||
script_url = script_url + encodeURIComponent(data);
|
||||
SETTIMEOUT(function(){
|
||||
scriptElem = doc.createElement("script");
|
||||
scriptElem.setAttribute("type","text/javascript");
|
||||
scriptElem.onload = scriptElem.onreadystatechange = function(){handleScriptLoad.call(scriptElem);};
|
||||
scriptElem.setAttribute("src",script_url);
|
||||
doc.getElementsByTagName("head")[0].appendChild(scriptElem);
|
||||
},0);
|
||||
fireReadyStateChange(2);
|
||||
},
|
||||
abort:function(){},
|
||||
setRequestHeader:function(){}, // noop
|
||||
getResponseHeader:function(){return "";}, // basically noop
|
||||
getAllResponseHeaders:function(){return [];} // ditto
|
||||
};
|
||||
publicAPI = {
|
||||
onerror:null,
|
||||
onreadystatechange:null,
|
||||
readyState:0,
|
||||
status:200,
|
||||
responseBody: null,
|
||||
responseText: null,
|
||||
responseXML: null,
|
||||
open:function(method,url){
|
||||
reset();
|
||||
var internal_callback = "cb"+(callback_counter++);
|
||||
(function(icb){
|
||||
global.jXHR[icb] = function() {
|
||||
try { fireReadyStateChange.call(publicAPI,4,arguments); }
|
||||
catch(err) {
|
||||
publicAPI.readyState = -1;
|
||||
ThrowError("Script failed to run ["+script_url+"].");
|
||||
}
|
||||
global.jXHR[icb] = null;
|
||||
};
|
||||
})(internal_callback);
|
||||
script_url = url + '?callback=?jXHR&data=';
|
||||
script_url = script_url.replace(/=\?jXHR/,"=jXHR."+internal_callback);
|
||||
fireReadyStateChange(1);
|
||||
},
|
||||
send:function(data){
|
||||
script_url = script_url + encodeURIComponent(data);
|
||||
SETTIMEOUT(function(){
|
||||
scriptElem = doc.createElement("script");
|
||||
scriptElem.setAttribute("type","text/javascript");
|
||||
scriptElem.onload = scriptElem.onreadystatechange = function(){handleScriptLoad.call(scriptElem);};
|
||||
scriptElem.setAttribute("src",script_url);
|
||||
doc.getElementsByTagName("head")[0].appendChild(scriptElem);
|
||||
},0);
|
||||
fireReadyStateChange(2);
|
||||
},
|
||||
abort:function(){},
|
||||
setRequestHeader:function(){}, // noop
|
||||
getResponseHeader:function(){return "";}, // basically noop
|
||||
getAllResponseHeaders:function(){return [];} // ditto
|
||||
};
|
||||
|
||||
reset();
|
||||
reset();
|
||||
|
||||
return publicAPI;
|
||||
};
|
||||
return publicAPI;
|
||||
};
|
||||
})(window);
|
||||
|
|
|
@ -38,7 +38,7 @@ var MAM = (function () {
|
|||
self.msg_queue = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Gets the MAM configuration
|
||||
* @public
|
||||
* @return {undefined}
|
||||
|
@ -210,7 +210,7 @@ var MAM = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Handles the MAM configuration
|
||||
* @public
|
||||
* @param {object} iq
|
||||
|
|
|
@ -20,7 +20,7 @@ var Me = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Opens the Me tools
|
||||
* @public
|
||||
* @return {undefined}
|
||||
|
|
|
@ -20,7 +20,7 @@ var Message = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Handles the incoming message packets
|
||||
* @public
|
||||
* @param {object} message
|
||||
|
@ -392,8 +392,9 @@ var Message = (function () {
|
|||
var html_escape = true;
|
||||
|
||||
// IE bug fix
|
||||
if((BrowserDetect.browser == 'Explorer') && (BrowserDetect.version < 9))
|
||||
if((BrowserDetect.browser == 'Explorer') && (BrowserDetect.version < 9)) {
|
||||
xHTML = 0;
|
||||
}
|
||||
|
||||
//If this is a xHTML message
|
||||
if(xHTML) {
|
||||
|
@ -411,12 +412,14 @@ var Message = (function () {
|
|||
var message_type = 'user-message';
|
||||
|
||||
// This is an old message
|
||||
if(delay && resource)
|
||||
if(delay && resource) {
|
||||
message_type = 'old-message';
|
||||
}
|
||||
|
||||
// This is a system message
|
||||
else if(!resource)
|
||||
else if(!resource) {
|
||||
message_type = 'system-message';
|
||||
}
|
||||
|
||||
var nickQuote = '';
|
||||
|
||||
|
@ -442,8 +445,9 @@ var Message = (function () {
|
|||
Interface.messageNotify(hash, 'unread');
|
||||
|
||||
// Play sound to all users in the MUC, except user who sent the message.
|
||||
if(myNick != resource)
|
||||
if(myNick != resource) {
|
||||
Audio.play('receive-message');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -462,10 +466,11 @@ var Message = (function () {
|
|||
Receipts.sendReceived(type, from, id);
|
||||
|
||||
// It does not come from a groupchat user, get the full name
|
||||
if(!GCUser)
|
||||
if(!GCUser) {
|
||||
fromName = Name.getBuddy(xid);
|
||||
else
|
||||
} else {
|
||||
chatType = 'private';
|
||||
}
|
||||
|
||||
// If the chat isn't yet opened, open it !
|
||||
if(!Common.exists('#' + hash)) {
|
||||
|
|
|
@ -20,7 +20,7 @@ var Microblog = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Completes arrays of an entry's attached files
|
||||
* @public
|
||||
* @param {string} selector
|
||||
|
@ -515,7 +515,7 @@ var Microblog = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Gets a given microblog comments node
|
||||
* @public
|
||||
* @param {string} server
|
||||
|
@ -930,7 +930,7 @@ var Microblog = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Adapts the comment elements width
|
||||
* @public
|
||||
* @param {string} id
|
||||
|
@ -1085,7 +1085,7 @@ var Microblog = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Handles the user's microblog to create it in case of error
|
||||
* @public
|
||||
* @param {object} iq
|
||||
|
@ -1199,7 +1199,7 @@ var Microblog = (function () {
|
|||
// Create a new individual channel
|
||||
$('#channel .content.mixed').after(
|
||||
'<div class="content individual microblog-' + hash + '">' +
|
||||
'<a href="#" class="more home-images" onclick="if($(\'#channel .footer div.fetch\').is(\':hidden\')) { return self.get(\'' + Utils.encodeOnclick(xid) + '\', \'' + Utils.encodeOnclick(hash) + '\'); } return false;">' + Common._e("More notices...") + '</a>' +
|
||||
'<a href="#" class="more home-images" onclick="if($(\'#channel .footer div.fetch\').is(\':hidden\')) { return Microblog.get(\'' + Utils.encodeOnclick(xid) + '\', \'' + Utils.encodeOnclick(hash) + '\'); } return false;">' + Common._e("More notices...") + '</a>' +
|
||||
'</div>'
|
||||
)
|
||||
|
||||
|
@ -1283,7 +1283,7 @@ var Microblog = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Gets the microblog configuration
|
||||
* @public
|
||||
* @return {undefined}
|
||||
|
@ -1455,7 +1455,7 @@ var Microblog = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Publishes a given microblog item
|
||||
* @public
|
||||
* @param {type} body
|
||||
|
|
|
@ -11,39 +11,39 @@ Authors: Valérian Saliou, hunterjm, Camaran, regilero, Kloadut, Maranda
|
|||
*/
|
||||
|
||||
// Jappix Mini globals
|
||||
var MINI_DISCONNECT = false;
|
||||
var MINI_AUTOCONNECT = false;
|
||||
var MINI_SHOWPANE = false;
|
||||
var MINI_INITIALIZED = false;
|
||||
var MINI_ROSTER_INIT = false;
|
||||
var MINI_DISCONNECT = false;
|
||||
var MINI_AUTOCONNECT = false;
|
||||
var MINI_SHOWPANE = false;
|
||||
var MINI_INITIALIZED = false;
|
||||
var MINI_ROSTER_INIT = false;
|
||||
var MINI_ROSTER_NOGROUP = 'jm_nogroup';
|
||||
var MINI_ANONYMOUS = false;
|
||||
var MINI_ANIMATE = false;
|
||||
var MINI_RANDNICK = false;
|
||||
var MINI_GROUPCHAT_PRESENCE = false;
|
||||
var MINI_DISABLE_MOBILE = false;
|
||||
var MINI_NICKNAME = '';
|
||||
var MINI_TITLE = null;
|
||||
var MINI_DOMAIN = null;
|
||||
var MINI_USER = null;
|
||||
var MINI_PASSWORD = null;
|
||||
var MINI_HASH = null;
|
||||
var MINI_ACTIVE = null;
|
||||
var MINI_RECONNECT = 0;
|
||||
var MINI_RECONNECT_MAX = 100;
|
||||
var MINI_ANONYMOUS = false;
|
||||
var MINI_ANIMATE = false;
|
||||
var MINI_RANDNICK = false;
|
||||
var MINI_GROUPCHAT_PRESENCE = false;
|
||||
var MINI_DISABLE_MOBILE = false;
|
||||
var MINI_NICKNAME = '';
|
||||
var MINI_TITLE = null;
|
||||
var MINI_DOMAIN = null;
|
||||
var MINI_USER = null;
|
||||
var MINI_PASSWORD = null;
|
||||
var MINI_HASH = null;
|
||||
var MINI_ACTIVE = null;
|
||||
var MINI_RECONNECT = 0;
|
||||
var MINI_RECONNECT_MAX = 100;
|
||||
var MINI_RECONNECT_INTERVAL = 1;
|
||||
var MINI_PIXEL_STREAM_DURATION = 300;
|
||||
var MINI_PIXEL_STREAM_INTERVAL = 7200;
|
||||
var MINI_QUEUE = [];
|
||||
var MINI_CHATS = [];
|
||||
var MINI_GROUPCHATS = [];
|
||||
var MINI_SUGGEST_CHATS = [];
|
||||
var MINI_SUGGEST_GROUPCHATS = [];
|
||||
var MINI_SUGGEST_PASSWORDS = [];
|
||||
var MINI_PASSWORDS = [];
|
||||
var MINI_PRIORITY = 1;
|
||||
var MINI_RESOURCE = JAPPIX_RESOURCE + ' Mini';
|
||||
var MINI_ERROR_LINK = 'https://mini.jappix.com/issues';
|
||||
var MINI_QUEUE = [];
|
||||
var MINI_CHATS = [];
|
||||
var MINI_GROUPCHATS = [];
|
||||
var MINI_SUGGEST_CHATS = [];
|
||||
var MINI_SUGGEST_GROUPCHATS = [];
|
||||
var MINI_SUGGEST_PASSWORDS = [];
|
||||
var MINI_PASSWORDS = [];
|
||||
var MINI_PRIORITY = 1;
|
||||
var MINI_RESOURCE = JAPPIX_RESOURCE + ' Mini';
|
||||
var MINI_ERROR_LINK = 'https://mini.jappix.com/issues';
|
||||
|
||||
|
||||
// Bundle
|
||||
|
@ -56,7 +56,7 @@ var JappixMini = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Setups connection handlers
|
||||
* @public
|
||||
* @param {object} con
|
||||
|
@ -298,7 +298,7 @@ var JappixMini = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Flushes Jappix Mini storage database
|
||||
* @public
|
||||
* @param {string} r_override
|
||||
|
@ -604,7 +604,7 @@ var JappixMini = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Handles the incoming IQs
|
||||
* @public
|
||||
* @param {object} iq
|
||||
|
@ -843,7 +843,7 @@ var JappixMini = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Removes a given presence resource for an user
|
||||
* @public
|
||||
* @param {string} xid
|
||||
|
@ -1174,7 +1174,7 @@ var JappixMini = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Updates the user presence
|
||||
* @public
|
||||
* @param {string} type
|
||||
|
@ -1371,7 +1371,7 @@ var JappixMini = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Unserializes and update the queue storage
|
||||
* @public
|
||||
* @return {undefined}
|
||||
|
@ -1526,7 +1526,7 @@ var JappixMini = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Clears the notifications
|
||||
* @public
|
||||
* @param {string} hash
|
||||
|
@ -2431,7 +2431,7 @@ var JappixMini = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Buddy events
|
||||
* @public
|
||||
* @param {string} path
|
||||
|
@ -2745,7 +2745,7 @@ var JappixMini = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Returns the prompt value
|
||||
* @public
|
||||
* @return {string}
|
||||
|
@ -3159,7 +3159,7 @@ var JappixMini = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Shows the roster
|
||||
* @public
|
||||
* @return {undefined}
|
||||
|
@ -3363,7 +3363,7 @@ var JappixMini = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Displays a roster buddy
|
||||
* @public
|
||||
* @param {string} xid
|
||||
|
@ -3654,7 +3654,7 @@ var JappixMini = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Adapts the roster height to the window
|
||||
* @public
|
||||
* @return {undefined}
|
||||
|
@ -3861,7 +3861,7 @@ var JappixMini = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Adds the chatstate events
|
||||
* @public
|
||||
* @param {string} xid
|
||||
|
|
|
@ -20,7 +20,7 @@ var Mobile = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Proceeds connection
|
||||
* @public
|
||||
* @param {object} aForm
|
||||
|
@ -207,7 +207,7 @@ var Mobile = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Resets DOM to its initial state
|
||||
* @public
|
||||
* @return {undefined}
|
||||
|
@ -286,7 +286,7 @@ var Mobile = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Handles message stanza
|
||||
* @public
|
||||
* @param {object} msg
|
||||
|
@ -504,7 +504,7 @@ var Mobile = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Handles disconnected state
|
||||
* @public
|
||||
* @return {undefined}
|
||||
|
@ -664,7 +664,7 @@ var Mobile = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Gets user nick (the dumb way)
|
||||
* @public
|
||||
* @param {string} xid
|
||||
|
@ -770,7 +770,7 @@ var Mobile = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Gets the host part of a XID
|
||||
* @public
|
||||
* @param {string} aXID
|
||||
|
@ -899,7 +899,7 @@ var Mobile = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Creates given chat
|
||||
* @public
|
||||
* @param {string} xid
|
||||
|
|
|
@ -20,7 +20,7 @@ var MUCAdmin = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Opens the MUC admin popup
|
||||
* @public
|
||||
* @param {string} xid
|
||||
|
@ -251,7 +251,7 @@ var MUCAdmin = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Handles the MUC admin form
|
||||
* @public
|
||||
* @param {object} iq
|
||||
|
@ -449,7 +449,7 @@ var MUCAdmin = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Destroys a MUC room
|
||||
* @public
|
||||
* @param {string} xid
|
||||
|
|
|
@ -20,7 +20,7 @@ var Music = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Opens the music bubble
|
||||
* @public
|
||||
* @return {boolean}
|
||||
|
@ -281,7 +281,7 @@ var Music = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Adds a music title to the results
|
||||
* @public
|
||||
* @param {string} id
|
||||
|
|
|
@ -20,7 +20,7 @@ var Name = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Gets an user name for buddy add tool
|
||||
* @public
|
||||
* @param {string} xid
|
||||
|
@ -181,7 +181,7 @@ var Name = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Gets the full name of the user
|
||||
* @public
|
||||
* @return {string}
|
||||
|
|
|
@ -20,7 +20,7 @@ var Notification = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Resets the notifications alert if no one remaining
|
||||
* @public
|
||||
* @return {undefined}
|
||||
|
@ -405,7 +405,7 @@ var Notification = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Gets the pending social notifications
|
||||
* @public
|
||||
* @return {undefined}
|
||||
|
@ -588,7 +588,7 @@ var Notification = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Adapt the notifications bubble max-height
|
||||
* @public
|
||||
* @return {undefined}
|
||||
|
|
|
@ -20,7 +20,7 @@ var OOB = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Sends an OOB request to someone
|
||||
* @public
|
||||
* @param {string} to
|
||||
|
|
|
@ -20,7 +20,7 @@ var Options = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Opens the options popup
|
||||
* @public
|
||||
* @return {boolean}
|
||||
|
@ -315,7 +315,7 @@ var Options = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Sends the options to the XMPP server
|
||||
* @public
|
||||
* @return {undefined}
|
||||
|
@ -559,7 +559,7 @@ var Options = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Handles the account deletion request
|
||||
* @public
|
||||
* @param {object} iq
|
||||
|
@ -747,7 +747,7 @@ var Options = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Loads the user options
|
||||
* @public
|
||||
* @return {undefined}
|
||||
|
|
|
@ -20,7 +20,7 @@ var PEP = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Stores the PEP items
|
||||
* @public
|
||||
* @param {string} xid
|
||||
|
@ -549,7 +549,7 @@ var PEP = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Sends the user's activity
|
||||
* @public
|
||||
* @param {string} main
|
||||
|
@ -777,7 +777,7 @@ var PEP = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Geolocates the user
|
||||
* @public
|
||||
* @return {undefined}
|
||||
|
@ -809,7 +809,7 @@ var PEP = (function () {
|
|||
|
||||
|
||||
/**
|
||||
* Gets the user's microblog to check it exists
|
||||
* Gets the user's geolocation to check it exists
|
||||
* @public
|
||||
* @return {undefined}
|
||||
*/
|
||||
|
@ -833,7 +833,7 @@ var PEP = (function () {
|
|||
|
||||
|
||||
/**
|
||||
* Handles the user's microblog to create it in case of error
|
||||
* Handles the user's geolocation to create note in case of error
|
||||
* @public
|
||||
* @param {object} iq
|
||||
* @return {undefined}
|
||||
|
|
|
@ -20,7 +20,7 @@ var Popup = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Creates a popup code
|
||||
* @public
|
||||
* @param {string} id
|
||||
|
|
|
@ -25,7 +25,7 @@ var Presence = (function () {
|
|||
self.auto_idle = false;
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Sends the user first presence
|
||||
* @public
|
||||
* @param {string} checksum
|
||||
|
@ -753,7 +753,7 @@ var Presence = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Process the chat presence position
|
||||
* @public
|
||||
* @param {string} hash
|
||||
|
@ -997,7 +997,7 @@ var Presence = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Returns the highest presence priority XID for an user
|
||||
* @public
|
||||
* @param {string} xid
|
||||
|
@ -1130,7 +1130,7 @@ var Presence = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Makes something easy to process for the presence IA
|
||||
* @public
|
||||
* @param {string} xid
|
||||
|
@ -1356,7 +1356,7 @@ var Presence = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Accepts the subscription from another entity
|
||||
* @public
|
||||
* @param {string} xid
|
||||
|
@ -1526,7 +1526,7 @@ var Presence = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Gets the user presence show
|
||||
* @public
|
||||
* @return {string}
|
||||
|
|
|
@ -20,7 +20,7 @@ var Privacy = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Opens the privacy popup
|
||||
* @public
|
||||
* @return {boolean}
|
||||
|
@ -243,7 +243,7 @@ var Privacy = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Gets privacy lists
|
||||
* @public
|
||||
* @param {object} list
|
||||
|
@ -536,7 +536,7 @@ var Privacy = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Checks the privacy status (action) of a value
|
||||
* @public
|
||||
* @param {string} list
|
||||
|
@ -844,7 +844,7 @@ var Privacy = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Clears the privacy list form
|
||||
* @public
|
||||
* @return {undefined}
|
||||
|
|
|
@ -20,7 +20,7 @@ var Receipts = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Checks if we can send a receipt request
|
||||
* @public
|
||||
* @param {string} hash
|
||||
|
@ -158,7 +158,7 @@ var Receipts = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Checks if the message has been received
|
||||
* @public
|
||||
* @param {string} hash
|
||||
|
|
|
@ -24,7 +24,7 @@ var Roster = (function () {
|
|||
self.blist_all = false;
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Gets the roster items
|
||||
* @public
|
||||
* @return {undefined}
|
||||
|
@ -66,7 +66,10 @@ var Roster = (function () {
|
|||
|
||||
// Request user microblog (populates channel)
|
||||
if(user_xid && ((user_subscription == 'both') || (user_subscription == 'to'))) {
|
||||
Microblog.request(user_xid, 1, null, Microblog.handleRoster);
|
||||
// Openfire has an issue, forget about it!
|
||||
if(Features.getServerName() != 'openfire') {
|
||||
Microblog.request(user_xid, 1, null, Microblog.handleRoster);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -316,7 +319,7 @@ var Roster = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Applies the buddy editing input events
|
||||
* @public
|
||||
* @param {string} xid
|
||||
|
@ -704,7 +707,7 @@ var Roster = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Gets an array of all the groups in the roster
|
||||
* @public
|
||||
* @param {type} name
|
||||
|
@ -945,7 +948,7 @@ var Roster = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Gets all the buddies in our roster
|
||||
* @public
|
||||
* @return {object}
|
||||
|
|
|
@ -20,7 +20,7 @@ var RosterX = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Opens the rosterx tools
|
||||
* @public
|
||||
* @param {string} data
|
||||
|
@ -238,7 +238,7 @@ var RosterX = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Plugin launcher
|
||||
* @public
|
||||
* @return {undefined}
|
||||
|
|
|
@ -24,7 +24,7 @@ var Search = (function () {
|
|||
self.search_filtered = false;
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Searches in the user's buddy list
|
||||
* @public
|
||||
* @param {string} query
|
||||
|
|
|
@ -20,7 +20,7 @@ var Smileys = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Generates the correct HTML code for an emoticon insertion tool
|
||||
* @public
|
||||
* @param {string} smiley
|
||||
|
|
|
@ -20,7 +20,7 @@ var Talk = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Creates the talkpage events
|
||||
* @public
|
||||
* @return {undefined}
|
||||
|
|
|
@ -20,7 +20,7 @@ var Tooltip = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Creates a tooltip code
|
||||
* @public
|
||||
* @param {string} xid
|
||||
|
|
|
@ -20,7 +20,7 @@ var UserInfos = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Opens the user-infos popup
|
||||
* @public
|
||||
* @param {string} xid
|
||||
|
@ -263,7 +263,7 @@ var UserInfos = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Displays the buddy comments
|
||||
* @public
|
||||
* @param {string} xid
|
||||
|
@ -463,7 +463,7 @@ var UserInfos = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Sends the buddy comments
|
||||
* @public
|
||||
* @return {boolean}
|
||||
|
|
|
@ -85,7 +85,7 @@ var Utils = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Truncates a string
|
||||
* @public
|
||||
* @param {string} string
|
||||
|
@ -181,7 +181,7 @@ var Utils = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Checks if this is a private chat user
|
||||
* @public
|
||||
* @param {string} xid
|
||||
|
@ -303,7 +303,7 @@ var Utils = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Gets the password of the user
|
||||
* @public
|
||||
* @return {string}
|
||||
|
@ -321,17 +321,22 @@ var Utils = (function () {
|
|||
|
||||
|
||||
/**
|
||||
* Quotes the nick of an user
|
||||
* Quotes the nick of an user. If a message is given, the nick is inserted at its end.
|
||||
* @public
|
||||
* @param {string} hash
|
||||
* @param {string} nick
|
||||
* @param {string} message
|
||||
* @return {undefined}
|
||||
*/
|
||||
self.quoteMyNick = function(hash, nick) {
|
||||
self.quoteMyNick = function(hash, nick, message) {
|
||||
|
||||
try {
|
||||
$(document).oneTime(10, function() {
|
||||
$('#page-engine #' + hash + ' .message-area').val(nick + ', ').focus();
|
||||
if (message === undefined || message.length === 0) {
|
||||
$('#page-engine #' + hash + ' .message-area').val(nick + ', ').focus();
|
||||
} else {
|
||||
$('#page-engine #' + hash + ' .message-area').val(message + nick).focus();
|
||||
}
|
||||
});
|
||||
} catch(e) {
|
||||
Console.error('Utils.quoteMyNick', e);
|
||||
|
@ -551,7 +556,7 @@ var Utils = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Removes a value from an array
|
||||
* @public
|
||||
* @param {object} array
|
||||
|
|
|
@ -20,7 +20,7 @@ var vCard = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Opens the vCard popup
|
||||
* @public
|
||||
* @return {boolean}
|
||||
|
@ -294,7 +294,7 @@ var vCard = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Deletes the encoded avatar of an user
|
||||
* @public
|
||||
* @return {boolean}
|
||||
|
@ -428,7 +428,7 @@ var vCard = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Handles a vCard stanza
|
||||
* @public
|
||||
* @param {object} iq
|
||||
|
|
|
@ -24,7 +24,7 @@ var Welcome = (function () {
|
|||
self.is_done = false;
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Opens the welcome tools
|
||||
* @public
|
||||
* @return {undefined}
|
||||
|
@ -324,7 +324,7 @@ var Welcome = (function () {
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Goes to the next welcome step
|
||||
* @public
|
||||
* @return {boolean}
|
||||
|
|
|
@ -20,7 +20,7 @@ var XMPPLinks = (function () {
|
|||
var self = {};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Does an action with the provided XMPP link
|
||||
* @public
|
||||
* @param {string} link
|
||||
|
|
|
@ -11,19 +11,19 @@ Author: Valérian Saliou
|
|||
*/
|
||||
|
||||
#adhoc .content {
|
||||
padding: 10px 0 10px 0;
|
||||
padding: 10px 0 10px 0;
|
||||
}
|
||||
|
||||
#adhoc .adhoc-head {
|
||||
background-color: #f1f6fd;
|
||||
border: 1px #9dc4fc solid;
|
||||
width: 598px;
|
||||
height: 18px;
|
||||
font-size: 0.9em;
|
||||
margin: 0 10px 12px 10px;
|
||||
padding: 6px 10px;
|
||||
background-color: #f1f6fd;
|
||||
border: 1px #9dc4fc solid;
|
||||
width: 598px;
|
||||
height: 18px;
|
||||
font-size: 0.9em;
|
||||
margin: 0 10px 12px 10px;
|
||||
padding: 6px 10px;
|
||||
}
|
||||
|
||||
#adhoc .one-actions .one-button {
|
||||
float: right;
|
||||
float: right;
|
||||
}
|
|
@ -11,19 +11,19 @@ Author: Valérian Saliou
|
|||
*/
|
||||
|
||||
#top-content {
|
||||
min-width: 500px !important;
|
||||
min-width: 500px !important;
|
||||
}
|
||||
|
||||
#main-content {
|
||||
min-width: 490px !important;
|
||||
min-height: 450px !important;
|
||||
min-width: 490px !important;
|
||||
min-height: 450px !important;
|
||||
}
|
||||
|
||||
#left-content {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
|
||||
#right-content {
|
||||
left: 0 !important;
|
||||
right: 0 !important;
|
||||
left: 0 !important;
|
||||
right: 0 !important;
|
||||
}
|
||||
|
|
|
@ -11,36 +11,36 @@ Author: Valérian Saliou
|
|||
*/
|
||||
|
||||
#board .one-board {
|
||||
display: none;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 20px;
|
||||
z-index: 10000;
|
||||
font-size: 0.92em;
|
||||
padding: 6px 8px 5px 8px;
|
||||
-moz-box-shadow: 0 0 8px #5c5c5c;
|
||||
-webkit-box-shadow: 0 0 8px #5c5c5c;
|
||||
box-shadow: 0 0 8px #5c5c5c;
|
||||
display: none;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 20px;
|
||||
z-index: 10000;
|
||||
font-size: 0.92em;
|
||||
padding: 6px 8px 5px 8px;
|
||||
-moz-box-shadow: 0 0 8px #5c5c5c;
|
||||
-webkit-box-shadow: 0 0 8px #5c5c5c;
|
||||
box-shadow: 0 0 8px #5c5c5c;
|
||||
}
|
||||
|
||||
#board .one-board:hover {
|
||||
cursor: pointer;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#board .one-board.visible {
|
||||
display: block;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#board .one-board.error {
|
||||
background-color: rgb(241,160,160);
|
||||
background-color: rgba(241,160,160,0.9);
|
||||
color: #420c0c;
|
||||
background-color: rgb(241,160,160);
|
||||
background-color: rgba(241,160,160,0.9);
|
||||
color: #420c0c;
|
||||
}
|
||||
|
||||
#board .one-board.info {
|
||||
background-color: rgb(248,246,186);
|
||||
background-color: rgba(248,246,186,0.9);
|
||||
color: #2f2a02;
|
||||
background-color: rgb(248,246,186);
|
||||
background-color: rgba(248,246,186,0.9);
|
||||
color: #2f2a02;
|
||||
}
|
||||
|
|
|
@ -11,636 +11,636 @@ Author: Valérian Saliou
|
|||
*/
|
||||
|
||||
#channel .top div.update {
|
||||
position: absolute;
|
||||
top: 12px;
|
||||
left: 115px;
|
||||
right: 15px;
|
||||
bottom: 15px;
|
||||
-moz-border-radius: 20px;
|
||||
-webkit-border-radius: 20px;
|
||||
border-radius: 20px;
|
||||
position: absolute;
|
||||
top: 12px;
|
||||
left: 115px;
|
||||
right: 15px;
|
||||
bottom: 15px;
|
||||
-moz-border-radius: 20px;
|
||||
-webkit-border-radius: 20px;
|
||||
border-radius: 20px;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #channel .top div.update {
|
||||
right: 115px;
|
||||
left: 15px;
|
||||
right: 115px;
|
||||
left: 15px;
|
||||
}
|
||||
|
||||
#channel .top p {
|
||||
font-size: 0.9em;
|
||||
margin-bottom: 10px;
|
||||
font-size: 0.9em;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
#channel .top h2 {
|
||||
font-size: 1.5em;
|
||||
margin-bottom: 10px;
|
||||
color: #232323;
|
||||
font-size: 1.5em;
|
||||
margin-bottom: 10px;
|
||||
color: #232323;
|
||||
}
|
||||
|
||||
#channel .top a {
|
||||
font-size: 0.9em;
|
||||
color: #232323;
|
||||
font-size: 0.9em;
|
||||
color: #232323;
|
||||
}
|
||||
|
||||
#channel .top.individual div.update {
|
||||
right: 36px;
|
||||
right: 36px;
|
||||
}
|
||||
|
||||
#channel .top.individual div.shortcuts,
|
||||
#userinfos .main-infos div.shortcuts {
|
||||
width: 16px;
|
||||
float: right;
|
||||
width: 16px;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#channel .top.individual div.shortcuts {
|
||||
margin: 2px 5px 0 0;
|
||||
margin: 2px 5px 0 0;
|
||||
}
|
||||
|
||||
#channel .top.individual div.shortcuts a,
|
||||
#userinfos .main-infos div.shortcuts a {
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
margin-bottom: 4px;
|
||||
display: block;
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
margin-bottom: 4px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#channel .top.individual div.shortcuts a.message,
|
||||
#userinfos .main-infos a.message {
|
||||
background-position: 0 -1717px;
|
||||
background-position: 0 -1717px;
|
||||
}
|
||||
|
||||
#channel .top.individual div.shortcuts a.chat,
|
||||
#userinfos .main-infos a.chat {
|
||||
background-position: 0 -1737px;
|
||||
background-position: 0 -1737px;
|
||||
}
|
||||
|
||||
#channel .top.individual div.shortcuts a.command,
|
||||
#userinfos .main-infos a.command {
|
||||
background-position: 0 -1758px;
|
||||
background-position: 0 -1758px;
|
||||
}
|
||||
|
||||
#channel .microblog-body {
|
||||
height: 20px;
|
||||
margin-right: 50px;
|
||||
height: 20px;
|
||||
margin-right: 50px;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #channel .microblog-body {
|
||||
margin-right: auto;
|
||||
margin-left: 50px;
|
||||
margin-right: auto;
|
||||
margin-left: 50px;
|
||||
}
|
||||
|
||||
#channel .microblog-body input {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 8px;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
#channel .one-microblog-icon {
|
||||
position: absolute;
|
||||
top: 38px;
|
||||
right: 0;
|
||||
position: absolute;
|
||||
top: 38px;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #channel .one-microblog-icon {
|
||||
left: 0;
|
||||
right: auto;
|
||||
left: 0;
|
||||
right: auto;
|
||||
}
|
||||
|
||||
#channel div.update .one-microblog-icon,
|
||||
#channel div.update .postit {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
display: block;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#channel div.update .attach {
|
||||
background-position: 0 -79px;
|
||||
display: none;
|
||||
background-position: 0 -79px;
|
||||
display: none;
|
||||
}
|
||||
|
||||
#attach {
|
||||
position: absolute;
|
||||
width: 263px;
|
||||
margin-left: -227px;
|
||||
color: white;
|
||||
font-size: 0.85em;
|
||||
z-index: 9998;
|
||||
text-align: left;
|
||||
display: none;
|
||||
position: absolute;
|
||||
width: 263px;
|
||||
margin-left: -227px;
|
||||
color: white;
|
||||
font-size: 0.85em;
|
||||
z-index: 9998;
|
||||
text-align: left;
|
||||
display: none;
|
||||
}
|
||||
|
||||
#attach p {
|
||||
margin-bottom: 6px !important;
|
||||
margin-bottom: 6px !important;
|
||||
}
|
||||
|
||||
#attach input[type="submit"] {
|
||||
margin: 8px 0 6px 0;
|
||||
margin: 8px 0 6px 0;
|
||||
}
|
||||
|
||||
#attach .wait {
|
||||
float: right;
|
||||
margin: 7px 5px;
|
||||
float: right;
|
||||
margin: 7px 5px;
|
||||
}
|
||||
|
||||
#attach div.one-file {
|
||||
height: 16px;
|
||||
margin-top: 2px;
|
||||
height: 16px;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
#attach div.one-file a.link {
|
||||
color: white;
|
||||
width: 215px;
|
||||
height: 14px;
|
||||
margin-left: 2px;
|
||||
overflow: hidden;
|
||||
float: left;
|
||||
color: white;
|
||||
width: 215px;
|
||||
height: 14px;
|
||||
margin-left: 2px;
|
||||
overflow: hidden;
|
||||
float: left;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #attach div.one-file a.link {
|
||||
text-align: right;
|
||||
margin-left: auto;
|
||||
margin-right: 2px;
|
||||
float: right;
|
||||
text-align: right;
|
||||
margin-left: auto;
|
||||
margin-right: 2px;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#attach div.one-file a.remove {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
float: left;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #attach div.one-file a.remove {
|
||||
float: right;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.attach-subarrow {
|
||||
background-position: 0 -241px;
|
||||
opacity: 0.8;
|
||||
height: 10px;
|
||||
width: 18px;
|
||||
margin-left: 226px;
|
||||
background-position: 0 -241px;
|
||||
opacity: 0.8;
|
||||
height: 10px;
|
||||
width: 18px;
|
||||
margin-left: 226px;
|
||||
}
|
||||
|
||||
.attach-subitem {
|
||||
background-color: rgb(0,0,0);
|
||||
background-color: rgba(0,0,0,0.8);
|
||||
padding: 10px;
|
||||
text-shadow: 0 1px 1px black;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
background-color: rgb(0,0,0);
|
||||
background-color: rgba(0,0,0,0.8);
|
||||
padding: 10px;
|
||||
text-shadow: 0 1px 1px black;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
html[dir="rtl"] .attach-subitem {
|
||||
position: absolute;
|
||||
left: 238px;
|
||||
position: absolute;
|
||||
left: 238px;
|
||||
}
|
||||
|
||||
.attach-p {
|
||||
font-weight: bold;
|
||||
float: left;
|
||||
font-weight: bold;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#channel .one-update {
|
||||
margin-bottom: 12px;
|
||||
padding: 6px 6px 8px 6px;
|
||||
border-bottom: 1px dotted #d0d0d0;
|
||||
min-height: 50px;
|
||||
color: black;
|
||||
position: relative;
|
||||
display: none;
|
||||
margin-bottom: 12px;
|
||||
padding: 6px 6px 8px 6px;
|
||||
border-bottom: 1px dotted #d0d0d0;
|
||||
min-height: 50px;
|
||||
color: black;
|
||||
position: relative;
|
||||
display: none;
|
||||
}
|
||||
|
||||
#channel .one-update .avatar-container {
|
||||
text-align: center;
|
||||
margin-right: 16px;
|
||||
float: left;
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
text-align: center;
|
||||
margin-right: 16px;
|
||||
float: left;
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #channel .one-update .avatar-container {
|
||||
margin-right: auto;
|
||||
margin-left: 16px;
|
||||
float: right;
|
||||
margin-right: auto;
|
||||
margin-left: 16px;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#channel .one-update .avatar-container:hover {
|
||||
cursor: pointer;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#channel .one-update img.avatar {
|
||||
max-height: 50px;
|
||||
max-width: 50px;
|
||||
max-height: 50px;
|
||||
max-width: 50px;
|
||||
}
|
||||
|
||||
#channel .one-update div.body {
|
||||
line-height: 1.4;
|
||||
margin-left: 65px;
|
||||
opacity: 0.8;
|
||||
line-height: 1.4;
|
||||
margin-left: 65px;
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
#channel .one-update:hover div.body {
|
||||
opacity: 1;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
#channel .one-update a.repeat {
|
||||
background-position: 0 -1681px;
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
margin-right: 4px;
|
||||
float: left;
|
||||
background-position: 0 -1681px;
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
margin-right: 4px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#channel .one-update span a {
|
||||
text-decoration: underline;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#channel .one-update p {
|
||||
display: block;
|
||||
margin: 0 12px 5px 0;
|
||||
display: block;
|
||||
margin: 0 12px 5px 0;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #channel .one-update p {
|
||||
margin-right: auto;
|
||||
margin-left: 12px;
|
||||
margin-right: auto;
|
||||
margin-left: 12px;
|
||||
}
|
||||
|
||||
#channel .one-update p b.name:hover {
|
||||
cursor: pointer;
|
||||
text-decoration: underline;
|
||||
cursor: pointer;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #channel .one-update p b.name {
|
||||
margin-left: 4px;
|
||||
float: right;
|
||||
margin-left: 4px;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#channel .one-update p.infos {
|
||||
font-size: 0.9em;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
#channel .one-update p.infos a.geoloc {
|
||||
background-position: 0 -1778px;
|
||||
color: #363636;
|
||||
margin-left: 18px;
|
||||
padding-left: 14px;
|
||||
background-position: 0 -1778px;
|
||||
color: #363636;
|
||||
margin-left: 18px;
|
||||
padding-left: 14px;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #channel .one-update p.infos a.geoloc {
|
||||
float: right;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#channel .one-update p.infos a.geoloc:hover,
|
||||
#channel .one-update p.infos a.geoloc:focus,
|
||||
#channel .one-update p.infos a.geoloc:active {
|
||||
color: #141414;
|
||||
color: #141414;
|
||||
}
|
||||
|
||||
#channel .one-update p.file {
|
||||
font-size: 0.9em;
|
||||
margin: 6px 0 5px 10px;
|
||||
font-size: 0.9em;
|
||||
margin: 6px 0 5px 10px;
|
||||
}
|
||||
|
||||
#channel .one-update p.file a.link,
|
||||
#inbox .inbox-new-file a.file {
|
||||
min-height: 16px;
|
||||
padding-left: 22px;
|
||||
text-decoration: underline;
|
||||
display: block;
|
||||
min-height: 16px;
|
||||
padding-left: 22px;
|
||||
text-decoration: underline;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#channel .one-update p.file a.link {
|
||||
margin-top: 4px;
|
||||
margin-top: 4px;
|
||||
}
|
||||
|
||||
#channel p.file a,
|
||||
#inbox .inbox-new-file a.file {
|
||||
background-position: 0 -988px;
|
||||
background-position: 0 -988px;
|
||||
}
|
||||
|
||||
#channel p.file a.audio,
|
||||
#inbox .inbox-new-file a.file.audio {
|
||||
background-position: 0 -899px;
|
||||
background-position: 0 -899px;
|
||||
}
|
||||
|
||||
#channel p.file a.image,
|
||||
#inbox .inbox-new-file a.file.image {
|
||||
background-position: 0 -917px;
|
||||
background-position: 0 -917px;
|
||||
}
|
||||
|
||||
#channel p.file a.video,
|
||||
#inbox .inbox-new-file a.file.video {
|
||||
background-position: 0 -935px;
|
||||
background-position: 0 -935px;
|
||||
}
|
||||
|
||||
#channel p.file a.document,
|
||||
#inbox .inbox-new-file a.file.document {
|
||||
background-position: 0 -953px;
|
||||
background-position: 0 -953px;
|
||||
}
|
||||
|
||||
#channel p.file a.package,
|
||||
#inbox .inbox-new-file a.file.package {
|
||||
background-position: 0 -971px;
|
||||
background-position: 0 -971px;
|
||||
}
|
||||
|
||||
#channel .one-update p.file a.thumb img {
|
||||
border: 1px solid #a2a2a2;
|
||||
max-width: 140px;
|
||||
max-height: 105px;
|
||||
margin: 4px 10px 2px 0;
|
||||
padding: 1px;
|
||||
border: 1px solid #a2a2a2;
|
||||
max-width: 140px;
|
||||
max-height: 105px;
|
||||
margin: 4px 10px 2px 0;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
#channel .one-update p.file a.thumb img:hover {
|
||||
border-color: #464646;
|
||||
border-color: #464646;
|
||||
}
|
||||
|
||||
#channel .one-update div.comments,
|
||||
.popup.large div.comments {
|
||||
width: 410px;
|
||||
margin: 2px 0 2px 76px;
|
||||
width: 410px;
|
||||
margin: 2px 0 2px 76px;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #channel .one-update div.comments {
|
||||
margin-left: auto;
|
||||
margin-right: 76px;
|
||||
margin-left: auto;
|
||||
margin-right: 76px;
|
||||
}
|
||||
|
||||
#channel .one-update div.comments div.arrow,
|
||||
.popup.large div.comments div.arrow {
|
||||
background-position: 0 -1702px;
|
||||
width: 20px;
|
||||
height: 8px;
|
||||
margin-left: 20px;
|
||||
display: block;
|
||||
background-position: 0 -1702px;
|
||||
width: 20px;
|
||||
height: 8px;
|
||||
margin-left: 20px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #channel .one-update div.comments div.arrow,
|
||||
html[dir="rtl"] .popup.large div.comments div.arrow {
|
||||
margin-left: auto;
|
||||
margin-right: 20px;
|
||||
margin-left: auto;
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
#channel .one-update div.comments div.comments-content,
|
||||
.popup.large div.comments div.comments-content {
|
||||
background-color: #e5ebec;
|
||||
color: black;
|
||||
font-size: 0.9em;
|
||||
text-shadow: 0 1px 0 white;
|
||||
background-color: #e5ebec;
|
||||
color: black;
|
||||
font-size: 0.9em;
|
||||
text-shadow: 0 1px 0 white;
|
||||
}
|
||||
|
||||
#channel .one-update div.comments input,
|
||||
.popup.large div.comments input {
|
||||
width: 356px;
|
||||
margin: 6px 0;
|
||||
padding: 4px 5px;
|
||||
width: 356px;
|
||||
margin: 6px 0;
|
||||
padding: 4px 5px;
|
||||
}
|
||||
|
||||
#channel .one-update div.comments span.icon,
|
||||
.popup.large div.comments span.icon {
|
||||
background-position: 0 -1082px;
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
margin: 10px;
|
||||
float: left;
|
||||
background-position: 0 -1082px;
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
margin: 10px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #channel .one-update div.comments span.icon,
|
||||
html[dir="rtl"] .popup.large div.comments span.icon {
|
||||
float: right;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#channel .one-update div.comments .one-comment.loading span.icon,
|
||||
.popup.large div.comments .one-comment.loading span.icon {
|
||||
margin: 0 10px 0 0;
|
||||
margin: 0 10px 0 0;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #channel .one-update div.comments .one-comment.loading span.icon,
|
||||
html[dir="rtl"] .popup.large div.comments .one-comment.loading span.icon {
|
||||
margin: 0 0 0 10px;
|
||||
margin: 0 0 0 10px;
|
||||
}
|
||||
|
||||
#channel .one-update div.comments .one-comment,
|
||||
.popup.large div.comments .one-comment {
|
||||
border-bottom: 1px solid #f4f4f4;
|
||||
padding: 4px 8px 0 8px;
|
||||
position: relative;
|
||||
display: block;
|
||||
border-bottom: 1px solid #f4f4f4;
|
||||
padding: 4px 8px 0 8px;
|
||||
position: relative;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#channel .one-update div.comments .one-comment.compose,
|
||||
.popup.large div.comments .one-comment.compose {
|
||||
border-bottom: 2px solid #f4f4f4;
|
||||
height: 36px;
|
||||
padding: 0;
|
||||
border-bottom: 2px solid #f4f4f4;
|
||||
height: 36px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#channel .one-update div.comments .one-comment.new,
|
||||
.popup.large div.comments .one-comment.new {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
|
||||
#channel .one-update div.comments a.one-comment,
|
||||
.popup.large div.comments a.one-comment {
|
||||
text-decoration: none;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#channel .one-update div.comments a.one-comment:hover,
|
||||
#channel .one-update div.comments a.one-comment:focus,
|
||||
.popup.large div.comments a.one-comment:hover,
|
||||
.popup.large div.comments a.one-comment:focus {
|
||||
text-decoration: underline;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#channel .one-update div.comments .one-comment.loading,
|
||||
.popup.large div.comments .one-comment.loading {
|
||||
padding-bottom: 5px;
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
|
||||
#channel .one-update div.comments .one-comment div.marker,
|
||||
.popup.large div.comments .one-comment div.marker {
|
||||
background-color: #6d8387;
|
||||
width: 2px;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
background-color: #6d8387;
|
||||
width: 2px;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
#channel .one-update div.comments .one-comment .avatar-container,
|
||||
.popup.large div.comments .one-comment .avatar-container {
|
||||
text-align: center;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
margin: 2px 8px 0 0;
|
||||
float: left;
|
||||
text-align: center;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
margin: 2px 8px 0 0;
|
||||
float: left;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #channel .one-update div.comments .one-comment .avatar-container,
|
||||
html[dir="rtl"] .popup.large div.comments .one-comment .avatar-container {
|
||||
margin-right: auto;
|
||||
margin-left: 8px;
|
||||
float: right;
|
||||
margin-right: auto;
|
||||
margin-left: 8px;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#channel .one-update div.comments .one-comment .avatar-container:hover,
|
||||
.popup.large div.comments .one-comment .avatar-container:hover {
|
||||
cursor: pointer;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#channel .one-update div.comments .one-comment img.avatar,
|
||||
.popup.large div.comments .one-comment img.avatar {
|
||||
max-height: 30px;
|
||||
max-width: 30px;
|
||||
max-height: 30px;
|
||||
max-width: 30px;
|
||||
}
|
||||
|
||||
#channel .one-update div.comments .one-comment .comment-container,
|
||||
.popup.large div.comments .one-comment .comment-container {
|
||||
float: left;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#channel .one-update div.comments .one-comment a.name,
|
||||
.popup.large div.comments .one-comment a.name {
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
font-size: 0.95em;
|
||||
padding-bottom: 2px;
|
||||
float: left;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
font-size: 0.95em;
|
||||
padding-bottom: 2px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #channel .one-update div.comments .one-comment a.name,
|
||||
html[dir="rtl"] .popup.large div.comments .one-comment a.name {
|
||||
float: right;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#channel .one-update div.comments .one-comment a.name:hover,
|
||||
#channel .one-update div.comments .one-comment a.name:focus,
|
||||
.popup.large div.comments .one-comment a.name:hover,
|
||||
.popup.large div.comments .one-comment a.name:focus {
|
||||
text-decoration: underline;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#channel .one-update div.comments .one-comment span.date,
|
||||
#channel .one-update div.comments .one-comment a.remove,
|
||||
.popup.large div.comments .one-comment span.date,
|
||||
.popup.large div.comments .one-comment a.remove {
|
||||
font-size: 0.85em;
|
||||
float: right;
|
||||
font-size: 0.85em;
|
||||
float: right;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #channel .one-update div.comments .one-comment span.date,
|
||||
html[dir="rtl"] #channel .one-update div.comments .one-comment a.remove,
|
||||
html[dir="rtl"] .popup.large div.comments .one-comment span.date,
|
||||
html[dir="rtl"] .popup.large div.comments .one-comment a.remove {
|
||||
margin-left: 2px;
|
||||
float: left;
|
||||
margin-left: 2px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#channel .one-update div.comments .one-comment.me:hover span.date,
|
||||
.popup.large div.comments .one-comment.me:hover span.date {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
|
||||
#channel .one-update div.comments .one-comment.me a.remove,
|
||||
.popup.large div.comments .one-comment.me a.remove {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
|
||||
#channel .one-update div.comments .one-comment.me:hover a.remove,
|
||||
.popup.large div.comments .one-comment.me:hover a.remove {
|
||||
display: block;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#channel .one-update div.comments .one-comment p.body,
|
||||
.popup.large div.comments .one-comment p.body {
|
||||
clear: both;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
#channel a.more {
|
||||
background-position: 0 -334px;
|
||||
color: black;
|
||||
height: 16px;
|
||||
text-decoration: none;
|
||||
margin: -2px 0 14px 4px;
|
||||
padding-left: 20px;
|
||||
display: block;
|
||||
visibility: hidden;
|
||||
background-position: 0 -334px;
|
||||
color: black;
|
||||
height: 16px;
|
||||
text-decoration: none;
|
||||
margin: -2px 0 14px 4px;
|
||||
padding-left: 20px;
|
||||
display: block;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
#channel a.more:hover,
|
||||
#channel a.more:focus {
|
||||
text-decoration: underline;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#channel a.mbtool {
|
||||
width: 11px;
|
||||
height: 11px;
|
||||
display: none;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
width: 11px;
|
||||
height: 11px;
|
||||
display: none;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #channel a.mbtool {
|
||||
right: auto;
|
||||
left: 0;
|
||||
right: auto;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
#channel .one-update:hover a.mbtool {
|
||||
display: block;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#channel a.mbtool:hover,
|
||||
#channel a.mbtool:focus {
|
||||
text-decoration: none;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#channel a.mbtool.profile {
|
||||
background-position: -1px -1333px;
|
||||
top: 24px;
|
||||
background-position: -1px -1333px;
|
||||
top: 24px;
|
||||
}
|
||||
|
||||
#channel a.mbtool.repost {
|
||||
background-position: -1px -1354px;
|
||||
background-position: -1px -1354px;
|
||||
}
|
||||
|
||||
#channel a.mbtool.remove {
|
||||
background-position: -1px -1312px;
|
||||
background-position: -1px -1312px;
|
||||
}
|
||||
|
||||
#channel a.mbtool.repost,
|
||||
#channel a.mbtool.remove {
|
||||
top: 6px;
|
||||
top: 6px;
|
||||
}
|
||||
|
||||
#channel .footer {
|
||||
bottom: 0;
|
||||
-moz-border-radius-bottomleft: 4px;
|
||||
-moz-border-radius-bottomright: 4px;
|
||||
-webkit-border-bottom-left-radius: 4px;
|
||||
-webkit-border-bottom-right-radius: 4px;
|
||||
border-bottom-left-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
bottom: 0;
|
||||
-moz-border-radius-bottomleft: 4px;
|
||||
-moz-border-radius-bottomright: 4px;
|
||||
-webkit-border-bottom-left-radius: 4px;
|
||||
-webkit-border-bottom-right-radius: 4px;
|
||||
border-bottom-left-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
}
|
||||
|
||||
#channel .footer div {
|
||||
margin-left: 5px;
|
||||
padding-left: 24px;
|
||||
min-height: 16px;
|
||||
font-size: 0.85em;
|
||||
width: auto !important;
|
||||
margin-left: 5px;
|
||||
padding-left: 24px;
|
||||
min-height: 16px;
|
||||
font-size: 0.85em;
|
||||
width: auto !important;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #channel .footer div {
|
||||
float: right;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#channel .footer .sync {
|
||||
background-position: 0 -804px;
|
||||
display: none;
|
||||
background-position: 0 -804px;
|
||||
display: none;
|
||||
}
|
||||
|
||||
#channel .footer .unsync {
|
||||
background-position: 0 -830px;
|
||||
display: none;
|
||||
background-position: 0 -830px;
|
||||
display: none;
|
||||
}
|
||||
|
|
|
@ -11,5 +11,5 @@ Author: Valérian Saliou
|
|||
*/
|
||||
|
||||
#directory .content {
|
||||
padding: 10px 0 10px 0;
|
||||
padding: 10px 0 10px 0;
|
||||
}
|
||||
|
|
|
@ -11,68 +11,68 @@ Author: Valérian Saliou
|
|||
*/
|
||||
|
||||
#discovery .content {
|
||||
padding: 10px 0 10px 0;
|
||||
padding: 10px 0 10px 0;
|
||||
}
|
||||
|
||||
#discovery .content p {
|
||||
margin: 5px 10px 5px 10px;
|
||||
text-align: justify;
|
||||
font-size: 0.85em;
|
||||
margin: 5px 10px 5px 10px;
|
||||
text-align: justify;
|
||||
font-size: 0.85em;
|
||||
}
|
||||
|
||||
#discovery .discovery-head,
|
||||
#directory .directory-head,
|
||||
#rosterx .rosterx-head,
|
||||
#privacy .privacy-head {
|
||||
width: 606px;
|
||||
height: 24px;
|
||||
margin: 0 10px 10px 10px;
|
||||
padding: 6px;
|
||||
background: #f1f6fd;
|
||||
border: 1px #9dc4fc solid;
|
||||
width: 606px;
|
||||
height: 24px;
|
||||
margin: 0 10px 10px 10px;
|
||||
padding: 6px;
|
||||
background: #f1f6fd;
|
||||
border: 1px #9dc4fc solid;
|
||||
}
|
||||
|
||||
#discovery .disco-server-text,
|
||||
#directory .directory-server-text {
|
||||
float: left;
|
||||
font-size: 0.9em;
|
||||
margin: 3px;
|
||||
float: left;
|
||||
font-size: 0.9em;
|
||||
margin: 3px;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #discovery .disco-server-text,
|
||||
html[dir="rtl"] #directory .directory-server-text {
|
||||
float: right;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#discovery .disco-server-input,
|
||||
#directory .directory-server-input {
|
||||
width: 200px;
|
||||
height: 18px;
|
||||
float: right;
|
||||
margin-right: 10px;
|
||||
padding: 2px;
|
||||
width: 200px;
|
||||
height: 18px;
|
||||
float: right;
|
||||
margin-right: 10px;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #discovery .disco-server-input,
|
||||
html[dir="rtl"] #directory .directory-server-input {
|
||||
margin-right: 0;
|
||||
margin-left: 10px;
|
||||
float: left;
|
||||
margin-right: 0;
|
||||
margin-left: 10px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#discovery .disco-category {
|
||||
display: none;
|
||||
margin-bottom: 22px;
|
||||
display: none;
|
||||
margin-bottom: 22px;
|
||||
}
|
||||
|
||||
#discovery .disco-category-title {
|
||||
font-weight: bold;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#discovery .one-actions .one-button {
|
||||
float: right;
|
||||
float: right;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #discovery .one-actions .one-button {
|
||||
float: left;
|
||||
float: left;
|
||||
}
|
|
@ -11,141 +11,141 @@ Author: Valérian Saliou
|
|||
*/
|
||||
|
||||
#favorites .content {
|
||||
padding: 10px 0 10px 0;
|
||||
padding: 10px 0 10px 0;
|
||||
}
|
||||
|
||||
#favorites .fedit-head-select {
|
||||
min-width: 190px;
|
||||
max-width: 210px;
|
||||
min-width: 190px;
|
||||
max-width: 210px;
|
||||
}
|
||||
|
||||
#favorites .switch-fav {
|
||||
margin: 0 10px 0 10px;
|
||||
width: 200px;
|
||||
height: 355px;
|
||||
border-right: 1px #c0c0c0 dotted;
|
||||
float: left;
|
||||
margin: 0 10px 0 10px;
|
||||
width: 200px;
|
||||
height: 355px;
|
||||
border-right: 1px #c0c0c0 dotted;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#favorites .room-switcher {
|
||||
width: 188px;
|
||||
height: 18px;
|
||||
border-bottom: 1px #9dc4fc solid;
|
||||
float: left;
|
||||
padding: 10px 6px;
|
||||
font-size: 0.9em;
|
||||
width: 188px;
|
||||
height: 18px;
|
||||
border-bottom: 1px #9dc4fc solid;
|
||||
float: left;
|
||||
padding: 10px 6px;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
#favorites .room-switcher:hover {
|
||||
background-color: #e9f1fd;
|
||||
cursor: pointer;
|
||||
background-color: #e9f1fd;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#favorites .room-switcher:active {
|
||||
background-color: #f1f6fd;
|
||||
background-color: #f1f6fd;
|
||||
}
|
||||
|
||||
#favorites .switch-fav .icon {
|
||||
float: left;
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
margin: 0 8px 0 0;
|
||||
float: left;
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
margin: 0 8px 0 0;
|
||||
}
|
||||
|
||||
#favorites .switch-fav .room-list .list-icon {
|
||||
background-position: 0 -855px;
|
||||
background-position: 0 -855px;
|
||||
}
|
||||
|
||||
#favorites .switch-fav .room-search .search-icon {
|
||||
background-position: 0 -876px;
|
||||
background-position: 0 -876px;
|
||||
}
|
||||
|
||||
#favorites .static-fav {
|
||||
width: 385px;
|
||||
height: 335px;
|
||||
margin: 0 10px 0 0;
|
||||
padding: 10px;
|
||||
float: right;
|
||||
width: 385px;
|
||||
height: 335px;
|
||||
margin: 0 10px 0 0;
|
||||
padding: 10px;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#favorites .favorites-search {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
|
||||
#favorites .static-fav-head {
|
||||
width: 393px;
|
||||
margin: -10px;
|
||||
width: 393px;
|
||||
margin: -10px;
|
||||
}
|
||||
|
||||
#favorites .static-fav-results {
|
||||
width: 406px;
|
||||
height: 314px;
|
||||
margin: 10px -10px -10px -10px;
|
||||
padding: 6px 0 0 0;
|
||||
width: 406px;
|
||||
height: 314px;
|
||||
margin: 10px -10px -10px -10px;
|
||||
padding: 6px 0 0 0;
|
||||
}
|
||||
|
||||
#favorites .fedit-line {
|
||||
height: 30px;
|
||||
font-size: 0.9em;
|
||||
padding: 10px 0 4px 4px;
|
||||
border-bottom: 1px #9dc4fc solid;
|
||||
height: 30px;
|
||||
font-size: 0.9em;
|
||||
padding: 10px 0 4px 4px;
|
||||
border-bottom: 1px #9dc4fc solid;
|
||||
}
|
||||
|
||||
#favorites .fedit-line:hover {
|
||||
background: #e9f1fd;
|
||||
background: #e9f1fd;
|
||||
}
|
||||
|
||||
#favorites label {
|
||||
width: 140px;
|
||||
margin-top: 3px;
|
||||
width: 140px;
|
||||
margin-top: 3px;
|
||||
}
|
||||
|
||||
#favorites input {
|
||||
height: 18px;
|
||||
width: 186px;
|
||||
margin-top: 0;
|
||||
padding: 2px;
|
||||
height: 18px;
|
||||
width: 186px;
|
||||
margin-top: 0;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
#favorites .fedit-select {
|
||||
min-width: 160px;
|
||||
min-width: 160px;
|
||||
}
|
||||
|
||||
#favorites .fedit-actions {
|
||||
margin: 10px 0 0;
|
||||
font-size: 0.9em;
|
||||
float: right;
|
||||
margin: 10px 0 0;
|
||||
font-size: 0.9em;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#favorites input[type="checkbox"] {
|
||||
margin-top: 5px;
|
||||
width: auto;
|
||||
margin-top: 5px;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
#favorites .fedit-terminate {
|
||||
float: right;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#favorites .fedit-add {
|
||||
display: block;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#favorites .fedit-edit {
|
||||
background-position: 2px -1240px;
|
||||
background-position: 2px -1240px;
|
||||
}
|
||||
|
||||
#favorites .fedit-remove {
|
||||
margin: 0 8px 0 0;
|
||||
margin: 0 8px 0 0;
|
||||
}
|
||||
|
||||
#favorites .add,
|
||||
.popup .results .one-button.one-add {
|
||||
background-position: 3px -1177px;
|
||||
background-position: 3px -1177px;
|
||||
}
|
||||
|
||||
#favorites .remove,
|
||||
#inbox .remove {
|
||||
background-position: 3px -1196px;
|
||||
background-position: 3px -1196px;
|
||||
}
|
||||
|
||||
#favorites .join,
|
||||
|
@ -153,32 +153,32 @@ Author: Valérian Saliou
|
|||
#inbox .send,
|
||||
.popup .results .one-button.one-chat,
|
||||
.popup .results a.one-profile {
|
||||
background-position: 3px -124px;
|
||||
background-position: 3px -124px;
|
||||
}
|
||||
|
||||
#favorites .one-button,
|
||||
#inbox .one-button,
|
||||
.popup .results .one-button {
|
||||
padding-left: 20px !important;
|
||||
font-size: 0.98em;
|
||||
padding-left: 20px !important;
|
||||
font-size: 0.98em;
|
||||
}
|
||||
|
||||
#favorites .fsearch-results {
|
||||
overflow: auto;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
#favorites .room-name {
|
||||
margin: 4px 2px 5px;
|
||||
max-width: 210px;
|
||||
float: left;
|
||||
margin: 4px 2px 5px;
|
||||
max-width: 210px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #favorites .room-name {
|
||||
float: right;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#favorites .fsearch-noresults {
|
||||
display: none;
|
||||
font-size: 0.9em;
|
||||
font-weight: bold;
|
||||
display: none;
|
||||
font-size: 0.9em;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
|
|
@ -11,41 +11,41 @@ Author: Valérian Saliou
|
|||
*/
|
||||
|
||||
@font-face {
|
||||
font-family: 'PT Sans';
|
||||
src: url('../fonts/eot/ptsans.eot');
|
||||
src: url('../fonts/eot/ptsans.eot?#iefix') format('embedded-opentype'),
|
||||
url('../fonts/woff/ptsans.woff') format('woff'),
|
||||
url('../fonts/ttf/ptsans.ttf') format('truetype'),
|
||||
url('../fonts/svg/ptsans.svg#pt_sansregular') format('svg');
|
||||
font-family: 'PT Sans';
|
||||
src: url('../fonts/eot/ptsans.eot');
|
||||
src: url('../fonts/eot/ptsans.eot?#iefix') format('embedded-opentype'),
|
||||
url('../fonts/woff/ptsans.woff') format('woff'),
|
||||
url('../fonts/ttf/ptsans.ttf') format('truetype'),
|
||||
url('../fonts/svg/ptsans.svg#pt_sansregular') format('svg');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'PT Sans';
|
||||
font-style: italic;
|
||||
src: url('../fonts/eot/ptsansitalic.eot');
|
||||
src: url('../fonts/eot/ptsansitalic.eot?#iefix') format('embedded-opentype'),
|
||||
url('../fonts/woff/ptsansitalic.woff') format('woff'),
|
||||
url('../fonts/ttf/ptsansitalic.ttf') format('truetype'),
|
||||
url('../fonts/svg/ptsansitalic.svg#pt_sansitalic') format('svg');
|
||||
font-family: 'PT Sans';
|
||||
font-style: italic;
|
||||
src: url('../fonts/eot/ptsansitalic.eot');
|
||||
src: url('../fonts/eot/ptsansitalic.eot?#iefix') format('embedded-opentype'),
|
||||
url('../fonts/woff/ptsansitalic.woff') format('woff'),
|
||||
url('../fonts/ttf/ptsansitalic.ttf') format('truetype'),
|
||||
url('../fonts/svg/ptsansitalic.svg#pt_sansitalic') format('svg');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'PT Sans';
|
||||
font-weight: bold;
|
||||
src: url('../fonts/eot/ptsansbold.eot');
|
||||
src: url('../fonts/eot/ptsansbold.eot?#iefix') format('embedded-opentype'),
|
||||
url('../fonts/woff/ptsansbold.woff') format('woff'),
|
||||
url('../fonts/ttf/ptsansbold.ttf') format('truetype'),
|
||||
url('../fonts/svg/ptsansbold.svg#pt_sansbold') format('svg');
|
||||
font-family: 'PT Sans';
|
||||
font-weight: bold;
|
||||
src: url('../fonts/eot/ptsansbold.eot');
|
||||
src: url('../fonts/eot/ptsansbold.eot?#iefix') format('embedded-opentype'),
|
||||
url('../fonts/woff/ptsansbold.woff') format('woff'),
|
||||
url('../fonts/ttf/ptsansbold.ttf') format('truetype'),
|
||||
url('../fonts/svg/ptsansbold.svg#pt_sansbold') format('svg');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'PT Sans';
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
src: url('../fonts/eot/ptsansbolditalic.eot');
|
||||
src: url('../fonts/eot/ptsansbolditalic.eot?#iefix') format('embedded-opentype'),
|
||||
url('../fonts/woff/ptsansbolditalic.woff') format('woff'),
|
||||
url('../fonts/ttf/ptsansbolditalic.ttf') format('truetype'),
|
||||
url('../fonts/svg/ptsansbolditalic.svg#pt_sansbold_italic') format('svg');
|
||||
font-family: 'PT Sans';
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
src: url('../fonts/eot/ptsansbolditalic.eot');
|
||||
src: url('../fonts/eot/ptsansbolditalic.eot?#iefix') format('embedded-opentype'),
|
||||
url('../fonts/woff/ptsansbolditalic.woff') format('woff'),
|
||||
url('../fonts/ttf/ptsansbolditalic.ttf') format('truetype'),
|
||||
url('../fonts/svg/ptsansbolditalic.svg#pt_sansbold_italic') format('svg');
|
||||
}
|
File diff suppressed because it is too large
Load diff
|
@ -13,41 +13,41 @@ Author: Valérian Saliou
|
|||
/* Fix custom fonts */
|
||||
|
||||
@font-face {
|
||||
font-family: 'PT Sans';
|
||||
src: url(../fonts/eot/ptsans.eot);
|
||||
font-family: 'PT Sans';
|
||||
src: url(../fonts/eot/ptsans.eot);
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'PT Sans';
|
||||
font-style: italic;
|
||||
src: url(../fonts/eot/ptsansitalic.eot);
|
||||
font-family: 'PT Sans';
|
||||
font-style: italic;
|
||||
src: url(../fonts/eot/ptsansitalic.eot);
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'PT Sans';
|
||||
font-weight: bold;
|
||||
src: url(../fonts/eot/ptsansbold.eot);
|
||||
font-family: 'PT Sans';
|
||||
font-weight: bold;
|
||||
src: url(../fonts/eot/ptsansbold.eot);
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'PT Sans';
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
src: url(../fonts/eot/ptsansbolditalic.eot);
|
||||
font-family: 'PT Sans';
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
src: url(../fonts/eot/ptsansbolditalic.eot);
|
||||
}
|
||||
|
||||
/* rgba(255,255,255,0.9) */
|
||||
.search ul {
|
||||
background: transparent;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#edffffff,endColorstr=#edffffff);
|
||||
background: transparent;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#edffffff,endColorstr=#edffffff);
|
||||
}
|
||||
|
||||
/* rgba(255,255,255,0.3) */
|
||||
a.finish:active,
|
||||
#manager-buttons input:active,
|
||||
#install-buttons input:active {
|
||||
background: transparent;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#49ffffff,endColorstr=#49ffffff);
|
||||
background: transparent;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#49ffffff,endColorstr=#49ffffff);
|
||||
}
|
||||
|
||||
/* rgba(255,255,255,0.2) */
|
||||
|
@ -58,15 +58,15 @@ a.finish:focus,
|
|||
#install-buttons input:hover,
|
||||
#install-buttons input:focus,
|
||||
.notifications-content .one-notification:active {
|
||||
background: transparent;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#33ffffff,endColorstr=#33ffffff);
|
||||
background: transparent;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#33ffffff,endColorstr=#33ffffff);
|
||||
}
|
||||
|
||||
/* rgba(255,255,255,0.14) */
|
||||
#home .corporation .corp_network a:active,
|
||||
#home .locale .list a:active {
|
||||
background: transparent;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#2fffffff,endColorstr=#2fffffff);
|
||||
background: transparent;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#2fffffff,endColorstr=#2fffffff);
|
||||
}
|
||||
|
||||
/* rgba(255,255,255,0.1) */
|
||||
|
@ -82,44 +82,44 @@ a.finish.disabled:active,
|
|||
#install-buttons input,
|
||||
.notifications-content .one-notification:hover,
|
||||
.notifications-content .one-notification:focus {
|
||||
background: transparent;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#20ffffff,endColorstr=#20ffffff);
|
||||
background: transparent;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#20ffffff,endColorstr=#20ffffff);
|
||||
}
|
||||
|
||||
/* rgba(255,239,104,0.8) */
|
||||
.popup .infos {
|
||||
background: transparent;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#deffef68,endColorstr=#deffef68);
|
||||
background: transparent;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#deffef68,endColorstr=#deffef68);
|
||||
}
|
||||
|
||||
/* rgba(225,160,20,0.3) */
|
||||
.search ul li.hovered {
|
||||
background: transparent;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#46e1a014,endColorstr=#46e1a014);
|
||||
background: transparent;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#46e1a014,endColorstr=#46e1a014);
|
||||
}
|
||||
|
||||
/* rgba(248,246,186,0.9) */
|
||||
#board .one-board.info {
|
||||
background: transparent;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#edf8f6ba,endColorstr=#edf8f6ba);
|
||||
background: transparent;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#edf8f6ba,endColorstr=#edf8f6ba);
|
||||
}
|
||||
|
||||
/* rgba(241,160,160,0.9) */
|
||||
#board .one-board.error {
|
||||
background: transparent;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#edf1a0a0,endColorstr=#edf1a0a0);
|
||||
background: transparent;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#edf1a0a0,endColorstr=#edf1a0a0);
|
||||
}
|
||||
|
||||
/* rgba(234,234,234,0.8) */
|
||||
#page-engine .chatstate {
|
||||
background: transparent;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#deeaeaea,endColorstr=#deeaeaea);
|
||||
background: transparent;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#deeaeaea,endColorstr=#deeaeaea);
|
||||
}
|
||||
|
||||
/* rgba(20,20,20,0.6) */
|
||||
#home .notice.simple {
|
||||
background: transparent;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#a0141414,endColorstr=#a0141414);
|
||||
background: transparent;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#a0141414,endColorstr=#a0141414);
|
||||
}
|
||||
|
||||
/* rgba(20,20,20,0.8) */
|
||||
|
@ -129,29 +129,29 @@ a.finish.disabled:active,
|
|||
#roster,
|
||||
#manager,
|
||||
#install {
|
||||
background: transparent;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#de141414,endColorstr=#de141414);
|
||||
background: transparent;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#de141414,endColorstr=#de141414);
|
||||
}
|
||||
|
||||
#home .main {
|
||||
background: #141414;
|
||||
background: #141414;
|
||||
}
|
||||
|
||||
/* rgba(20,20,20,0.9) */
|
||||
.popup {
|
||||
background: transparent;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ed141414,endColorstr=#ed141414);
|
||||
background: transparent;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ed141414,endColorstr=#ed141414);
|
||||
}
|
||||
|
||||
/* rgba(0,0,0,0.2) */
|
||||
#install-top .step {
|
||||
background: transparent;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#33000000,endColorstr=#33000000);
|
||||
background: transparent;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#33000000,endColorstr=#33000000);
|
||||
}
|
||||
|
||||
/* rgba(0,0,0,0.6) */
|
||||
.lock {
|
||||
background: url(../images/others/lock.png) repeat !important;
|
||||
background: url(../images/others/lock.png) repeat !important;
|
||||
}
|
||||
|
||||
/* rgba(0,0,0,0.8) */
|
||||
|
@ -160,20 +160,20 @@ a.finish.disabled:active,
|
|||
.buddy-infos-subitem,
|
||||
.buddy-conf-subitem,
|
||||
.tools-content-subitem {
|
||||
background: transparent;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#de000000,endColorstr=#de000000);
|
||||
background: transparent;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#de000000,endColorstr=#de000000);
|
||||
}
|
||||
|
||||
/* Fix a fieldset padding bug */
|
||||
legend {
|
||||
margin-bottom: 5px !important;
|
||||
margin-bottom: 5px !important;
|
||||
}
|
||||
|
||||
/* Fix opacity bugs */
|
||||
#options .forms.in_background fieldset {
|
||||
filter: alpha(opacity = 50) !important;
|
||||
filter: alpha(opacity = 50) !important;
|
||||
}
|
||||
|
||||
a.finish.disabled {
|
||||
filter: alpha(opacity = 20) !important;
|
||||
filter: alpha(opacity = 20) !important;
|
||||
}
|
||||
|
|
|
@ -11,90 +11,90 @@ Author: Valérian Saliou
|
|||
*/
|
||||
|
||||
.body-images {
|
||||
background-image: url(../images/sprites/background.png);
|
||||
background-repeat: repeat;
|
||||
background-color: #93c5fa;
|
||||
background-image: url(../images/sprites/background.png);
|
||||
background-repeat: repeat;
|
||||
background-color: #93c5fa;
|
||||
}
|
||||
|
||||
.install-images {
|
||||
background-image: url(../images/sprites/install.png);
|
||||
background-repeat: no-repeat;
|
||||
background-image: url(../images/sprites/install.png);
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.home-images {
|
||||
background-image: url(../images/sprites/home.png);
|
||||
background-repeat: no-repeat;
|
||||
background-image: url(../images/sprites/home.png);
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.browsers-images {
|
||||
background-image: url(../images/sprites/browsers.png);
|
||||
background-repeat: no-repeat;
|
||||
background-image: url(../images/sprites/browsers.png);
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.buttons-images {
|
||||
background-image: url(../images/sprites/buttons.png);
|
||||
background-repeat: repeat-x;
|
||||
background-image: url(../images/sprites/buttons.png);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
|
||||
.talk-images {
|
||||
background-image: url(../images/sprites/talk.png);
|
||||
background-repeat: no-repeat;
|
||||
background-image: url(../images/sprites/talk.png);
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.smileys-images {
|
||||
background-image: url(../images/sprites/smileys.png);
|
||||
background-repeat: no-repeat;
|
||||
background-image: url(../images/sprites/smileys.png);
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.welcome-images {
|
||||
background-image: url(../images/sprites/welcome.png);
|
||||
background-repeat: no-repeat;
|
||||
background-image: url(../images/sprites/welcome.png);
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.me-images {
|
||||
background-image: url(../images/sprites/me.png);
|
||||
background-repeat: no-repeat;
|
||||
background-image: url(../images/sprites/me.png);
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.jingle-images {
|
||||
background-image: url(../images/sprites/jingle.png);
|
||||
background-repeat: no-repeat;
|
||||
background-image: url(../images/sprites/jingle.png);
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.manager-images {
|
||||
background-image: url(../images/sprites/manager.png);
|
||||
background-repeat: no-repeat;
|
||||
background-image: url(../images/sprites/manager.png);
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.mobile-images {
|
||||
background-image: url(../images/sprites/mobile.png);
|
||||
background-repeat: no-repeat;
|
||||
background-image: url(../images/sprites/mobile.png);
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.wait-small {
|
||||
background-image: url(../images/wait/wait-small.gif);
|
||||
background-repeat: no-repeat;
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
background-image: url(../images/wait/wait-small.gif);
|
||||
background-repeat: no-repeat;
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
}
|
||||
|
||||
.wait-medium {
|
||||
background-image: url(../images/wait/wait-medium.png);
|
||||
background-repeat: no-repeat;
|
||||
height: 24px;
|
||||
width: 24px;
|
||||
background-image: url(../images/wait/wait-medium.png);
|
||||
background-repeat: no-repeat;
|
||||
height: 24px;
|
||||
width: 24px;
|
||||
}
|
||||
|
||||
.wait-big {
|
||||
background-image: url(../images/wait/wait-big.gif);
|
||||
background-repeat: no-repeat;
|
||||
height: 30px;
|
||||
width: 30px;
|
||||
background-image: url(../images/wait/wait-big.gif);
|
||||
background-repeat: no-repeat;
|
||||
height: 30px;
|
||||
width: 30px;
|
||||
}
|
||||
|
||||
.wait-typing {
|
||||
background-image: url(../images/wait/wait-typing.gif);
|
||||
background-repeat: no-repeat;
|
||||
height: 4px;
|
||||
width: 16px;
|
||||
background-image: url(../images/wait/wait-typing.gif);
|
||||
background-repeat: no-repeat;
|
||||
height: 4px;
|
||||
width: 16px;
|
||||
}
|
|
@ -11,234 +11,234 @@ Author: Valérian Saliou
|
|||
*/
|
||||
|
||||
#inbox .content {
|
||||
padding: 10px 0 10px 0;
|
||||
padding: 10px 0 10px 0;
|
||||
}
|
||||
|
||||
#inbox .content p {
|
||||
margin: 3px 10px;
|
||||
text-align: justify;
|
||||
font-size: 0.9em;
|
||||
margin: 3px 10px;
|
||||
text-align: justify;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
#inbox .inbox-results {
|
||||
height: 310px;
|
||||
width: 620px;
|
||||
margin: -5px 0 0 10px;
|
||||
padding: 6px 0 0 0;
|
||||
overflow: auto;
|
||||
height: 310px;
|
||||
width: 620px;
|
||||
margin: -5px 0 0 10px;
|
||||
padding: 6px 0 0 0;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #inbox .inbox-results {
|
||||
margin-left: auto;
|
||||
margin-right: 10px;
|
||||
margin-left: auto;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
#inbox .message-unread {
|
||||
background-color: #E9F1FD;
|
||||
background-color: #E9F1FD;
|
||||
}
|
||||
|
||||
#inbox .one-message {
|
||||
font-size: 0.9em;
|
||||
border-bottom: 1px #b2c7cb solid;
|
||||
font-size: 0.9em;
|
||||
border-bottom: 1px #b2c7cb solid;
|
||||
}
|
||||
|
||||
#inbox .message-head {
|
||||
padding: 6px 0 7px 4px;
|
||||
overflow: hidden;
|
||||
padding: 6px 0 7px 4px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#inbox .message-head:hover {
|
||||
background-color: #e9f1fd;
|
||||
cursor: pointer;
|
||||
background-color: #e9f1fd;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#inbox .message-head:active {
|
||||
background-color: #f1f6fd;
|
||||
background-color: #f1f6fd;
|
||||
}
|
||||
|
||||
#inbox .one-message.message-reading,
|
||||
#inbox .one-message.message-reading .message-head {
|
||||
background-color: #f1f6fd;
|
||||
background-color: #f1f6fd;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #inbox .one-message a.one-button {
|
||||
float: right;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#inbox .avatar-container {
|
||||
float: left;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
margin-right: 7px;
|
||||
text-align: center;
|
||||
background-repeat: no-repeat;
|
||||
float: left;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
margin-right: 7px;
|
||||
text-align: center;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #inbox .avatar-container {
|
||||
margin-left: 7px;
|
||||
margin-right: auto;
|
||||
float: right;
|
||||
margin-left: 7px;
|
||||
margin-right: auto;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#inbox .avatar {
|
||||
max-width: 40px;
|
||||
max-height: 40px;
|
||||
max-width: 40px;
|
||||
max-height: 40px;
|
||||
}
|
||||
|
||||
#inbox .message-jid,
|
||||
#inbox .message-subject {
|
||||
float: left;
|
||||
margin: 0 2px;
|
||||
overflow: hidden;
|
||||
float: left;
|
||||
margin: 0 2px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #inbox .message-jid,
|
||||
html[dir="rtl"] #inbox .message-subject {
|
||||
float: right;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#inbox .message-jid {
|
||||
width: 165px;
|
||||
font-weight: bold;
|
||||
width: 165px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#inbox .message-subject {
|
||||
width: 355px;
|
||||
width: 355px;
|
||||
}
|
||||
|
||||
#inbox .message-truncated {
|
||||
color: #42646b;
|
||||
font-size: 0.8em;
|
||||
margin: 23px 0 0 49px;
|
||||
color: #42646b;
|
||||
font-size: 0.8em;
|
||||
margin: 23px 0 0 49px;
|
||||
}
|
||||
|
||||
#inbox .message-body {
|
||||
padding: 8px 5px 5px 5px;
|
||||
padding: 8px 5px 5px 5px;
|
||||
}
|
||||
|
||||
#inbox .message-body a {
|
||||
text-decoration: underline;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#inbox .message-meta {
|
||||
margin-top: 6px;
|
||||
padding: 3px 4px;
|
||||
border-top: 1px #b2c7cb dotted;
|
||||
margin-top: 6px;
|
||||
padding: 3px 4px;
|
||||
border-top: 1px #b2c7cb dotted;
|
||||
}
|
||||
|
||||
#inbox .message-meta span.date {
|
||||
color: #28474e;
|
||||
font-size: 0.8em;
|
||||
margin: 10px 0 0 4px;
|
||||
float: left;
|
||||
color: #28474e;
|
||||
font-size: 0.8em;
|
||||
margin: 10px 0 0 4px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#inbox .message-meta a {
|
||||
font-size: 0.98em;
|
||||
margin: 5px;
|
||||
float: right;
|
||||
display: block;
|
||||
font-size: 0.98em;
|
||||
margin: 5px;
|
||||
float: right;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#inbox .inbox-noresults {
|
||||
font-weight: bold;
|
||||
display: none;
|
||||
font-weight: bold;
|
||||
display: none;
|
||||
}
|
||||
|
||||
#inbox .a-show-messages {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
|
||||
#inbox .inbox-new {
|
||||
display: none;
|
||||
height: 300px;
|
||||
width: 620px;
|
||||
margin: -5px 0 0 10px;
|
||||
padding: 16px 0 0 0;
|
||||
display: none;
|
||||
height: 300px;
|
||||
width: 620px;
|
||||
margin: -5px 0 0 10px;
|
||||
padding: 16px 0 0 0;
|
||||
}
|
||||
|
||||
#inbox .inbox-new-block {
|
||||
border-top: 1px #686868 dotted;
|
||||
padding-top: 9px;
|
||||
min-height: 32px;
|
||||
clear: both;
|
||||
border-top: 1px #686868 dotted;
|
||||
padding-top: 9px;
|
||||
min-height: 32px;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
#inbox .inbox-new-text {
|
||||
float: left;
|
||||
width: 100px;
|
||||
float: left;
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
#inbox .inbox-new-textarea {
|
||||
width: 460px;
|
||||
height: 109px;
|
||||
margin-bottom: 10px;
|
||||
float: left;
|
||||
width: 460px;
|
||||
height: 109px;
|
||||
margin-bottom: 10px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#inbox .inbox-new input {
|
||||
float: left;
|
||||
float: left;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #inbox .inbox-new-text,
|
||||
html[dir="rtl"] #inbox .inbox-new-textarea,
|
||||
html[dir="rtl"] #inbox .inbox-new input {
|
||||
float: right;
|
||||
float: right;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #inbox .inbox-new-text {
|
||||
margin-right: 20px;
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #inbox .inbox-new input {
|
||||
margin-right: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
#inbox .inbox-new-to ul {
|
||||
width: 264px;
|
||||
max-height: 168px;
|
||||
font-size: 0.9em;
|
||||
left: 120px;
|
||||
top: 31px;
|
||||
width: 264px;
|
||||
max-height: 168px;
|
||||
font-size: 0.9em;
|
||||
left: 120px;
|
||||
top: 31px;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #inbox .inbox-new-to ul {
|
||||
left: auto;
|
||||
right: 130px;
|
||||
left: auto;
|
||||
right: 130px;
|
||||
}
|
||||
|
||||
#inbox .inbox-new-to-input {
|
||||
width: 260px;
|
||||
width: 260px;
|
||||
}
|
||||
|
||||
#inbox .inbox-new-subject-input {
|
||||
width: 380px;
|
||||
width: 380px;
|
||||
}
|
||||
|
||||
#inbox .inbox-new-file a {
|
||||
display: block;
|
||||
float: left;
|
||||
display: block;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#inbox .inbox-new-file a.file {
|
||||
font-size: 0.85em;
|
||||
height: 16px;
|
||||
max-width: 320px;
|
||||
margin: 3px 0 15px 013px;
|
||||
overflow: hidden;
|
||||
font-size: 0.85em;
|
||||
height: 16px;
|
||||
max-width: 320px;
|
||||
margin: 3px 0 15px 013px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#inbox .inbox-new-file a.one-button {
|
||||
font-size: 0.85em;
|
||||
margin: -2px 0 0 25px;
|
||||
font-size: 0.85em;
|
||||
margin: -2px 0 0 25px;
|
||||
}
|
||||
|
||||
#inbox .inbox-new-send a {
|
||||
font-size: 0.85em;
|
||||
float: right;
|
||||
display: block;
|
||||
font-size: 0.85em;
|
||||
float: right;
|
||||
display: block;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #inbox .inbox-new-send a {
|
||||
margin-right: 18px;
|
||||
margin-right: 18px;
|
||||
}
|
|
@ -11,294 +11,294 @@ Author: Valérian Saliou
|
|||
*/
|
||||
|
||||
body {
|
||||
color: white;
|
||||
color: white;
|
||||
}
|
||||
|
||||
#install {
|
||||
background-color: rgb(20,20,20);
|
||||
background-color: rgba(20,20,20,0.85);
|
||||
width: 800px;
|
||||
margin: 35px auto;
|
||||
padding-bottom: 17px;
|
||||
-moz-border-radius: 6px;
|
||||
-webkit-border-radius: 6px;
|
||||
border-radius: 6px;
|
||||
-moz-box-shadow: 0 0 35px #5c5c5c;
|
||||
-webkit-box-shadow: 0 0 35px #5c5c5c;
|
||||
box-shadow: 0 0 35px #5c5c5c;
|
||||
background-color: rgb(20,20,20);
|
||||
background-color: rgba(20,20,20,0.85);
|
||||
width: 800px;
|
||||
margin: 35px auto;
|
||||
padding-bottom: 17px;
|
||||
-moz-border-radius: 6px;
|
||||
-webkit-border-radius: 6px;
|
||||
border-radius: 6px;
|
||||
-moz-box-shadow: 0 0 35px #5c5c5c;
|
||||
-webkit-box-shadow: 0 0 35px #5c5c5c;
|
||||
box-shadow: 0 0 35px #5c5c5c;
|
||||
}
|
||||
|
||||
#install a {
|
||||
color: black;
|
||||
text-decoration: underline;
|
||||
color: black;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#install .clear {
|
||||
clear: both;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
#install fieldset {
|
||||
border: 1px solid black;
|
||||
margin: 22px 0 15px 0;
|
||||
padding: 7px 2px 5px 2px;
|
||||
-moz-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
border: 1px solid black;
|
||||
margin: 22px 0 15px 0;
|
||||
padding: 7px 2px 5px 2px;
|
||||
-moz-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
#install legend {
|
||||
font-size: 0.9em;
|
||||
margin: 0 0 0 15px;
|
||||
padding: 0 2px;
|
||||
text-transform: uppercase;
|
||||
font-size: 0.9em;
|
||||
margin: 0 0 0 15px;
|
||||
padding: 0 2px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
#install label {
|
||||
width: 200px;
|
||||
display: block;
|
||||
float: left;
|
||||
clear: both;
|
||||
margin: 0 0 9px 12px;
|
||||
width: 200px;
|
||||
display: block;
|
||||
float: left;
|
||||
clear: both;
|
||||
margin: 0 0 9px 12px;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #install label {
|
||||
margin-right: 12px;
|
||||
margin-left: 0;
|
||||
float: right;
|
||||
margin-right: 12px;
|
||||
margin-left: 0;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#install input,
|
||||
#install select {
|
||||
float: left;
|
||||
margin-bottom: 5px;
|
||||
float: left;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #install input,
|
||||
html[dir="rtl"] #install select {
|
||||
float: right;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#install input[type="text"],
|
||||
#install input[type="url"],
|
||||
#install input[type="password"] {
|
||||
margin-top: -2px;
|
||||
padding: 3px;
|
||||
font-size: 0.95em;
|
||||
min-width: 220px;
|
||||
margin-top: -2px;
|
||||
padding: 3px;
|
||||
font-size: 0.95em;
|
||||
min-width: 220px;
|
||||
}
|
||||
|
||||
#install input.icon {
|
||||
padding-left: 24px;
|
||||
min-width: 199px;
|
||||
max-height: 18px;
|
||||
padding-left: 24px;
|
||||
min-width: 199px;
|
||||
max-height: 18px;
|
||||
}
|
||||
|
||||
#install input.icon#user_name {
|
||||
background-position: 4px -204px;
|
||||
background-position: 4px -204px;
|
||||
}
|
||||
|
||||
#install input.icon#user_password {
|
||||
background-position: 4px -226px;
|
||||
background-position: 4px -226px;
|
||||
}
|
||||
|
||||
#install input.icon#user_repassword {
|
||||
background-position: 4px -248px;
|
||||
background-position: 4px -248px;
|
||||
}
|
||||
|
||||
#install-top {
|
||||
padding: 30px 45px;
|
||||
padding: 30px 45px;
|
||||
}
|
||||
|
||||
#install-top .logo {
|
||||
background-position: 0 0;
|
||||
min-width: 88px;
|
||||
height: 36px;
|
||||
padding: 32px 0 0 66px;
|
||||
font-size: 32px;
|
||||
color: white;
|
||||
text-transform: lowercase;
|
||||
float: left;
|
||||
text-shadow: 0 1px 1px black;
|
||||
background-position: 0 0;
|
||||
min-width: 88px;
|
||||
height: 36px;
|
||||
padding: 32px 0 0 66px;
|
||||
font-size: 32px;
|
||||
color: white;
|
||||
text-transform: lowercase;
|
||||
float: left;
|
||||
text-shadow: 0 1px 1px black;
|
||||
}
|
||||
|
||||
#install-top .step {
|
||||
background-color: rgb(0,0,0);
|
||||
background-color: rgba(0,0,0,0.2);
|
||||
border: 2px solid white;
|
||||
padding: 6px 21px;
|
||||
font-size: 2.7em;
|
||||
text-shadow: 0 1px 1px black;
|
||||
float: right;
|
||||
-moz-border-radius: 40px;
|
||||
-webkit-border-radius: 40px;
|
||||
border-radius: 40px;
|
||||
-moz-box-shadow: 0 0 10px #202020;
|
||||
-webkit-box-shadow: 0 0 10px #202020;
|
||||
box-shadow: 0 0 10px #202020;
|
||||
background-color: rgb(0,0,0);
|
||||
background-color: rgba(0,0,0,0.2);
|
||||
border: 2px solid white;
|
||||
padding: 6px 21px;
|
||||
font-size: 2.7em;
|
||||
text-shadow: 0 1px 1px black;
|
||||
float: right;
|
||||
-moz-border-radius: 40px;
|
||||
-webkit-border-radius: 40px;
|
||||
border-radius: 40px;
|
||||
-moz-box-shadow: 0 0 10px #202020;
|
||||
-webkit-box-shadow: 0 0 10px #202020;
|
||||
box-shadow: 0 0 10px #202020;
|
||||
}
|
||||
|
||||
#install-top .step span {
|
||||
font-size: 0.6em;
|
||||
font-size: 0.6em;
|
||||
}
|
||||
|
||||
#install-content {
|
||||
background: #e4eef9;
|
||||
background: -moz-linear-gradient(top, #e4eef9, #d0e5fa);
|
||||
background: -webkit-gradient(linear, left top, left bottom, from(#e4eef9), to(#d0e5fa));
|
||||
background: -webkit-linear-gradient(top, #e4eef9 0%, #d0e5fa 100%);
|
||||
background: -o-linear-gradient(top, #e4eef9 0%, #d0e5fa 100%);
|
||||
color: black;
|
||||
font-size: 0.9em;
|
||||
margin: 0 10px;
|
||||
padding: 20px 24px;
|
||||
min-height: 260px;
|
||||
clear: both;
|
||||
right: 10px;
|
||||
-moz-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
-moz-box-shadow: 0 0 20px #202020;
|
||||
-webkit-box-shadow: 0 0 20px #202020;
|
||||
box-shadow: 0 0 20px #202020;
|
||||
background: #e4eef9;
|
||||
background: -moz-linear-gradient(top, #e4eef9, #d0e5fa);
|
||||
background: -webkit-gradient(linear, left top, left bottom, from(#e4eef9), to(#d0e5fa));
|
||||
background: -webkit-linear-gradient(top, #e4eef9 0%, #d0e5fa 100%);
|
||||
background: -o-linear-gradient(top, #e4eef9 0%, #d0e5fa 100%);
|
||||
color: black;
|
||||
font-size: 0.9em;
|
||||
margin: 0 10px;
|
||||
padding: 20px 24px;
|
||||
min-height: 260px;
|
||||
clear: both;
|
||||
right: 10px;
|
||||
-moz-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
-moz-box-shadow: 0 0 20px #202020;
|
||||
-webkit-box-shadow: 0 0 20px #202020;
|
||||
box-shadow: 0 0 20px #202020;
|
||||
}
|
||||
|
||||
#install-content h3 {
|
||||
padding-left: 24px;
|
||||
margin-bottom: 15px;
|
||||
float: left;
|
||||
padding-left: 24px;
|
||||
margin-bottom: 15px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #install-content h3 {
|
||||
float: right;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#install-content h3.start {
|
||||
background-position: 0 -73px;
|
||||
background-position: 0 -73px;
|
||||
}
|
||||
|
||||
#install-content h3.storage {
|
||||
background-position: 0 -95px;
|
||||
background-position: 0 -95px;
|
||||
}
|
||||
|
||||
#install-content h3.account {
|
||||
background-position: 0 -117px;
|
||||
background-position: 0 -117px;
|
||||
}
|
||||
|
||||
#install-content h3.main {
|
||||
background-position: 0 -139px;
|
||||
background-position: 0 -139px;
|
||||
}
|
||||
|
||||
#install-content h3.hosts {
|
||||
background-position: 0 -161px;
|
||||
background-position: 0 -161px;
|
||||
}
|
||||
|
||||
#install-content h3.services {
|
||||
background-position: 0 -183px;
|
||||
background-position: 0 -183px;
|
||||
}
|
||||
|
||||
#install-content p {
|
||||
margin-bottom: 10px;
|
||||
clear: both;
|
||||
margin-bottom: 10px;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
#install-content .info {
|
||||
color: black;
|
||||
border-width: 1px;
|
||||
border-style: dashed;
|
||||
padding: 6px 8px;
|
||||
display: block;
|
||||
text-decoration: none;
|
||||
color: black;
|
||||
border-width: 1px;
|
||||
border-style: dashed;
|
||||
padding: 6px 8px;
|
||||
display: block;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#install-content .info.smallspace {
|
||||
margin: 14px 0 10px 0;
|
||||
margin: 14px 0 10px 0;
|
||||
}
|
||||
|
||||
#install-content .info.bigspace {
|
||||
margin: 35px 0 20px 0;
|
||||
margin: 35px 0 20px 0;
|
||||
}
|
||||
|
||||
#install-content .info.first {
|
||||
margin-top: 28px;
|
||||
margin-top: 28px;
|
||||
}
|
||||
|
||||
#install-content .info.last {
|
||||
margin-bottom: 28px;
|
||||
margin-bottom: 28px;
|
||||
}
|
||||
|
||||
#install-content .info.neutral {
|
||||
background-color: #f0f19d;
|
||||
border-color: #b3ad4f;
|
||||
background-color: #f0f19d;
|
||||
border-color: #b3ad4f;
|
||||
}
|
||||
|
||||
#install-content a.info.neutral:hover,
|
||||
#install-content a.info.neutral:focus {
|
||||
background-color: #eced96;
|
||||
background-color: #eced96;
|
||||
}
|
||||
|
||||
#install-content a.info.neutral:active {
|
||||
background-color: #e9ea93;
|
||||
background-color: #e9ea93;
|
||||
}
|
||||
|
||||
#install-content .info.success {
|
||||
background-color: #a8dca9;
|
||||
border-color: #5e9f5f;
|
||||
background-color: #a8dca9;
|
||||
border-color: #5e9f5f;
|
||||
}
|
||||
|
||||
#install-content a.info.success:hover,
|
||||
#install-content a.info.success:focus {
|
||||
background-color: #a0d5a1;
|
||||
background-color: #a0d5a1;
|
||||
}
|
||||
|
||||
#install-content a.info.success:active {
|
||||
background-color: #9ad09b;
|
||||
background-color: #9ad09b;
|
||||
}
|
||||
|
||||
#install-content .info.fail {
|
||||
background-color: #f19d9d;
|
||||
border-color: #b34f4f;
|
||||
background-color: #f19d9d;
|
||||
border-color: #b34f4f;
|
||||
}
|
||||
|
||||
#install-content ol {
|
||||
margin: 20px 30px;
|
||||
margin: 20px 30px;
|
||||
}
|
||||
|
||||
#install-content ol li {
|
||||
margin-bottom: 1px;
|
||||
margin-bottom: 1px;
|
||||
}
|
||||
|
||||
#install-buttons {
|
||||
margin-top: 22px;
|
||||
margin-top: 22px;
|
||||
}
|
||||
|
||||
#install-buttons input {
|
||||
border: 1px solid white;
|
||||
background-color: rgb(255,255,255);
|
||||
background-color: rgba(255,255,255,0.1);
|
||||
color: white;
|
||||
padding: 4px 8px;
|
||||
margin-right: 20px;
|
||||
text-shadow: 0 1px 1px black;
|
||||
float: right;
|
||||
-moz-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
-moz-box-shadow: 0 0 5px #202020;
|
||||
-webkit-box-shadow: 0 0 5px #202020;
|
||||
box-shadow: 0 0 5px #202020;
|
||||
border: 1px solid white;
|
||||
background-color: rgb(255,255,255);
|
||||
background-color: rgba(255,255,255,0.1);
|
||||
color: white;
|
||||
padding: 4px 8px;
|
||||
margin-right: 20px;
|
||||
text-shadow: 0 1px 1px black;
|
||||
float: right;
|
||||
-moz-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
-moz-box-shadow: 0 0 5px #202020;
|
||||
-webkit-box-shadow: 0 0 5px #202020;
|
||||
box-shadow: 0 0 5px #202020;
|
||||
}
|
||||
|
||||
#install-buttons input:hover,
|
||||
#install-buttons input:focus {
|
||||
cursor: pointer;
|
||||
background-color: rgb(255,255,255);
|
||||
background-color: rgba(255,255,255,0.2);
|
||||
-moz-box-shadow: 0 0 15px #202020;
|
||||
-webkit-box-shadow: 0 0 15px #202020;
|
||||
box-shadow: 0 0 15px #202020;
|
||||
cursor: pointer;
|
||||
background-color: rgb(255,255,255);
|
||||
background-color: rgba(255,255,255,0.2);
|
||||
-moz-box-shadow: 0 0 15px #202020;
|
||||
-webkit-box-shadow: 0 0 15px #202020;
|
||||
box-shadow: 0 0 15px #202020;
|
||||
}
|
||||
|
||||
#install-buttons input:active {
|
||||
background-color: rgb(255,255,255);
|
||||
background-color: rgba(255,255,255,0.3);
|
||||
background-color: rgb(255,255,255);
|
||||
background-color: rgba(255,255,255,0.3);
|
||||
}
|
||||
|
|
|
@ -11,27 +11,27 @@ Author: Valérian Saliou
|
|||
*/
|
||||
|
||||
#integratebox .top {
|
||||
height: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
#integratebox .content {
|
||||
text-align: center;
|
||||
height: 385px;
|
||||
text-align: center;
|
||||
height: 385px;
|
||||
}
|
||||
|
||||
#integratebox .one-media img {
|
||||
max-height: 385px;
|
||||
max-width: 640px;
|
||||
max-height: 385px;
|
||||
max-width: 640px;
|
||||
}
|
||||
|
||||
#integratebox .one-media a img {
|
||||
border: none;
|
||||
border: none;
|
||||
}
|
||||
|
||||
#integratebox .one-media audio {
|
||||
margin-top: 170px;
|
||||
margin-top: 170px;
|
||||
}
|
||||
|
||||
#integratebox .bottom {
|
||||
left: 10px;
|
||||
left: 10px;
|
||||
}
|
|
@ -16,32 +16,32 @@ Author: Camaran
|
|||
*
|
||||
*/
|
||||
#addToHomeScreen {
|
||||
z-index:9999;
|
||||
-webkit-user-select:none;
|
||||
user-select:none;
|
||||
-webkit-box-sizing:border-box;
|
||||
box-sizing:border-box;
|
||||
-webkit-touch-callout:none;
|
||||
touch-callout:none;
|
||||
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);
|
||||
z-index:9999;
|
||||
-webkit-user-select:none;
|
||||
user-select:none;
|
||||
-webkit-box-sizing:border-box;
|
||||
box-sizing:border-box;
|
||||
-webkit-touch-callout:none;
|
||||
touch-callout:none;
|
||||
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;
|
||||
width:268px;
|
||||
font-size:18px;
|
||||
padding:14px;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -50,13 +50,13 @@ Author: Camaran
|
|||
*
|
||||
*/
|
||||
#addToHomeScreen.addToHomeWide {
|
||||
width:296px;
|
||||
width:296px;
|
||||
}
|
||||
|
||||
#addToHomeScreen.addToHomeIpad.addToHomeWide {
|
||||
width:320px;
|
||||
font-size:18px;
|
||||
padding:14px;
|
||||
width:320px;
|
||||
font-size:18px;
|
||||
padding:14px;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -65,17 +65,17 @@ Author: Camaran
|
|||
*
|
||||
*/
|
||||
#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;
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
|
@ -85,10 +85,10 @@ Author: Camaran
|
|||
*
|
||||
*/
|
||||
#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%;
|
||||
-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%;
|
||||
}
|
||||
|
||||
|
||||
|
@ -98,19 +98,19 @@ Author: Camaran
|
|||
*
|
||||
*/
|
||||
#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;
|
||||
-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;
|
||||
}
|
||||
|
||||
|
||||
|
@ -120,8 +120,8 @@ Author: Camaran
|
|||
*
|
||||
*/
|
||||
#addToHomeScreen .addToHomePlus {
|
||||
font-weight:bold;
|
||||
font-size:1.3em;
|
||||
font-weight:bold;
|
||||
font-size:1.3em;
|
||||
}
|
||||
|
||||
|
||||
|
@ -131,20 +131,20 @@ Author: Camaran
|
|||
*
|
||||
*/
|
||||
#addToHomeScreen .addToHomeShare {
|
||||
display:inline-block;
|
||||
width:18px;
|
||||
height:15px;
|
||||
background-repeat:no-repeat;
|
||||
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);
|
||||
background-size:18px 15px;
|
||||
text-indent:-9999em;
|
||||
overflow:hidden;
|
||||
display:inline-block;
|
||||
width:18px;
|
||||
height:15px;
|
||||
background-repeat:no-repeat;
|
||||
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);
|
||||
background-size:18px 15px;
|
||||
text-indent:-9999em;
|
||||
overflow:hidden;
|
||||
}
|
||||
|
||||
#addToHomeScreen .addToHomeShare.addToHomeShareOS7 {
|
||||
width:11px;
|
||||
background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAA8CAYAAAAQTCjdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAASCQAAEgkB80sG3AAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAKjSURBVGiB7dpPiFVVHMDxz7m9NCtMyI2bEJEC25WrEkzHUXCRraIwdNE8ZxfYIlcis1ZEbGEzT1QCF4XgH1CyWhUoJKIWNRGEiCNKmkSiYTzfcfGuOokx77x3ZlS8382959zfn+/invvn3RdijHIRBrwkOINCYXEcdjpb7VyiYdBsLScwt5y6IloYdzqXo36Ro0gY9IKWo+5JwmzBt2HQnBw9ehYNazyn5TBee8Dh+Vq+CWu92GufnkTDR6ab7gDeBNHouMM/l9tXTXM0fGBmL726Fg1Dam74EsvKqR8VNowL2Yzj5f7rnnE4DHq2235diYYhhTGfC94up35T0y+6di/ITU0rKVd+sEi0P7xr2pSJOu8zvF+OzqEv7vDH/WFxt7/cshy/ticsN8sXYUht0kXDOlsF9XJ4UaEvNoz9X3zc5bKaZThbyr5jzJ4wlNY7KTgM+ES0vhz+KeiPw36fKC/ucAF9uFBOrTZm26SJCtaV27+xIo7cXdkTEhvOoh+XyxprU1qnim7CQdGK2HAyKRexYVShT3RItDElN+mkjiP2Ym+S3f01hv2EVal5WW6hU0ElmptaqJuBpXg6MbeFH2LDpU6CQ93zWIKnEvs0cayGU3glMfkOo1jQYewZzOuyz7FC95Jwo5OgUFfgeg993hh/eTqCTxOSm/iuk8DY0Ap1b2GhtHXxsfZN4j/X0fOx4auEIknEhqv4OiUn1L13Z/+xWfWVaG4q0dxUormpRHNTieamEs1NJZqbJ1Q0jHvdiJo5S2cVjSNOCHZhn3/SnuYnIvl3yomIIz7MXZMn9hydRCrR3FSiualEc1OJ5qYSzU0lmptKNDePjWgwcPePT7/g+4cp8wCW4GXaryK3tL+mLdD5x62ppllgu7bso8q/2HIbzGWdNmWnSJwAAAAASUVORK5CYII=);
|
||||
background-size:11px 15px;
|
||||
width:11px;
|
||||
background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAA8CAYAAAAQTCjdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAASCQAAEgkB80sG3AAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAKjSURBVGiB7dpPiFVVHMDxz7m9NCtMyI2bEJEC25WrEkzHUXCRraIwdNE8ZxfYIlcis1ZEbGEzT1QCF4XgH1CyWhUoJKIWNRGEiCNKmkSiYTzfcfGuOokx77x3ZlS8382959zfn+/invvn3RdijHIRBrwkOINCYXEcdjpb7VyiYdBsLScwt5y6IloYdzqXo36Ro0gY9IKWo+5JwmzBt2HQnBw9ehYNazyn5TBee8Dh+Vq+CWu92GufnkTDR6ab7gDeBNHouMM/l9tXTXM0fGBmL726Fg1Dam74EsvKqR8VNowL2Yzj5f7rnnE4DHq2235diYYhhTGfC94up35T0y+6di/ITU0rKVd+sEi0P7xr2pSJOu8zvF+OzqEv7vDH/WFxt7/cshy/ticsN8sXYUht0kXDOlsF9XJ4UaEvNoz9X3zc5bKaZThbyr5jzJ4wlNY7KTgM+ES0vhz+KeiPw36fKC/ucAF9uFBOrTZm26SJCtaV27+xIo7cXdkTEhvOoh+XyxprU1qnim7CQdGK2HAyKRexYVShT3RItDElN+mkjiP2Ym+S3f01hv2EVal5WW6hU0ElmptaqJuBpXg6MbeFH2LDpU6CQ93zWIKnEvs0cayGU3glMfkOo1jQYewZzOuyz7FC95Jwo5OgUFfgeg993hh/eTqCTxOSm/iuk8DY0Ap1b2GhtHXxsfZN4j/X0fOx4auEIknEhqv4OiUn1L13Z/+xWfWVaG4q0dxUormpRHNTieamEs1NJZqbJ1Q0jHvdiJo5S2cVjSNOCHZhn3/SnuYnIvl3yomIIz7MXZMn9hydRCrR3FSiualEc1OJ5qYSzU0lmptKNDePjWgwcPePT7/g+4cp8wCW4GXaryK3tL+mLdD5x62ppllgu7bso8q/2HIbzGWdNmWnSJwAAAAASUVORK5CYII=);
|
||||
background-size:11px 15px;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -153,20 +153,20 @@ Author: Camaran
|
|||
*
|
||||
*/
|
||||
#addToHomeScreen .addToHomeTouchIcon {
|
||||
display:block;
|
||||
float:left;
|
||||
-webkit-border-radius:6px;
|
||||
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);
|
||||
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;
|
||||
background-size:57px 57px;
|
||||
margin:0 12px 0 0;
|
||||
border:1px solid #333;
|
||||
-webkit-background-clip:padding-box;
|
||||
background-clip:padding-box;
|
||||
display:block;
|
||||
float:left;
|
||||
-webkit-border-radius:6px;
|
||||
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);
|
||||
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;
|
||||
background-size:57px 57px;
|
||||
margin:0 12px 0 0;
|
||||
border:1px solid #333;
|
||||
-webkit-background-clip:padding-box;
|
||||
background-clip:padding-box;
|
||||
}
|
||||
|
|
|
@ -11,122 +11,122 @@ Author: Valérian Saliou
|
|||
*/
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
body {
|
||||
font: normal 14.6px 'PT Sans', sans-serif;
|
||||
text-shadow: 0 0 5px white;
|
||||
font: normal 14.6px 'PT Sans', sans-serif;
|
||||
text-shadow: 0 0 5px white;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-bottom: 15px;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: black;
|
||||
outline-style: none;
|
||||
text-decoration: none;
|
||||
color: black;
|
||||
outline-style: none;
|
||||
}
|
||||
|
||||
a:hover,
|
||||
a:focus {
|
||||
cursor: pointer;
|
||||
text-decoration: underline;
|
||||
cursor: pointer;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
legend {
|
||||
color: black;
|
||||
color: black;
|
||||
}
|
||||
|
||||
input,
|
||||
textarea {
|
||||
background-color: white;
|
||||
border: 1px solid #636363;
|
||||
font-size: 0.95em;
|
||||
padding: 2px;
|
||||
outline-style: none;
|
||||
-moz-border-radius: 2px;
|
||||
-webkit-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
-moz-box-shadow: inset 0 3px 10px #dcdcdc;
|
||||
-webkit-box-shadow: inset 0 3px 10px #dcdcdc;
|
||||
box-shadow: inset 0 3px 10px #dcdcdc;
|
||||
background-color: white;
|
||||
border: 1px solid #636363;
|
||||
font-size: 0.95em;
|
||||
padding: 2px;
|
||||
outline-style: none;
|
||||
-moz-border-radius: 2px;
|
||||
-webkit-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
-moz-box-shadow: inset 0 3px 10px #dcdcdc;
|
||||
-webkit-box-shadow: inset 0 3px 10px #dcdcdc;
|
||||
box-shadow: inset 0 3px 10px #dcdcdc;
|
||||
}
|
||||
|
||||
textarea {
|
||||
font-size: 1.1em;
|
||||
resize: none;
|
||||
font-size: 1.1em;
|
||||
resize: none;
|
||||
}
|
||||
|
||||
input:focus,
|
||||
input[type="submit"]:hover,
|
||||
input[type="reset"]:hover,
|
||||
textarea:focus {
|
||||
border: 1px solid #e1a014;
|
||||
-moz-box-shadow: inset 0 3px 10px #edd9bc;
|
||||
-webkit-box-shadow: inset 0 3px 10px #edd9bc;
|
||||
box-shadow: inset 0 3px 10px #edd9bc;
|
||||
border: 1px solid #e1a014;
|
||||
-moz-box-shadow: inset 0 3px 10px #edd9bc;
|
||||
-webkit-box-shadow: inset 0 3px 10px #edd9bc;
|
||||
box-shadow: inset 0 3px 10px #edd9bc;
|
||||
}
|
||||
|
||||
input[type="submit"],
|
||||
input[type="reset"] {
|
||||
cursor: pointer;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
input[type="submit"]:active,
|
||||
input[type="reset"]:active {
|
||||
-moz-box-shadow: inset 0 3px 15px #e1a753;
|
||||
-webkit-box-shadow: inset 0 3px 15px #e1a753;
|
||||
box-shadow: inset 0 3px 15px #e1a753;
|
||||
-moz-box-shadow: inset 0 3px 15px #e1a753;
|
||||
-webkit-box-shadow: inset 0 3px 15px #e1a753;
|
||||
box-shadow: inset 0 3px 15px #e1a753;
|
||||
}
|
||||
|
||||
input[disabled],
|
||||
textarea[disabled] {
|
||||
background-color: #f3f3f3;
|
||||
border: 1px solid #989898;
|
||||
background-color: #f3f3f3;
|
||||
border: 1px solid #989898;
|
||||
}
|
||||
|
||||
input:placeholder {
|
||||
color: #78868a !important;
|
||||
color: #78868a !important;
|
||||
}
|
||||
|
||||
input:-moz-placeholder {
|
||||
color: #78868a !important;
|
||||
color: #78868a !important;
|
||||
}
|
||||
|
||||
input::-webkit-input-placeholder {
|
||||
color: #78868a !important;
|
||||
color: #78868a !important;
|
||||
}
|
||||
|
||||
input.placeholder {
|
||||
color: #78868a !important;
|
||||
color: #78868a !important;
|
||||
}
|
||||
|
||||
input[type="checkbox"] {
|
||||
margin-top: 2px;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
background: transparent none !important;
|
||||
border: 0 none !important;
|
||||
background: transparent none !important;
|
||||
border: 0 none !important;
|
||||
}
|
||||
|
||||
.please-complete,
|
||||
.please-complete:hover,
|
||||
.please-complete:focus {
|
||||
border: 1px #ac2525 solid !important;
|
||||
-moz-box-shadow: inset 0 3px 10px #f39c9c !important;
|
||||
-webkit-box-shadow: inset 0 3px 10px #f39c9c !important;
|
||||
box-shadow: inset 0 3px 10px #f39c9c !important;
|
||||
border: 1px #ac2525 solid !important;
|
||||
-moz-box-shadow: inset 0 3px 10px #f39c9c !important;
|
||||
-webkit-box-shadow: inset 0 3px 10px #f39c9c !important;
|
||||
box-shadow: inset 0 3px 10px #f39c9c !important;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none !important;
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.clear {
|
||||
clear: both !important;
|
||||
clear: both !important;
|
||||
}
|
||||
|
|
|
@ -11,602 +11,602 @@ Author: Valérian Saliou
|
|||
*/
|
||||
|
||||
#manager {
|
||||
background-color: rgb(20,20,20);
|
||||
background-color: rgba(20,20,20,0.85);
|
||||
width: 945px;
|
||||
margin: 0 auto 25px;
|
||||
padding-bottom: 17px;
|
||||
-moz-border-radius-bottomleft: 4px;
|
||||
-moz-border-radius-bottomright: 4px;
|
||||
-webkit-border-bottom-left-radius: 4px;
|
||||
-webkit-border-bottom-right-radius: 4px;
|
||||
border-bottom-left-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
-moz-box-shadow: 0 0 35px #5c5c5c;
|
||||
-webkit-box-shadow: 0 0 35px #5c5c5c;
|
||||
box-shadow: 0 0 35px #5c5c5c;
|
||||
background-color: rgb(20,20,20);
|
||||
background-color: rgba(20,20,20,0.85);
|
||||
width: 945px;
|
||||
margin: 0 auto 25px;
|
||||
padding-bottom: 17px;
|
||||
-moz-border-radius-bottomleft: 4px;
|
||||
-moz-border-radius-bottomright: 4px;
|
||||
-webkit-border-bottom-left-radius: 4px;
|
||||
-webkit-border-bottom-right-radius: 4px;
|
||||
border-bottom-left-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
-moz-box-shadow: 0 0 35px #5c5c5c;
|
||||
-webkit-box-shadow: 0 0 35px #5c5c5c;
|
||||
box-shadow: 0 0 35px #5c5c5c;
|
||||
}
|
||||
|
||||
#manager a {
|
||||
color: black;
|
||||
text-decoration: underline;
|
||||
color: black;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#manager .clear {
|
||||
clear: both;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
#manager fieldset {
|
||||
border: 1px solid black;
|
||||
margin: 22px 0 15px 0;
|
||||
padding: 7px 2px 5px 2px;
|
||||
-moz-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
border: 1px solid black;
|
||||
margin: 22px 0 15px 0;
|
||||
padding: 7px 2px 5px 2px;
|
||||
-moz-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
#manager legend {
|
||||
font-size: 0.9em;
|
||||
margin: 0 0 0 15px;
|
||||
padding: 0 2px;
|
||||
text-transform: uppercase;
|
||||
font-size: 0.9em;
|
||||
margin: 0 0 0 15px;
|
||||
padding: 0 2px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
#manager label {
|
||||
width: 200px;
|
||||
display: block;
|
||||
float: left;
|
||||
clear: both;
|
||||
margin: 0 0 9px 12px;
|
||||
width: 200px;
|
||||
display: block;
|
||||
float: left;
|
||||
clear: both;
|
||||
margin: 0 0 9px 12px;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #manager label {
|
||||
margin-left: 0;
|
||||
margin-right: 12px;
|
||||
float: right;
|
||||
margin-left: 0;
|
||||
margin-right: 12px;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#manager label.master {
|
||||
text-decoration: underline;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#manager input,
|
||||
#manager select {
|
||||
float: left;
|
||||
margin-bottom: 5px;
|
||||
float: left;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #manager input,
|
||||
html[dir="rtl"] #manager select {
|
||||
float: right;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#manager input[type="radio"] {
|
||||
margin: 2px 8px 5px 0;
|
||||
margin: 2px 8px 5px 0;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #manager input[type="radio"] {
|
||||
margin-right: 0;
|
||||
margin-left: 8px;
|
||||
margin-right: 0;
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
#manager input[type="text"],
|
||||
#manager input[type="url"],
|
||||
#manager input[type="password"],
|
||||
#manager select {
|
||||
margin-top: -2px;
|
||||
font-size: 0.95em;
|
||||
margin-top: -2px;
|
||||
font-size: 0.95em;
|
||||
}
|
||||
|
||||
#manager input[type="text"],
|
||||
#manager input[type="url"],
|
||||
#manager input[type="password"] {
|
||||
padding: 3px;
|
||||
min-width: 220px;
|
||||
padding: 3px;
|
||||
min-width: 220px;
|
||||
}
|
||||
|
||||
#manager input.icon {
|
||||
padding-left: 24px;
|
||||
min-width: 199px;
|
||||
max-height: 18px;
|
||||
padding-left: 24px;
|
||||
min-width: 199px;
|
||||
max-height: 18px;
|
||||
}
|
||||
|
||||
#manager input.icon#admin_name {
|
||||
background-position: 4px -510px;
|
||||
background-position: 4px -510px;
|
||||
}
|
||||
|
||||
#manager input.icon#admin_password,
|
||||
#manager input.icon#user_repassword {
|
||||
background-position: 4px -532px;
|
||||
background-position: 4px -532px;
|
||||
}
|
||||
|
||||
#manager input.icon#user_name,
|
||||
#manager input.icon#music_artist {
|
||||
background-position: 4px -554px;
|
||||
background-position: 4px -554px;
|
||||
}
|
||||
|
||||
#manager input.icon#user_password {
|
||||
background-position: 4px -576px;
|
||||
background-position: 4px -576px;
|
||||
}
|
||||
|
||||
#manager input.icon#music_title {
|
||||
background-position: 4px -598px;
|
||||
background-position: 4px -598px;
|
||||
}
|
||||
|
||||
#manager input.icon#music_album {
|
||||
background-position: 4px -620px;
|
||||
background-position: 4px -620px;
|
||||
}
|
||||
|
||||
#manager input.icon#background_image_color,
|
||||
#manager input.icon#background_color_color {
|
||||
background-position: 4px -641px;
|
||||
background-position: 4px -641px;
|
||||
}
|
||||
|
||||
#manager select {
|
||||
min-width: 160px;
|
||||
max-width: 230px;
|
||||
min-width: 160px;
|
||||
max-width: 230px;
|
||||
}
|
||||
|
||||
#manager-top {
|
||||
padding: 25px 45px 30px;
|
||||
padding: 25px 45px 30px;
|
||||
}
|
||||
|
||||
#manager-top .logo {
|
||||
background-position: 0 0;
|
||||
min-width: 89px;
|
||||
height: 40px;
|
||||
padding: 28px 0 0 65px;
|
||||
font-size: 32px;
|
||||
color: white;
|
||||
text-transform: lowercase;
|
||||
float: left;
|
||||
text-shadow: 0 1px 1px black;
|
||||
background-position: 0 0;
|
||||
min-width: 89px;
|
||||
height: 40px;
|
||||
padding: 28px 0 0 65px;
|
||||
font-size: 32px;
|
||||
color: white;
|
||||
text-transform: lowercase;
|
||||
float: left;
|
||||
text-shadow: 0 1px 1px black;
|
||||
}
|
||||
|
||||
#manager-top .meta {
|
||||
background-color: #e0eaec;
|
||||
font-size: 0.9em;
|
||||
padding: 12px 7px 12px 14px;
|
||||
float: right;
|
||||
-moz-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
-moz-box-shadow: 0 0 10px #202020;
|
||||
-webkit-box-shadow: 0 0 10px #202020;
|
||||
box-shadow: 0 0 10px #202020;
|
||||
background-color: #e0eaec;
|
||||
font-size: 0.9em;
|
||||
padding: 12px 7px 12px 14px;
|
||||
float: right;
|
||||
-moz-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
-moz-box-shadow: 0 0 10px #202020;
|
||||
-webkit-box-shadow: 0 0 10px #202020;
|
||||
box-shadow: 0 0 10px #202020;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #manager-top .meta {
|
||||
padding-left: 7px;
|
||||
padding-right: 14px;
|
||||
padding-left: 7px;
|
||||
padding-right: 14px;
|
||||
}
|
||||
|
||||
#manager-top .meta span {
|
||||
margin-right: 10px;
|
||||
color: black;
|
||||
margin-right: 10px;
|
||||
color: black;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #manager-top .meta span {
|
||||
margin-right: 0;
|
||||
margin-left: 10px;
|
||||
margin-right: 0;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
#manager-top .meta a {
|
||||
background-color: #f1f6fd;
|
||||
border: 1px solid #b9cbcf;
|
||||
color: #224249;
|
||||
padding: 4px 8px 4px 21px;
|
||||
margin-left: 2px;
|
||||
text-decoration: none;
|
||||
-moz-border-radius: 2px;
|
||||
-webkit-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
background-color: #f1f6fd;
|
||||
border: 1px solid #b9cbcf;
|
||||
color: #224249;
|
||||
padding: 4px 8px 4px 21px;
|
||||
margin-left: 2px;
|
||||
text-decoration: none;
|
||||
-moz-border-radius: 2px;
|
||||
-webkit-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
#manager-top .meta a:hover,
|
||||
#manager-top .meta a:focus {
|
||||
border: 1px solid #95b1b7;
|
||||
border: 1px solid #95b1b7;
|
||||
}
|
||||
|
||||
#manager-top .meta a:active {
|
||||
border: 1px solid #77989f;
|
||||
border: 1px solid #77989f;
|
||||
}
|
||||
|
||||
#manager-top .meta a.logout {
|
||||
background-position: 3px -69px;
|
||||
background-position: 3px -69px;
|
||||
}
|
||||
|
||||
#manager-top .meta a.close {
|
||||
background-position: 3px -90px;
|
||||
background-position: 3px -90px;
|
||||
}
|
||||
|
||||
#manager-tabs {
|
||||
margin-left: 12px;
|
||||
margin-left: 12px;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #manager-tabs {
|
||||
margin-left: 0;
|
||||
margin-right: 12px;
|
||||
margin-left: 0;
|
||||
margin-right: 12px;
|
||||
}
|
||||
|
||||
#manager-tabs a {
|
||||
background-color: #d9e7ea;
|
||||
color: #204249;
|
||||
width: 107px;
|
||||
height: 17px;
|
||||
padding: 4px 4px 4px 16px;
|
||||
margin-left: 4px;
|
||||
font-size: 0.94em;
|
||||
text-decoration: none;
|
||||
overflow: hidden;
|
||||
float: left;
|
||||
-moz-border-radius-topright: 3px;
|
||||
-moz-border-radius-topleft: 3px;
|
||||
-webkit-border-top-right-radius: 3px;
|
||||
-webkit-border-top-left-radius: 3px;
|
||||
border-top-right-radius: 3px;
|
||||
border-top-left-radius: 3px;
|
||||
background-color: #d9e7ea;
|
||||
color: #204249;
|
||||
width: 107px;
|
||||
height: 17px;
|
||||
padding: 4px 4px 4px 16px;
|
||||
margin-left: 4px;
|
||||
font-size: 0.94em;
|
||||
text-decoration: none;
|
||||
overflow: hidden;
|
||||
float: left;
|
||||
-moz-border-radius-topright: 3px;
|
||||
-moz-border-radius-topleft: 3px;
|
||||
-webkit-border-top-right-radius: 3px;
|
||||
-webkit-border-top-left-radius: 3px;
|
||||
border-top-right-radius: 3px;
|
||||
border-top-left-radius: 3px;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #manager-tabs a {
|
||||
margin-left: 0;
|
||||
margin-right: 4px;
|
||||
padding-left: 4px;
|
||||
padding-right: 16px;
|
||||
float: right;
|
||||
margin-left: 0;
|
||||
margin-right: 4px;
|
||||
padding-left: 4px;
|
||||
padding-right: 16px;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#manager-tabs a:hover,
|
||||
#manager-tabs a:focus {
|
||||
background-color: #cedee1;
|
||||
text-decoration: none;
|
||||
background-color: #cedee1;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#manager-tabs a:active {
|
||||
background-color: #c3d3d7;
|
||||
text-decoration: none;
|
||||
background-color: #c3d3d7;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#manager-tabs a.tab-active {
|
||||
background-color: #e4eef9 !important;
|
||||
background-color: #e4eef9 !important;
|
||||
}
|
||||
|
||||
#manager-content {
|
||||
background: #e4eef9;
|
||||
background: -moz-linear-gradient(top, #e4eef9, #d0e5fa);
|
||||
background: -webkit-gradient(linear, left top, left bottom, from(#e4eef9), to(#d0e5fa));
|
||||
background: -webkit-linear-gradient(top, #e4eef9 0%, #d0e5fa 100%);
|
||||
background: -o-linear-gradient(top, #e4eef9 0%, #d0e5fa 100%);
|
||||
color: black;
|
||||
font-size: 0.9em;
|
||||
margin: 0 10px;
|
||||
padding: 20px 24px;
|
||||
min-height: 260px;
|
||||
clear: both;
|
||||
right: 10px;
|
||||
-moz-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
-moz-box-shadow: 0 0 20px #202020;
|
||||
-webkit-box-shadow: 0 0 20px #202020;
|
||||
box-shadow: 0 0 20px #202020;
|
||||
background: #e4eef9;
|
||||
background: -moz-linear-gradient(top, #e4eef9, #d0e5fa);
|
||||
background: -webkit-gradient(linear, left top, left bottom, from(#e4eef9), to(#d0e5fa));
|
||||
background: -webkit-linear-gradient(top, #e4eef9 0%, #d0e5fa 100%);
|
||||
background: -o-linear-gradient(top, #e4eef9 0%, #d0e5fa 100%);
|
||||
color: black;
|
||||
font-size: 0.9em;
|
||||
margin: 0 10px;
|
||||
padding: 20px 24px;
|
||||
min-height: 260px;
|
||||
clear: both;
|
||||
right: 10px;
|
||||
-moz-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
-moz-box-shadow: 0 0 20px #202020;
|
||||
-webkit-box-shadow: 0 0 20px #202020;
|
||||
box-shadow: 0 0 20px #202020;
|
||||
}
|
||||
|
||||
#manager-content h3 {
|
||||
padding-left: 24px;
|
||||
margin-bottom: 15px;
|
||||
float: left;
|
||||
padding-left: 24px;
|
||||
margin-bottom: 15px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #manager-content h3 {
|
||||
float: right;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#manager-content h3.login {
|
||||
background-position: 0 -466px;
|
||||
background-position: 0 -466px;
|
||||
}
|
||||
|
||||
#manager-content h3.statistics {
|
||||
background-position: 0 -203px;
|
||||
background-position: 0 -203px;
|
||||
}
|
||||
|
||||
#manager-content h3.configuration {
|
||||
background-position: 0 -224px;
|
||||
background-position: 0 -224px;
|
||||
}
|
||||
|
||||
#manager-content h3.hosts {
|
||||
background-position: 0 -246px;
|
||||
background-position: 0 -246px;
|
||||
}
|
||||
|
||||
#manager-content h3.storage {
|
||||
background-position: 0 -268px;
|
||||
background-position: 0 -268px;
|
||||
}
|
||||
|
||||
#manager-content h3.design {
|
||||
background-position: 0 -290px;
|
||||
background-position: 0 -290px;
|
||||
}
|
||||
|
||||
#manager-content h3.users {
|
||||
background-position: 0 -312px;
|
||||
background-position: 0 -312px;
|
||||
}
|
||||
|
||||
#manager-content h3.updates {
|
||||
background-position: 0 -334px;
|
||||
background-position: 0 -334px;
|
||||
}
|
||||
|
||||
#manager-content h4 {
|
||||
border-top: 1px dotted black;
|
||||
padding-top: 5px;
|
||||
margin: 20px 0 14px;
|
||||
clear: both;
|
||||
border-top: 1px dotted black;
|
||||
padding-top: 5px;
|
||||
margin: 20px 0 14px;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
#manager-content ul,
|
||||
#manager-content ol {
|
||||
width: 380px;
|
||||
margin: 8px 0 20px 18px;
|
||||
width: 380px;
|
||||
margin: 8px 0 20px 18px;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #manager-content ul,
|
||||
html[dir="rtl"] #manager-content ol {
|
||||
margin-left: 0;
|
||||
margin-right: 18px;
|
||||
margin-left: 0;
|
||||
margin-right: 18px;
|
||||
}
|
||||
|
||||
#manager-content li {
|
||||
margin-bottom: 3px;
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #manager-content li {
|
||||
margin-right: 15px;
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
#manager-content li.total {
|
||||
margin-bottom: 14px;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
#manager-content li b {
|
||||
width: 190px;
|
||||
display: inline-block;
|
||||
width: 190px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
#manager-content li span {
|
||||
margin-left: 10px;
|
||||
display: inline-block;
|
||||
margin-left: 10px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
#manager-content ul.stats,
|
||||
#manager-content ol.stats {
|
||||
float: left;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#manager-content object.stats {
|
||||
border: 1px dotted #bed4d9;
|
||||
width: 450px;
|
||||
height: 270px;
|
||||
margin-bottom: 20px;
|
||||
float: right;
|
||||
border: 1px dotted #bed4d9;
|
||||
width: 450px;
|
||||
height: 270px;
|
||||
margin-bottom: 20px;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#manager-content p,
|
||||
#manager-content div {
|
||||
margin-bottom: 10px;
|
||||
clear: both;
|
||||
margin-bottom: 10px;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
#manager-content .info {
|
||||
color: black;
|
||||
border-width: 1px;
|
||||
border-style: dashed;
|
||||
padding: 6px 8px;
|
||||
display: block;
|
||||
text-decoration: none;
|
||||
color: black;
|
||||
border-width: 1px;
|
||||
border-style: dashed;
|
||||
padding: 6px 8px;
|
||||
display: block;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#manager-content .info.bottomspace {
|
||||
margin-bottom: 16px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
#manager-content .info.smallspace {
|
||||
margin: 14px 0 10px 0;
|
||||
margin: 14px 0 10px 0;
|
||||
}
|
||||
|
||||
#manager-content .info.bigspace {
|
||||
margin: 35px 0 20px 0;
|
||||
margin: 35px 0 20px 0;
|
||||
}
|
||||
|
||||
#manager-content .info.neutral {
|
||||
background-color: #f0f19d;
|
||||
border-color: #b3ad4f;
|
||||
background-color: #f0f19d;
|
||||
border-color: #b3ad4f;
|
||||
}
|
||||
|
||||
#manager-content a.info.neutral:hover,
|
||||
#manager-content a.info.neutral:focus {
|
||||
background-color: #eced96;
|
||||
background-color: #eced96;
|
||||
}
|
||||
|
||||
#manager-content a.info.neutral:active {
|
||||
background-color: #e9ea93;
|
||||
background-color: #e9ea93;
|
||||
}
|
||||
|
||||
#manager-content .info.success {
|
||||
background-color: #a8dca9;
|
||||
border-color: #5e9f5f;
|
||||
background-color: #a8dca9;
|
||||
border-color: #5e9f5f;
|
||||
}
|
||||
|
||||
#manager-content a.info.success:hover,
|
||||
#manager-content a.info.success:focus {
|
||||
background-color: #a0d5a1;
|
||||
background-color: #a0d5a1;
|
||||
}
|
||||
|
||||
#manager-content a.info.success:active {
|
||||
background-color: #9ad09b;
|
||||
background-color: #9ad09b;
|
||||
}
|
||||
|
||||
#manager-content .info.fail {
|
||||
background-color: #f19d9d;
|
||||
border-color: #b34f4f;
|
||||
background-color: #f19d9d;
|
||||
border-color: #b34f4f;
|
||||
}
|
||||
|
||||
#manager-content a.info.fail:hover,
|
||||
#manager-content a.info.fail:focus {
|
||||
background-color: #ea9595;
|
||||
background-color: #ea9595;
|
||||
}
|
||||
|
||||
#manager-content a.info.fail:active {
|
||||
background-color: #e59090;
|
||||
background-color: #e59090;
|
||||
}
|
||||
|
||||
#manager-content .browse {
|
||||
margin: 2px 0 6px;
|
||||
max-height: 243px;
|
||||
overflow: auto;
|
||||
margin: 2px 0 6px;
|
||||
max-height: 243px;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
#manager-content .browse .one-browse {
|
||||
padding: 5px 10px 5px 34px;
|
||||
height: 17px;
|
||||
padding: 5px 10px 5px 34px;
|
||||
height: 17px;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #manager-content .browse .one-browse a,
|
||||
html[dir="rtl"] #manager-content .browse .one-browse span {
|
||||
float: left;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#manager-content .browse .user {
|
||||
background-position: 9px -111px;
|
||||
background-position: 9px -111px;
|
||||
}
|
||||
|
||||
#manager-content .browse .other {
|
||||
background-position: 9px -133px;
|
||||
background-position: 9px -133px;
|
||||
}
|
||||
|
||||
#manager-content .browse .folder {
|
||||
background-position: 9px -178px;
|
||||
background-position: 9px -178px;
|
||||
}
|
||||
|
||||
#manager-content .browse .audio {
|
||||
background-position: 9px -154px;
|
||||
background-position: 9px -154px;
|
||||
}
|
||||
|
||||
#manager-content .browse .alert {
|
||||
background-position: 9px -353px;
|
||||
background-position: 9px -353px;
|
||||
}
|
||||
|
||||
#manager-content .browse .image {
|
||||
background-position: 9px -374px;
|
||||
background-position: 9px -374px;
|
||||
}
|
||||
|
||||
#manager-content .browse .video {
|
||||
background-position: 9px -397px;
|
||||
background-position: 9px -397px;
|
||||
}
|
||||
|
||||
#manager-content .browse .document {
|
||||
background-position: 9px -418px;
|
||||
background-position: 9px -418px;
|
||||
}
|
||||
|
||||
#manager-content .browse .package {
|
||||
background-position: 9px -441px;
|
||||
background-position: 9px -441px;
|
||||
}
|
||||
|
||||
#manager-content .browse .previous {
|
||||
background-position: 9px -485px;
|
||||
margin-bottom: 4px;
|
||||
background-position: 9px -485px;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
#manager-content .browse div {
|
||||
margin: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#manager-content .browse input {
|
||||
float: right;
|
||||
margin: 1px 0;
|
||||
float: right;
|
||||
margin: 1px 0;
|
||||
}
|
||||
|
||||
#manager-content .browse .odd {
|
||||
background-color: #e9f1fd;
|
||||
background-color: #e9f1fd;
|
||||
}
|
||||
|
||||
#manager-content .browse .even {
|
||||
background-color: #f1f6fd;
|
||||
background-color: #f1f6fd;
|
||||
}
|
||||
|
||||
#manager-content .sub {
|
||||
border-width: 0 0 0 1px;
|
||||
border-style: solid;
|
||||
border-color: black;
|
||||
margin: 5px 0 20px 22px;
|
||||
padding-left: 12px;
|
||||
clear: both;
|
||||
border-width: 0 0 0 1px;
|
||||
border-style: solid;
|
||||
border-color: black;
|
||||
margin: 5px 0 20px 22px;
|
||||
padding-left: 12px;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #manager-content .sub {
|
||||
border-width: 0 1px 0 0;
|
||||
padding-right: 12px;
|
||||
padding-left: 0;
|
||||
border-width: 0 1px 0 0;
|
||||
padding-right: 12px;
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
#manager span.logo_links a {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin-right: 6px;
|
||||
float: left;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin-right: 6px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#manager span.logo_links a.remove {
|
||||
background-position: 0 -688px;
|
||||
background-position: 0 -688px;
|
||||
}
|
||||
|
||||
#manager span.logo_links a.view {
|
||||
background-position: 0 -666px;
|
||||
background-position: 0 -666px;
|
||||
}
|
||||
|
||||
#manager-content .clear {
|
||||
margin: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#manager-content textarea.notice-text {
|
||||
height: 70px;
|
||||
width: 600px;
|
||||
margin-left: 4px;
|
||||
padding: 5px;
|
||||
font-size: 1.2em;
|
||||
height: 70px;
|
||||
width: 600px;
|
||||
margin-left: 4px;
|
||||
padding: 5px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
#manager-buttons {
|
||||
margin-top: 22px;
|
||||
margin-top: 22px;
|
||||
}
|
||||
|
||||
#manager-buttons input {
|
||||
border: 1px solid white;
|
||||
background-color: rgb(255,255,255);
|
||||
background-color: rgba(255,255,255,0.1);
|
||||
color: white;
|
||||
padding: 4px 8px;
|
||||
margin-left: -12px;
|
||||
margin-right: 20px;
|
||||
font-size: 1em;
|
||||
text-shadow: 0 1px 1px black;
|
||||
float: right;
|
||||
-moz-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
-moz-box-shadow: 0 0 5px #202020;
|
||||
-webkit-box-shadow: 0 0 5px #202020;
|
||||
box-shadow: 0 0 5px #202020;
|
||||
border: 1px solid white;
|
||||
background-color: rgb(255,255,255);
|
||||
background-color: rgba(255,255,255,0.1);
|
||||
color: white;
|
||||
padding: 4px 8px;
|
||||
margin-left: -12px;
|
||||
margin-right: 20px;
|
||||
font-size: 1em;
|
||||
text-shadow: 0 1px 1px black;
|
||||
float: right;
|
||||
-moz-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
-moz-box-shadow: 0 0 5px #202020;
|
||||
-webkit-box-shadow: 0 0 5px #202020;
|
||||
box-shadow: 0 0 5px #202020;
|
||||
}
|
||||
|
||||
#manager-buttons input:hover,
|
||||
#manager-buttons input:focus {
|
||||
cursor: pointer;
|
||||
background-color: rgb(255,255,255);
|
||||
background-color: rgba(255,255,255,0.2);
|
||||
-moz-box-shadow: 0 0 15px #202020;
|
||||
-webkit-box-shadow: 0 0 15px #202020;
|
||||
box-shadow: 0 0 15px #202020;
|
||||
cursor: pointer;
|
||||
background-color: rgb(255,255,255);
|
||||
background-color: rgba(255,255,255,0.2);
|
||||
-moz-box-shadow: 0 0 15px #202020;
|
||||
-webkit-box-shadow: 0 0 15px #202020;
|
||||
box-shadow: 0 0 15px #202020;
|
||||
}
|
||||
|
||||
#manager-buttons input:active {
|
||||
background-color: rgb(255,255,255);
|
||||
background-color: rgba(255,255,255,0.3);
|
||||
background-color: rgb(255,255,255);
|
||||
background-color: rgba(255,255,255,0.3);
|
||||
}
|
||||
|
|
|
@ -11,38 +11,38 @@ Author: Valérian Saliou
|
|||
*/
|
||||
|
||||
#me .content {
|
||||
padding: 10px 0;
|
||||
padding: 10px 0;
|
||||
}
|
||||
|
||||
#me .logo {
|
||||
background-position: 0 0;
|
||||
width: 300px;
|
||||
height: 61px;
|
||||
margin: 20px auto 0 auto;
|
||||
display: block;
|
||||
background-position: 0 0;
|
||||
width: 300px;
|
||||
height: 61px;
|
||||
margin: 20px auto 0 auto;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#me .infos {
|
||||
margin-top: 30px;
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
#me .infos p {
|
||||
margin-top: 8px;
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
#me .infos p.infos-title {
|
||||
margin-top: 0;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
#me .infos a {
|
||||
text-decoration: underline;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#me a.go {
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
width: 300px;
|
||||
margin: 30px auto 0 auto;
|
||||
padding: 8px 12px;
|
||||
display: block;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
width: 300px;
|
||||
margin: 30px auto 0 auto;
|
||||
padding: 8px 12px;
|
||||
display: block;
|
||||
}
|
File diff suppressed because it is too large
Load diff
|
@ -13,21 +13,21 @@ Authors: Valérian Saliou, Camaran
|
|||
/* BEGIN GENERAL STYLE */
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
body {
|
||||
font: normal 14.4px Helvetica, Verdana, sans-serif;
|
||||
background-color: #dcdcdc;
|
||||
margin: 0 auto;
|
||||
text-align: center;
|
||||
min-width: 200px;
|
||||
min-height: 260px;
|
||||
font: normal 14.4px Helvetica, Verdana, sans-serif;
|
||||
background-color: #dcdcdc;
|
||||
margin: 0 auto;
|
||||
text-align: center;
|
||||
min-width: 200px;
|
||||
min-height: 260px;
|
||||
}
|
||||
|
||||
a {
|
||||
color: black;
|
||||
color: black;
|
||||
}
|
||||
|
||||
/* END GENERAL STYLE */
|
||||
|
@ -35,17 +35,17 @@ a {
|
|||
/* BEGIN HEADER STYLE */
|
||||
|
||||
.header {
|
||||
background-color: #2d2d2d;
|
||||
border-bottom: 1px solid #6d6d6d;
|
||||
color: #405964;
|
||||
padding: 6px 0;
|
||||
height: 30px;
|
||||
background-color: #2d2d2d;
|
||||
border-bottom: 1px solid #6d6d6d;
|
||||
color: #405964;
|
||||
padding: 6px 0;
|
||||
height: 30px;
|
||||
}
|
||||
|
||||
.header div {
|
||||
background-position: 0 0;
|
||||
width: 83px;
|
||||
height: 30px;
|
||||
background-position: 0 0;
|
||||
width: 83px;
|
||||
height: 30px;
|
||||
}
|
||||
|
||||
/* END HEADER STYLE */
|
||||
|
@ -53,76 +53,76 @@ a {
|
|||
/* BEGIN HOME STYLE */
|
||||
|
||||
#home .header div {
|
||||
margin: 0 auto;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
#home .notification {
|
||||
padding: 2px;
|
||||
margin-top: -1px;
|
||||
padding: 2px;
|
||||
margin-top: -1px;
|
||||
}
|
||||
|
||||
#noscript {
|
||||
background: #86a2ff;
|
||||
border-bottom: 1px solid #5890d6;
|
||||
color: #1e4b82;
|
||||
background: #86a2ff;
|
||||
border-bottom: 1px solid #5890d6;
|
||||
color: #1e4b82;
|
||||
}
|
||||
|
||||
#error {
|
||||
background: #ff8686;
|
||||
border-bottom: 1px solid #d65858;
|
||||
color: #821e1e;
|
||||
display: none;
|
||||
background: #ff8686;
|
||||
border-bottom: 1px solid #d65858;
|
||||
color: #821e1e;
|
||||
display: none;
|
||||
}
|
||||
|
||||
#info {
|
||||
background: #f3eba7;
|
||||
border-bottom: 1px solid #d9d085;
|
||||
color: #5e5616;
|
||||
display: none;
|
||||
background: #f3eba7;
|
||||
border-bottom: 1px solid #d9d085;
|
||||
color: #5e5616;
|
||||
display: none;
|
||||
}
|
||||
|
||||
#home .login {
|
||||
padding: 8px 0;
|
||||
margin-top: 30px;
|
||||
margin-bottom: 30px;
|
||||
padding: 8px 0;
|
||||
margin-top: 30px;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
#home .login input {
|
||||
margin-top: 5px;
|
||||
padding: 2px;
|
||||
margin-top: 5px;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
#home .login input.xid,
|
||||
#home .login input.password {
|
||||
display: block;
|
||||
margin: 4px auto;
|
||||
font-size: 0.85em;
|
||||
padding: 4px;
|
||||
background-color: white;
|
||||
border: 1px solid #636363;
|
||||
width: 150px;
|
||||
padding-left: 24px;
|
||||
display: block;
|
||||
margin: 4px auto;
|
||||
font-size: 0.85em;
|
||||
padding: 4px;
|
||||
background-color: white;
|
||||
border: 1px solid #636363;
|
||||
width: 150px;
|
||||
padding-left: 24px;
|
||||
}
|
||||
|
||||
#home .login input.xid {
|
||||
background-position: 4px -30px;
|
||||
background-position: 4px -30px;
|
||||
}
|
||||
|
||||
#home .login input.password {
|
||||
background-position: 4px -53px;
|
||||
background-position: 4px -53px;
|
||||
}
|
||||
|
||||
#home .login label {
|
||||
margin-bottom: 12px;
|
||||
display: block;
|
||||
margin-bottom: 12px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#home .login label input {
|
||||
margin-right: 4px;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
#home a {
|
||||
font-size: 0.8em;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
/* END HOME STYLE */
|
||||
|
@ -131,83 +131,83 @@ a {
|
|||
|
||||
#talk .header div,
|
||||
#chat .header div {
|
||||
float: left;
|
||||
margin-left: 7px;
|
||||
float: left;
|
||||
margin-left: 7px;
|
||||
}
|
||||
|
||||
#talk .header button,
|
||||
#chat .header button {
|
||||
float: right;
|
||||
margin-right: 7px;
|
||||
padding: 2px;
|
||||
float: right;
|
||||
margin-right: 7px;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
#talk a.one-buddy {
|
||||
display: none;
|
||||
background-color: #87a5ab;
|
||||
border-bottom: 1px solid #5b8088;
|
||||
text-shadow: 1px 1px 1px #5b8088;
|
||||
text-decoration: none;
|
||||
color: white;
|
||||
outline-style: none;
|
||||
padding: 10px 0;
|
||||
display: none;
|
||||
background-color: #87a5ab;
|
||||
border-bottom: 1px solid #5b8088;
|
||||
text-shadow: 1px 1px 1px #5b8088;
|
||||
text-decoration: none;
|
||||
color: white;
|
||||
outline-style: none;
|
||||
padding: 10px 0;
|
||||
}
|
||||
|
||||
#talk a.one-buddy:hover {
|
||||
cursor: pointer;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#talk a.available,
|
||||
#talk a.chat {
|
||||
background-color: #83b187;
|
||||
border-bottom: 1px solid #4d8252;
|
||||
text-shadow: 1px 1px 1px #4d8252;
|
||||
background-color: #83b187;
|
||||
border-bottom: 1px solid #4d8252;
|
||||
text-shadow: 1px 1px 1px #4d8252;
|
||||
}
|
||||
|
||||
#talk a.available:hover,
|
||||
#talk a.chat:hover,
|
||||
#talk a.available:focus,
|
||||
#talk a.chat:focus {
|
||||
background-color: #89c68e;
|
||||
background-color: #89c68e;
|
||||
}
|
||||
|
||||
#talk a.available:active,
|
||||
#talk a.chat:active {
|
||||
background-color: #90d496;
|
||||
background-color: #90d496;
|
||||
}
|
||||
|
||||
#talk a.away {
|
||||
background-color: #e0be7b;
|
||||
border-bottom: 1px solid #ae8941;
|
||||
text-shadow: 1px 1px 1px #ae8941;
|
||||
background-color: #e0be7b;
|
||||
border-bottom: 1px solid #ae8941;
|
||||
text-shadow: 1px 1px 1px #ae8941;
|
||||
}
|
||||
|
||||
#talk a.away:hover,
|
||||
#talk a.away:focus {
|
||||
background-color: #eac784;
|
||||
background-color: #eac784;
|
||||
}
|
||||
|
||||
#talk a.away:active {
|
||||
background-color: #f3d294;
|
||||
background-color: #f3d294;
|
||||
}
|
||||
|
||||
#talk a.xa,
|
||||
#talk a.dnd {
|
||||
background-color: #db8989;
|
||||
border-bottom: 1px solid #a24343;
|
||||
text-shadow: 1px 1px 1px #a24343;
|
||||
background-color: #db8989;
|
||||
border-bottom: 1px solid #a24343;
|
||||
text-shadow: 1px 1px 1px #a24343;
|
||||
}
|
||||
|
||||
#talk a.xa:hover,
|
||||
#talk a.dnd:hover,
|
||||
#talk a.xa:focus,
|
||||
#talk a.dnd:focus {
|
||||
background-color: #e89797;
|
||||
background-color: #e89797;
|
||||
}
|
||||
|
||||
#talk a.xa:active,
|
||||
#talk a.dnd:active {
|
||||
background-color: #ef9f9f;
|
||||
background-color: #ef9f9f;
|
||||
}
|
||||
|
||||
/* END TALK STYLE */
|
||||
|
@ -215,88 +215,88 @@ a {
|
|||
/* BEGIN CHAT STYLE */
|
||||
|
||||
#chat {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
|
||||
#chat .one-chat,
|
||||
#chat .one-chat p,
|
||||
#chat .one-chat div,
|
||||
#chat .one-chat input {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
#chat .one-chat {
|
||||
top: 43px;
|
||||
left: 0;
|
||||
top: 43px;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
#chat .one-chat p {
|
||||
background-color: #87a5ab;
|
||||
border-bottom: 1px solid #5b8088;
|
||||
text-shadow: 1px 1px 1px #5b8088;
|
||||
color: white;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 18px;
|
||||
padding: 2px 0;
|
||||
font-size: 0.9em;
|
||||
background-color: #87a5ab;
|
||||
border-bottom: 1px solid #5b8088;
|
||||
text-shadow: 1px 1px 1px #5b8088;
|
||||
color: white;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 18px;
|
||||
padding: 2px 0;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
#chat .one-chat div {
|
||||
border-bottom: 1px solid #cbcbcb;
|
||||
top: 23px;
|
||||
left: 0;
|
||||
bottom: 25px;
|
||||
overflow: auto;
|
||||
text-align: left;
|
||||
border-bottom: 1px solid #cbcbcb;
|
||||
top: 23px;
|
||||
left: 0;
|
||||
bottom: 25px;
|
||||
overflow: auto;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #chat .one-chat div {
|
||||
text-align: right;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
#chat .one-chat span {
|
||||
display: block;
|
||||
font-size: 0.85em;
|
||||
margin: 4px 6px;
|
||||
word-wrap: break-word;
|
||||
display: block;
|
||||
font-size: 0.85em;
|
||||
margin: 4px 6px;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
#chat .one-chat b {
|
||||
margin-right: 3px;
|
||||
margin-right: 3px;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #chat .one-chat b {
|
||||
margin-right: auto;
|
||||
margin-left: 3px;
|
||||
margin-right: auto;
|
||||
margin-left: 3px;
|
||||
}
|
||||
|
||||
#chat .one-chat b.me {
|
||||
color: #123a5c;
|
||||
color: #123a5c;
|
||||
}
|
||||
|
||||
#chat .one-chat b.him {
|
||||
color: #801e1e;
|
||||
color: #801e1e;
|
||||
}
|
||||
|
||||
#chat .one-chat input {
|
||||
background-color: white;
|
||||
bottom: 0;
|
||||
height: 37px;
|
||||
width: 100%;
|
||||
border: none;
|
||||
background-color: white;
|
||||
bottom: 0;
|
||||
height: 37px;
|
||||
width: 100%;
|
||||
border: none;
|
||||
}
|
||||
|
||||
#chat .one-chat input.submit {
|
||||
right: 0;
|
||||
width: 35px;
|
||||
right: 0;
|
||||
width: 35px;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #chat .one-chat input.submit {
|
||||
left: 0;
|
||||
right: auto;
|
||||
left: 0;
|
||||
right: auto;
|
||||
}
|
||||
|
||||
/* END CHAT STYLE */
|
||||
|
|
|
@ -11,120 +11,120 @@ Author: Valérian Saliou
|
|||
*/
|
||||
|
||||
#mucadmin .content {
|
||||
padding: 10px 0 10px 0;
|
||||
padding: 10px 0 10px 0;
|
||||
}
|
||||
|
||||
#mucadmin .content p {
|
||||
margin: 5px 10px 5px 10px;
|
||||
text-align: justify;
|
||||
margin: 5px 10px 5px 10px;
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #mucadmin .mucadmin-head-text {
|
||||
float: right;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#mucadmin .mucadmin-head-jid {
|
||||
text-decoration: underline;
|
||||
font-size: 0.9em;
|
||||
float: right;
|
||||
margin: 2px 4px 1px 1px;
|
||||
text-decoration: underline;
|
||||
font-size: 0.9em;
|
||||
float: right;
|
||||
margin: 2px 4px 1px 1px;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #mucadmin .mucadmin-head-jid {
|
||||
margin-left: 4px;
|
||||
margin-right: 1px;
|
||||
float: left;
|
||||
margin-left: 4px;
|
||||
margin-right: 1px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#mucadmin .mucadmin-forms {
|
||||
height: 310px;
|
||||
width: 620px;
|
||||
margin: -5px 0 0 10px;
|
||||
padding: 6px 0 0 0;
|
||||
overflow: auto;
|
||||
height: 310px;
|
||||
width: 620px;
|
||||
margin: -5px 0 0 10px;
|
||||
padding: 6px 0 0 0;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #mucadmin .mucadmin-forms {
|
||||
margin-left: 0;
|
||||
margin-right: 10px;
|
||||
margin-left: 0;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
#mucadmin .mucadmin-forms label {
|
||||
width: 260px;
|
||||
width: 260px;
|
||||
}
|
||||
|
||||
#mucadmin .mucadmin-topic label,
|
||||
#mucadmin .mucadmin-aut label,
|
||||
#mucadmin .mucadmin-others label {
|
||||
font-size: 0.9em;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
#mucadmin .mucadmin-forms textarea {
|
||||
height: 60px;
|
||||
width: 300px;
|
||||
margin: 5px 12px 10px 0;
|
||||
height: 60px;
|
||||
width: 300px;
|
||||
margin: 5px 12px 10px 0;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #mucadmin .mucadmin-forms textarea {
|
||||
margin-right: 0;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
#mucadmin .results {
|
||||
height: auto;
|
||||
width: auto;
|
||||
overflow: visible;
|
||||
margin: 5px;
|
||||
height: auto;
|
||||
width: auto;
|
||||
overflow: visible;
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
#mucadmin .aut-group {
|
||||
float: left;
|
||||
padding-bottom: 4px;
|
||||
float: left;
|
||||
padding-bottom: 4px;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #mucadmin .aut-group {
|
||||
float: right;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#mucadmin .one-aut {
|
||||
clear: both;
|
||||
margin: 0 10px 5px 0;
|
||||
clear: both;
|
||||
margin: 0 10px 5px 0;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #mucadmin .one-aut {
|
||||
margin-right: 0;
|
||||
margin-left: 10px;
|
||||
margin-right: 0;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
#mucadmin .aut-add {
|
||||
clear: both;
|
||||
float: left;
|
||||
margin-bottom: 5px;
|
||||
font-size: 0.9em;
|
||||
clear: both;
|
||||
float: left;
|
||||
margin-bottom: 5px;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #mucadmin .aut-add {
|
||||
float: right;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#mucadmin .aut-remove {
|
||||
float: left;
|
||||
float: left;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #mucadmin .aut-remove {
|
||||
float: right;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#mucadmin .aut-remove:hover,
|
||||
#mucadmin .aut-remove:focus {
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#mucadmin .mucadmin-others a {
|
||||
float: left;
|
||||
font-size: 0.9em;
|
||||
float: left;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #mucadmin .mucadmin-others a {
|
||||
float: right;
|
||||
float: right;
|
||||
}
|
|
@ -11,372 +11,372 @@ Author: Valérian Saliou
|
|||
*/
|
||||
|
||||
#my-infos {
|
||||
background-color: rgb(20,20,20);
|
||||
background-color: rgba(20,20,20,0.85);
|
||||
color: #919191;
|
||||
margin-top: 8px;
|
||||
padding: 15px 6px 6px 6px;
|
||||
-moz-border-radius: 4px;
|
||||
-webkit-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
-moz-box-shadow: 0 0 6px #5c5c5c;
|
||||
-webkit-box-shadow: 0 0 6px #5c5c5c;
|
||||
box-shadow: 0 0 6px #5c5c5c;
|
||||
background-color: rgb(20,20,20);
|
||||
background-color: rgba(20,20,20,0.85);
|
||||
color: #919191;
|
||||
margin-top: 8px;
|
||||
padding: 15px 6px 6px 6px;
|
||||
-moz-border-radius: 4px;
|
||||
-webkit-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
-moz-box-shadow: 0 0 6px #5c5c5c;
|
||||
-webkit-box-shadow: 0 0 6px #5c5c5c;
|
||||
box-shadow: 0 0 6px #5c5c5c;
|
||||
}
|
||||
|
||||
#my-infos .content {
|
||||
background: #e8f1f3;
|
||||
background: -moz-linear-gradient(top, #e4edef, #e8f1f3);
|
||||
background: -webkit-gradient(linear, left top, left bottom, from(#e4edef), to(#e8f1f3));
|
||||
background: -webkit-linear-gradient(top, #e4edef 0%, #e8f1f3 100%);
|
||||
background: -o-linear-gradient(top, #e4edef 0%, #e8f1f3 100%);
|
||||
color: #919191;
|
||||
max-height: 140px;
|
||||
padding: 1px 0;
|
||||
-moz-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
background: #e8f1f3;
|
||||
background: -moz-linear-gradient(top, #e4edef, #e8f1f3);
|
||||
background: -webkit-gradient(linear, left top, left bottom, from(#e4edef), to(#e8f1f3));
|
||||
background: -webkit-linear-gradient(top, #e4edef 0%, #e8f1f3 100%);
|
||||
background: -o-linear-gradient(top, #e4edef 0%, #e8f1f3 100%);
|
||||
color: #919191;
|
||||
max-height: 140px;
|
||||
padding: 1px 0;
|
||||
-moz-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
#my-infos .element {
|
||||
height: 24px;
|
||||
margin: 6px 0;
|
||||
position: relative;
|
||||
height: 24px;
|
||||
margin: 6px 0;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#my-infos .element .icon {
|
||||
background-color: white;
|
||||
border-color: #636363;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
margin-left: 6px;
|
||||
height: 22px;
|
||||
width: 25px;
|
||||
-moz-border-radius: 2px;
|
||||
-webkit-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
background-color: white;
|
||||
border-color: #636363;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
margin-left: 6px;
|
||||
height: 22px;
|
||||
width: 25px;
|
||||
-moz-border-radius: 2px;
|
||||
-webkit-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #my-infos .element .icon {
|
||||
margin-left: auto;
|
||||
margin-right: 6px;
|
||||
margin-left: auto;
|
||||
margin-right: 6px;
|
||||
}
|
||||
|
||||
#my-infos .element div.bubble a {
|
||||
width: 100%;
|
||||
height: 20px;
|
||||
width: 100%;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
#my-infos .element .icon:hover,
|
||||
#my-infos .element div.bubble a:hover {
|
||||
background-color: #f4f4f4;
|
||||
background-color: #f4f4f4;
|
||||
}
|
||||
|
||||
#my-infos .element .icon:active,
|
||||
#my-infos .element div.bubble a:active {
|
||||
background-color: #ededed;
|
||||
background-color: #ededed;
|
||||
}
|
||||
|
||||
#my-infos .f-presence div.bubble a[data-value="available"] {
|
||||
background-position: 4px -167px;
|
||||
background-position: 4px -167px;
|
||||
}
|
||||
|
||||
#my-infos .f-presence div.bubble a[data-value="away"] {
|
||||
background-position: 4px -183px;
|
||||
background-position: 4px -183px;
|
||||
}
|
||||
|
||||
#my-infos .f-presence div.bubble a[data-value="xa"] {
|
||||
background-position: 4px -199px;
|
||||
background-position: 4px -199px;
|
||||
}
|
||||
|
||||
#my-infos .f-mood div.bubble a[data-value="crazy"] {
|
||||
background-position: 4px -296px;
|
||||
background-position: 4px -296px;
|
||||
}
|
||||
|
||||
#my-infos .f-mood div.bubble a[data-value="excited"] {
|
||||
background-position: 4px -314px;
|
||||
background-position: 4px -314px;
|
||||
}
|
||||
|
||||
#my-infos .f-mood div.bubble a[data-value="playful"] {
|
||||
background-position: 4px -332px;
|
||||
background-position: 4px -332px;
|
||||
}
|
||||
|
||||
#my-infos .f-mood div.bubble a[data-value="happy"] {
|
||||
background-position: 4px -350px;
|
||||
background-position: 4px -350px;
|
||||
}
|
||||
|
||||
#my-infos .f-mood div.bubble a[data-value="shocked"] {
|
||||
background-position: 4px -368px;
|
||||
background-position: 4px -368px;
|
||||
}
|
||||
|
||||
#my-infos .f-mood div.bubble a[data-value="hot"] {
|
||||
background-position: 4px -386px;
|
||||
background-position: 4px -386px;
|
||||
}
|
||||
|
||||
#my-infos .f-mood div.bubble a[data-value="sad"] {
|
||||
background-position: 4px -404px;
|
||||
background-position: 4px -404px;
|
||||
}
|
||||
|
||||
#my-infos .f-mood div.bubble a[data-value="amorous"] {
|
||||
background-position: 4px -422px;
|
||||
background-position: 4px -422px;
|
||||
}
|
||||
|
||||
#my-infos .f-mood div.bubble a[data-value="confident"] {
|
||||
background-position: 4px -440px;
|
||||
background-position: 4px -440px;
|
||||
}
|
||||
|
||||
#my-infos .f-mood a[data-value] span {
|
||||
background-position: 0 -352px;
|
||||
background-position: 0 -352px;
|
||||
}
|
||||
|
||||
#my-infos .f-mood a[data-value="crazy"] span,
|
||||
.mood-one {
|
||||
background-position: 0 -298px;
|
||||
background-position: 0 -298px;
|
||||
}
|
||||
|
||||
#my-infos .f-mood a[data-value="excited"] span,
|
||||
.mood-two {
|
||||
background-position: 0 -316px;
|
||||
background-position: 0 -316px;
|
||||
}
|
||||
|
||||
#my-infos .f-mood a[data-value="playful"] span,
|
||||
.mood-three {
|
||||
background-position: 0 -334px;
|
||||
background-position: 0 -334px;
|
||||
}
|
||||
|
||||
#my-infos .f-mood a[data-value="happy"] span,
|
||||
.mood-four {
|
||||
background-position: 0 -352px;
|
||||
background-position: 0 -352px;
|
||||
}
|
||||
|
||||
#my-infos .f-mood a[data-value="shocked"] span,
|
||||
.mood-five {
|
||||
background-position: 0 -370px;
|
||||
background-position: 0 -370px;
|
||||
}
|
||||
|
||||
#my-infos .f-mood a[data-value="hot"] span,
|
||||
.mood-six {
|
||||
background-position: 0 -388px;
|
||||
background-position: 0 -388px;
|
||||
}
|
||||
|
||||
#my-infos .f-mood a[data-value="sad"] span,
|
||||
.mood-seven {
|
||||
background-position: 0 -406px;
|
||||
background-position: 0 -406px;
|
||||
}
|
||||
|
||||
#my-infos .f-mood a[data-value="amorous"] span,
|
||||
.mood-eight {
|
||||
background-position: 0 -424px;
|
||||
background-position: 0 -424px;
|
||||
}
|
||||
|
||||
#my-infos .f-mood a[data-value="confident"] span,
|
||||
.mood-nine {
|
||||
background-position: 0 -442px;
|
||||
background-position: 0 -442px;
|
||||
}
|
||||
|
||||
#my-infos .f-activity div.bubble a[data-value="doing_chores"] {
|
||||
background-position: 4px -458px;
|
||||
background-position: 4px -458px;
|
||||
}
|
||||
|
||||
#my-infos .f-activity div.bubble a[data-value="drinking"] {
|
||||
background-position: 4px -476px;
|
||||
background-position: 4px -476px;
|
||||
}
|
||||
|
||||
#my-infos .f-activity div.bubble a[data-value="eating"] {
|
||||
background-position: 4px -494px;
|
||||
background-position: 4px -494px;
|
||||
}
|
||||
|
||||
#my-infos .f-activity div.bubble a[data-value="exercising"] {
|
||||
background-position: 4px -512px;
|
||||
background-position: 4px -512px;
|
||||
}
|
||||
|
||||
#my-infos .f-activity div.bubble a[data-value="grooming"] {
|
||||
background-position: 4px -548px;
|
||||
background-position: 4px -548px;
|
||||
}
|
||||
|
||||
#my-infos .f-activity div.bubble a[data-value="having_appointment"] {
|
||||
background-position: 4px -566px;
|
||||
background-position: 4px -566px;
|
||||
}
|
||||
|
||||
#my-infos .f-activity div.bubble a[data-value="inactive"] {
|
||||
background-position: 4px -530px;
|
||||
background-position: 4px -530px;
|
||||
}
|
||||
|
||||
#my-infos .f-activity div.bubble a[data-value="relaxing"] {
|
||||
background-position: 4px -620px;
|
||||
background-position: 4px -620px;
|
||||
}
|
||||
|
||||
#my-infos .f-activity div.bubble a[data-value="talking"] {
|
||||
background-position: 4px -602px;
|
||||
background-position: 4px -602px;
|
||||
}
|
||||
|
||||
#my-infos .f-activity div.bubble a[data-value="traveling"] {
|
||||
background-position: 4px -584px;
|
||||
background-position: 4px -584px;
|
||||
}
|
||||
|
||||
#my-infos .f-activity div.bubble a[data-value="working"] {
|
||||
background-position: 4px -638px;
|
||||
background-position: 4px -638px;
|
||||
}
|
||||
|
||||
#my-infos .f-activity a[data-value] span {
|
||||
background-position: 0 -514px;
|
||||
background-position: 0 -514px;
|
||||
}
|
||||
|
||||
#my-infos .f-activity a[data-value="doing_chores"] span,
|
||||
.activity-doing_chores {
|
||||
background-position: 0 -460px;
|
||||
background-position: 0 -460px;
|
||||
}
|
||||
|
||||
#my-infos .f-activity a[data-value="drinking"] span,
|
||||
.activity-drinking {
|
||||
background-position: 0 -478px;
|
||||
background-position: 0 -478px;
|
||||
}
|
||||
|
||||
#my-infos .f-activity a[data-value="eating"] span,
|
||||
.activity-eating {
|
||||
background-position: 0 -496px;
|
||||
background-position: 0 -496px;
|
||||
}
|
||||
|
||||
#my-infos .f-activity a[data-value="exercising"] span,
|
||||
.activity-exercising {
|
||||
background-position: 0 -514px;
|
||||
background-position: 0 -514px;
|
||||
}
|
||||
|
||||
#my-infos .f-activity a[data-value="grooming"] span,
|
||||
.activity-grooming {
|
||||
background-position: 0 -550px;
|
||||
background-position: 0 -550px;
|
||||
}
|
||||
|
||||
#my-infos .f-activity a[data-value="having_appointment"] span,
|
||||
.activity-having_appointment {
|
||||
background-position: 0 -568px;
|
||||
background-position: 0 -568px;
|
||||
}
|
||||
|
||||
#my-infos .f-activity a[data-value="inactive"] span,
|
||||
.activity-inactive {
|
||||
background-position: 0 -532px;
|
||||
background-position: 0 -532px;
|
||||
}
|
||||
|
||||
#my-infos .f-activity a[data-value="relaxing"] span,
|
||||
.activity-relaxing {
|
||||
background-position: 0 -622px;
|
||||
background-position: 0 -622px;
|
||||
}
|
||||
|
||||
#my-infos .f-activity a[data-value="talking"] span,
|
||||
.activity-talking {
|
||||
background-position: 0 -604px;
|
||||
background-position: 0 -604px;
|
||||
}
|
||||
|
||||
#my-infos .f-activity a[data-value="traveling"] span,
|
||||
.activity-traveling {
|
||||
background-position: 0 -586px;
|
||||
background-position: 0 -586px;
|
||||
}
|
||||
|
||||
#my-infos .f-activity a[data-value="working"] span,
|
||||
.activity-working {
|
||||
background-position: 0 -640px;
|
||||
background-position: 0 -640px;
|
||||
}
|
||||
|
||||
#my-infos .element .icon.picker {
|
||||
border-width: 1px 0 1px 1px;
|
||||
float: left;
|
||||
-moz-border-radius-topright: 0;
|
||||
-moz-border-radius-bottomright: 0;
|
||||
-webkit-border-top-right-radius: 0;
|
||||
-webkit-border-bottom-right-radius: 0;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-width: 1px 0 1px 1px;
|
||||
float: left;
|
||||
-moz-border-radius-topright: 0;
|
||||
-moz-border-radius-bottomright: 0;
|
||||
-webkit-border-top-right-radius: 0;
|
||||
-webkit-border-bottom-right-radius: 0;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #my-infos .element .icon.picker {
|
||||
border-width: 1px 1px 1px 0;
|
||||
float: right;
|
||||
-moz-border-radius-topright: 2px;
|
||||
-moz-border-radius-topleft: 0;
|
||||
-moz-border-radius-bottomright: 2px;
|
||||
-moz-border-radius-bottomleft: 0;
|
||||
-webkit-border-top-right-radius: 2px;
|
||||
-webkit-border-top-left-radius: 0;
|
||||
-webkit-border-bottom-right-radius: 2px;
|
||||
-webkit-border-bottom-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
border-width: 1px 1px 1px 0;
|
||||
float: right;
|
||||
-moz-border-radius-topright: 2px;
|
||||
-moz-border-radius-topleft: 0;
|
||||
-moz-border-radius-bottomright: 2px;
|
||||
-moz-border-radius-bottomleft: 0;
|
||||
-webkit-border-top-right-radius: 2px;
|
||||
-webkit-border-top-left-radius: 0;
|
||||
-webkit-border-bottom-right-radius: 2px;
|
||||
-webkit-border-bottom-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
|
||||
#my-infos .element .icon.disabled {
|
||||
background-color: #f3f3f3;
|
||||
border-color: #989898;
|
||||
cursor: default;
|
||||
background-color: #f3f3f3;
|
||||
border-color: #989898;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
#my-infos .element div.bubble {
|
||||
background-color: white;
|
||||
border-color: #636363;
|
||||
border-width: 1px 1px 0 1px;
|
||||
border-style: solid;
|
||||
width: 25px;
|
||||
padding: 1px 0;
|
||||
position: absolute;
|
||||
bottom: 21px;
|
||||
left: 6px;
|
||||
-moz-border-radius-topleft: 2px;
|
||||
-moz-border-radius-topright: 2px;
|
||||
-webkit-border-top-left-radius: 2px;
|
||||
-webkit-border-top-right-radius: 2px;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 2px;
|
||||
background-color: white;
|
||||
border-color: #636363;
|
||||
border-width: 1px 1px 0 1px;
|
||||
border-style: solid;
|
||||
width: 25px;
|
||||
padding: 1px 0;
|
||||
position: absolute;
|
||||
bottom: 21px;
|
||||
left: 6px;
|
||||
-moz-border-radius-topleft: 2px;
|
||||
-moz-border-radius-topright: 2px;
|
||||
-webkit-border-top-left-radius: 2px;
|
||||
-webkit-border-top-right-radius: 2px;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 2px;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #my-infos .element div.bubble {
|
||||
left: auto;
|
||||
right: 6px;
|
||||
left: auto;
|
||||
right: 6px;
|
||||
}
|
||||
|
||||
#my-infos .element a {
|
||||
float: left;
|
||||
float: left;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #my-infos .element a {
|
||||
float: right;
|
||||
float: right;
|
||||
}
|
||||
|
||||
#my-infos .element .icon span {
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
margin: 3px 4px;
|
||||
display: block;
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
margin: 3px 4px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#my-infos .element input {
|
||||
height: 18px;
|
||||
width: 190px;
|
||||
font-size: 0.85em;
|
||||
padding-left: 4px;
|
||||
float: left;
|
||||
-moz-border-radius-topleft: 0;
|
||||
-moz-border-radius-bottomleft: 0;
|
||||
-webkit-border-top-left-radius: 0;
|
||||
-webkit-border-top-bottom-radius: 0;
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
height: 18px;
|
||||
width: 190px;
|
||||
font-size: 0.85em;
|
||||
padding-left: 4px;
|
||||
float: left;
|
||||
-moz-border-radius-topleft: 0;
|
||||
-moz-border-radius-bottomleft: 0;
|
||||
-webkit-border-top-left-radius: 0;
|
||||
-webkit-border-top-bottom-radius: 0;
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
|
||||
html[dir="rtl"] #my-infos .element input {
|
||||
padding-left: 2px;
|
||||
padding-right: 4px;
|
||||
float: right;
|
||||
-moz-border-radius-topright: 0;
|
||||
-moz-border-radius-topleft: 2px;
|
||||
-moz-border-radius-bottomright: 0;
|
||||
-moz-border-radius-bottomleft: 2px;
|
||||
-webkit-border-top-right-radius: 0;
|
||||
-webkit-border-top-left-radius: 2px;
|
||||
-webkit-border-bottom-right-radius: 0;
|
||||
-webkit-border-bottom-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-top-left-radius: 2px;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
padding-left: 2px;
|
||||
padding-right: 4px;
|
||||
float: right;
|
||||
-moz-border-radius-topright: 0;
|
||||
-moz-border-radius-topleft: 2px;
|
||||
-moz-border-radius-bottomright: 0;
|
||||
-moz-border-radius-bottomleft: 2px;
|
||||
-webkit-border-top-right-radius: 0;
|
||||
-webkit-border-top-left-radius: 2px;
|
||||
-webkit-border-bottom-right-radius: 0;
|
||||
-webkit-border-bottom-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-top-left-radius: 2px;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue