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
|
@ -73,4 +73,4 @@ Translators
|
||||||
* Valérian Saliou
|
* Valérian Saliou
|
||||||
* vitalyster
|
* vitalyster
|
||||||
* zAchAry
|
* zAchAry
|
||||||
* Zash
|
* Zash
|
||||||
|
|
|
@ -4,250 +4,264 @@ Jappix Changelog
|
||||||
Here's the log of what has changed over the Jappix releases.
|
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)
|
One, v1.0.1 (January 2014)
|
||||||
--------------------------
|
--------------------------
|
||||||
|
|
||||||
* Changed MAM namespace to a temporary one
|
* Change MAM namespace to a temporary one @maranda
|
||||||
* Fixed broken Jappix Mini CSS loader in some cases
|
* Fix broken Jappix Mini CSS loader in some cases @valeriansaliou
|
||||||
* Libs update
|
* Libs update @valeriansaliou
|
||||||
|
|
||||||
|
|
||||||
One, v1.0.0 (January 2014)
|
One, v1.0.0 (January 2014)
|
||||||
--------------------------
|
--------------------------
|
||||||
|
|
||||||
* XEP-0166: Jingle
|
* XEP-0166: Jingle @valeriansaliou
|
||||||
* XEP-0292: vCard4 Over XMPP
|
* XEP-0292: vCard4 Over XMPP @valeriansaliou
|
||||||
* XEP-0280: Message Carbons
|
* XEP-0280: Message Carbons @valeriansaliou
|
||||||
* IE9, IE10, IE11 support
|
* IE9, IE10, IE11 support @valeriansaliou
|
||||||
* Libs update
|
* Libs update @valeriansaliou
|
||||||
* Client code rewrite
|
* Client code rewrite @valeriansaliou
|
||||||
* Directory tree re-organization
|
* Directory tree re-organization @valeriansaliou
|
||||||
* Tested code (pass CSSLint, JSHint and PHPLint)
|
* Tested code (pass CSSLint, JSHint and PHPLint) @valeriansaliou
|
||||||
|
|
||||||
|
|
||||||
Nemesis Alpha 9, v0.9.9 (August 2013)
|
Nemesis Alpha 9, v0.9.9 (August 2013)
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
|
|
||||||
* XEP-0313: Message Archive Management
|
* XEP-0313: Message Archive Management @valeriansaliou
|
||||||
* Drop support for Message Archiving (XEP-0136), outpaced by MAM (XEP-0313)
|
* Drop support for Message Archiving (XEP-0136), outpaced by MAM (XEP-0313) @valeriansaliou
|
||||||
* Jappix Desktop performances improved (noticeable with big rosters)
|
* Jappix Desktop performances improved (noticeable with big rosters) @valeriansaliou
|
||||||
* Fix Jappix Desktop avatar system, unable to cache avatars (thus increasing network load and delays)
|
* 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
|
* New translations added (Mongolian), and a few ones updated @valeriansaliou
|
||||||
|
|
||||||
|
|
||||||
Nemesis Alpha 8, v0.9.8 (May 2013)
|
Nemesis Alpha 8, v0.9.8 (May 2013)
|
||||||
----------------------------------
|
----------------------------------
|
||||||
|
|
||||||
* RTL (Right-To-Left Languages) support
|
* RTL (Right-To-Left Languages) support @valeriansaliou
|
||||||
* Various bufixes
|
* Various bufixes @valeriansaliou
|
||||||
|
|
||||||
|
|
||||||
Nemesis Alpha 7, v0.9.7 (April 2013)
|
Nemesis Alpha 7, v0.9.7 (April 2013)
|
||||||
------------------------------------
|
------------------------------------
|
||||||
|
|
||||||
* Fix overflow events in Mini
|
* Fix overflow events in Mini @valeriansaliou
|
||||||
* Fix user info display bug with formatted text
|
* Fix user info display bug with formatted text @valeriansaliou
|
||||||
* Jappix Me notification system
|
* Jappix Me notification system @valeriansaliou
|
||||||
* Update JSJaC
|
* Update JSJaC @valeriansaliou
|
||||||
* Update jQuery (v1.10.1)
|
* Update jQuery (v1.10.1) @valeriansaliou
|
||||||
|
|
||||||
|
|
||||||
Nemesis Alpha 6, v0.9.6 (April 2013)
|
Nemesis Alpha 6, v0.9.6 (April 2013)
|
||||||
------------------------------------
|
------------------------------------
|
||||||
|
|
||||||
* Fix login with accented usernames
|
* Fix login with accented usernames @valeriansaliou
|
||||||
* WOFF Get API headers fixed
|
* WOFF Get API headers fixed @valeriansaliou
|
||||||
* Better Get API URL generator
|
* Better Get API URL generator @valeriansaliou
|
||||||
* Fix broken Jappix Mini extraction script
|
* Fix broken Jappix Mini extraction script @valeriansaliou
|
||||||
* Show when user joins/exits MUC in Jappix Mini
|
* Show when user joins/exits MUC in Jappix Mini @valeriansaliou
|
||||||
|
|
||||||
|
|
||||||
Nemesis Alpha 5, v0.9.5 (March 2013)
|
Nemesis Alpha 5, v0.9.5 (March 2013)
|
||||||
------------------------------------
|
------------------------------------
|
||||||
|
|
||||||
* Jappix Mini enhancements
|
* Jappix Mini enhancements @valeriansaliou
|
||||||
* Fix Jappix over non-standard ports
|
* Fix Jappix over non-standard ports @valeriansaliou
|
||||||
* Locale detector improved
|
* Locale detector improved @valeriansaliou
|
||||||
* Load more items on social channel scroll
|
* Load more items on social channel scroll @valeriansaliou
|
||||||
* Fix a lot of English base language typos
|
* Fix a lot of English base language typos @valeriansaliou
|
||||||
* Support for XHTML microblog entries (Movim compatibility)
|
* Support for XHTML microblog entries (Movim compatibility) @valeriansaliou
|
||||||
* Show Jappix Desktop on tablets (not mobile anymore)
|
* Show Jappix Desktop on tablets (not mobile anymore) @valeriansaliou
|
||||||
* Option to disable Jappix Mini on mobile phones
|
* Option to disable Jappix Mini on mobile phones @valeriansaliou
|
||||||
* Fix broken MUC bookmarks retrieval
|
* Fix broken MUC bookmarks retrieval @valeriansaliou
|
||||||
|
|
||||||
|
|
||||||
Nemesis Alpha 4, v0.9.4 (March 2013)
|
Nemesis Alpha 4, v0.9.4 (March 2013)
|
||||||
------------------------------------
|
------------------------------------
|
||||||
|
|
||||||
* [SECURITY] Fix insafe HTML escaping
|
* [SECURITY] Fix insafe HTML escaping @valeriansaliou
|
||||||
* PHP 5.4 compatibility
|
* PHP 5.4 compatibility @valeriansaliou
|
||||||
* Auto-populate microblog on connect
|
* Auto-populate microblog on connect @valeriansaliou
|
||||||
* Register API support for Metronome XMPPd
|
* Register API support for Metronome XMPPd @valeriansaliou
|
||||||
* Non-blocking PHP sessions
|
* Non-blocking PHP sessions @valeriansaliou
|
||||||
* Permissive geoloc selector in microblog
|
* Permissive geoloc selector in microblog @valeriansaliou
|
||||||
* Select priority more easily
|
* Select priority more easily @valeriansaliou
|
||||||
* Compliancy with Atom specification (social inbox)
|
* Compliancy with Atom specification (social inbox) @valeriansaliou
|
||||||
* Added project mirrors
|
* Added project mirrors @valeriansaliou
|
||||||
|
|
||||||
|
|
||||||
Nemesis Alpha 3, v0.9.3 (February 2013)
|
Nemesis Alpha 3, v0.9.3 (February 2013)
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
|
|
||||||
* [SECURITY] More randomness in CAPTCHA
|
* [SECURITY] More randomness in CAPTCHA @valeriansaliou
|
||||||
* Fix buggy roster filter with groups
|
* Fix buggy roster filter with groups @valeriansaliou
|
||||||
* Add Piwik tracking feature (configurable in manager)
|
* Add Piwik tracking feature (configurable in manager) @valeriansaliou
|
||||||
* Easy popup close by clicking away
|
* Easy popup close by clicking away @valeriansaliou
|
||||||
* Fix cropped uploaded pictures
|
* Fix cropped uploaded pictures @valeriansaliou
|
||||||
* Revert to old File Share API (which is far better)
|
* Revert to old File Share API (which is far better) @valeriansaliou
|
||||||
* Fixes broken translations (strange UTF-8 chars due to bugged Gettext compiler)
|
* Fixes broken translations (strange UTF-8 chars due to bugged Gettext compiler) @valeriansaliou
|
||||||
|
|
||||||
|
|
||||||
Nemesis Alpha 2, v0.9.2 (January 2013)
|
Nemesis Alpha 2, v0.9.2 (January 2013)
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
|
|
||||||
* [SECURITY] Introduced the Register API (prevents register flood by spam bots)
|
* [SECURITY] Introduce the Register API (prevents register flood by spam bots) @valeriansaliou
|
||||||
* Reworked Storage API
|
* Reworked Storage API @valeriansaliou
|
||||||
* Jappix Mini code beautify
|
* Jappix Mini code beautify @valeriansaliou
|
||||||
* Lighter and Web-safe font files
|
* Lighter and Web-safe font files @valeriansaliou
|
||||||
* Better error logging
|
* Better error logging @valeriansaliou
|
||||||
* Fix Openfire ping request
|
* Fix Openfire ping request @valeriansaliou
|
||||||
* Typing notification in Jappix Mini
|
* Typing notification in Jappix Mini @valeriansaliou
|
||||||
* Support for WebKit notifications
|
* Support for WebKit notifications @valeriansaliou
|
||||||
* Jappix Mini groupchat suggest
|
* Jappix Mini groupchat suggest @valeriansaliou
|
||||||
* Enhanced Download API
|
* Enhanced Download API @valeriansaliou
|
||||||
* Mini animated chat icon, much sexier
|
* Mini animated chat icon, much sexier @valeriansaliou
|
||||||
* IE custom font compatibility
|
* IE custom font compatibility @valeriansaliou
|
||||||
* Legal changes
|
* Legal changes @valeriansaliou
|
||||||
* Update licensing with real names
|
* Update licensing with real names @valeriansaliou
|
||||||
|
|
||||||
|
|
||||||
Nemesis Alpha 1, v0.9.1 (2012)
|
Nemesis Alpha 1, v0.9.1 (2012)
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
* Show an 'add to home' button on iOS devices
|
* Show an 'add to home' button on iOS devices @camaran
|
||||||
* Ability to suspend statistics
|
* Ability to suspend statistics @valeriansaliou
|
||||||
* Fix IE9 issue with clustering
|
* Fix IE9 issue with clustering @valeriansaliou
|
||||||
* Show profile button in user search results
|
* Show profile button in user search results @valeriansaliou
|
||||||
* Ability to change message font, font size and color
|
* Ability to change message font, font size and color @valeriansaliou
|
||||||
* Fix choppy Jappix Mini status picker
|
* Fix choppy Jappix Mini status picker @valeriansaliou
|
||||||
* Sounds for Safari & IE9
|
* Sounds for Safari & IE9 @valeriansaliou
|
||||||
* Enhance new file storage functions
|
* Enhance new file storage functions @valeriansaliou
|
||||||
* No resize for textareas
|
* No resize for textareas @valeriansaliou
|
||||||
* Add a configurable legal disclaimer
|
* Add a configurable legal disclaimer @valeriansaliou
|
||||||
* Fix a loop bug on presence if no support for sessionStorage
|
* Fix a loop bug on presence if no support for sessionStorage @valeriansaliou
|
||||||
* Universal fonts
|
* Universal fonts @valeriansaliou
|
||||||
* Add ability to configure the node owner name & website
|
* Add ability to configure the node owner name & website @valeriansaliou
|
||||||
* HTTP authentication for LDAP
|
* HTTP authentication for LDAP @valeriansaliou
|
||||||
* Better notification + comments management
|
* Better notification + comments management @valeriansaliou
|
||||||
|
|
||||||
|
|
||||||
Spaco, v0.9 (2011)
|
Spaco, v0.9 (2011)
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
* [SECURITY] Fix when sending files to a contact
|
* [SECURITY] Fix when sending files to a contact @valeriansaliou
|
||||||
* Better Jappix Mini performances
|
* Better Jappix Mini performances @valeriansaliou
|
||||||
* Fix Jappix Mini display issues
|
* Fix Jappix Mini display issues @valeriansaliou
|
||||||
* Connection issue fixed with BOSH API
|
* Connection issue fixed with BOSH API @valeriansaliou
|
||||||
* Open XMPP links when Jappix is ready
|
* Open XMPP links when Jappix is ready @valeriansaliou
|
||||||
|
|
||||||
|
|
||||||
Suno, v0.8 (2011)
|
Suno, v0.8 (2011)
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
* XEP-0066: Out of Band Data
|
* XEP-0066: Out of Band Data @valeriansaliou
|
||||||
* Switch from OpenStreetMap to Google Maps for geolocation
|
* Switch from OpenStreetMap to Google Maps for geolocation @valeriansaliou
|
||||||
|
|
||||||
|
|
||||||
Stelo, v0.7 (2011)
|
Stelo, v0.7 (2011)
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
* Lighter Jappix Mini
|
* Lighter Jappix Mini @valeriansaliou
|
||||||
* Welcome popup
|
* Welcome popup @valeriansaliou
|
||||||
* Support for /me command in Jappix Mini
|
* Support for /me command in Jappix Mini @valeriansaliou
|
||||||
* Fixes in social channel
|
* Fixes in social channel @valeriansaliou
|
||||||
* Bigger BOSH poll interval (avoids some overactivity errors)
|
* Bigger BOSH poll interval (avoids some overactivity errors) @valeriansaliou
|
||||||
* Compression disabled by default in Get API
|
* Compression disabled by default in Get API @valeriansaliou
|
||||||
* Send chatstates in MUC
|
* Send chatstates in MUC @valeriansaliou
|
||||||
* Social notification inbox
|
* Social notification inbox @valeriansaliou
|
||||||
|
|
||||||
|
|
||||||
Lumo, v0.6 (2011)
|
Lumo, v0.6 (2011)
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
* Smoother Mini animation
|
* Smoother Mini animation @valeriansaliou
|
||||||
* Show avatars in social channel comments
|
* Show avatars in social channel comments @valeriansaliou
|
||||||
* Legacy mode for microblog comments
|
* Legacy mode for microblog comments @valeriansaliou
|
||||||
* Microblog updated to comply with a new version of XEP-0277
|
* Microblog updated to comply with a new version of XEP-0277 @valeriansaliou
|
||||||
* Fix DNS SRV issue because of a 'route' attribute on BOSH initiation
|
* Fix DNS SRV issue because of a 'route' attribute on BOSH initiation @valeriansaliou
|
||||||
|
|
||||||
|
|
||||||
Ribelo, v0.5 (2011)
|
Ribelo, v0.5 (2011)
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
* Add support for comments in microblog
|
* Add support for comments in microblog @valeriansaliou
|
||||||
* Jappix Mini fixes and improvements
|
* Jappix Mini fixes and improvements @valeriansaliou
|
||||||
|
|
||||||
|
|
||||||
Lupo, v0.4 (2011)
|
Lupo, v0.4 (2011)
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
* Full IE5.5 compatibility for Jappix Mini
|
* Full IE5.5 compatibility for Jappix Mini @valeriansaliou
|
||||||
* BOSH without cURL (if cURL unavailable)
|
* BOSH without cURL (if cURL unavailable) @valeriansaliou
|
||||||
* Handle multiple microblog attached files
|
* Handle multiple microblog attached files @valeriansaliou
|
||||||
* Microblog attached files thumbnails
|
* Microblog attached files thumbnails @valeriansaliou
|
||||||
* BOM (Byte Order Mark) filtering for Get API
|
* BOM (Byte Order Mark) filtering for Get API @valeriansaliou
|
||||||
* Autoplay for new YouTube HTML5 player
|
* Autoplay for new YouTube HTML5 player @valeriansaliou
|
||||||
* Support for privacy lists pushs
|
* Support for privacy lists pushs @valeriansaliou
|
||||||
* Roster-side privacy lists (make contact blocking/unblocking easy)
|
* Roster-side privacy lists (make contact blocking/unblocking easy) @valeriansaliou
|
||||||
* Better update checker
|
* Better update checker @valeriansaliou
|
||||||
* XEP-0144: Roster Item Exchange
|
* XEP-0144: Roster Item Exchange @valeriansaliou
|
||||||
* Cross domain support for Internet Explorer and legacy browsers
|
* Cross domain support for Internet Explorer and legacy browsers @valeriansaliou
|
||||||
* Update jQuery (v1.4.4)
|
* Update jQuery (v1.4.4) @valeriansaliou
|
||||||
* TZO fix (for negative timezones, e.g.: UTC-5)
|
* TZO fix (for negative timezones, e.g.: UTC-5) @valeriansaliou
|
||||||
* Better language detection
|
* Better language detection @valeriansaliou
|
||||||
* Use HTML5 or Flash for YouTube embedded videos
|
* Use HTML5 or Flash for YouTube embedded videos @valeriansaliou
|
||||||
|
|
||||||
|
|
||||||
Prism, v0.3 (2011)
|
Prism, v0.3 (2011)
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
* [SECURITY] Fix JS escape bug for quotes
|
* [SECURITY] Fix JS escape bug for quotes @valeriansaliou
|
||||||
* [SECURITY] HTML-encode notification username
|
* [SECURITY] HTML-encode notification username @valeriansaliou
|
||||||
* Introduction of Jappix Mini
|
* Introduction of Jappix Mini @valeriansaliou
|
||||||
* Introduction of Jappix Manager
|
* Introduction of Jappix Manager @valeriansaliou
|
||||||
* Introduction of Jappix Install
|
* Introduction of Jappix Install @valeriansaliou
|
||||||
* XEP-0050: Ad-Hoc Commands
|
* XEP-0050: Ad-Hoc Commands @valeriansaliou
|
||||||
* XEP-0136: Message Archiving
|
* XEP-0136: Message Archiving @valeriansaliou
|
||||||
* Update Jappix logo
|
* Update Jappix logo @valeriansaliou
|
||||||
* Declare application language to XMPP server
|
* Declare application language to XMPP server @valeriansaliou
|
||||||
* Add a buddy search tool
|
* Add a buddy search tool @valeriansaliou
|
||||||
* Support for old/legacy vCard server implementations
|
* Support for old/legacy vCard server implementations @valeriansaliou
|
||||||
* Inbox messages sorted by date
|
* Inbox messages sorted by date @valeriansaliou
|
||||||
* Better music search
|
* Better music search @valeriansaliou
|
||||||
* Human-readable geolocation
|
* Human-readable geolocation @valeriansaliou
|
||||||
* Gateway show/hide
|
* Gateway show/hide @valeriansaliou
|
||||||
* HTML5 forms
|
* HTML5 forms @valeriansaliou
|
||||||
* Better notification management
|
* Better notification management @valeriansaliou
|
||||||
* Unified chat design
|
* Unified chat design @valeriansaliou
|
||||||
* Dynamic DOM load (better performances)
|
* Dynamic DOM load (better performances) @valeriansaliou
|
||||||
* Jappix logo shown when connected (improves branding)
|
* Jappix logo shown when connected (improves branding) @valeriansaliou
|
||||||
|
|
||||||
|
|
||||||
Lidar, v0.2 (2010)
|
Lidar, v0.2 (2010)
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
* Introduction of Jappix Mobile
|
* Introduction of Jappix Mobile @valeriansaliou
|
||||||
* UI redesign (from grey to black and blue)
|
* UI redesign (from grey to black and blue) @valeriansaliou
|
||||||
* Social channel introduced (microblog)
|
* Social channel introduced (microblog) @valeriansaliou
|
||||||
|
|
||||||
|
|
||||||
Genesis, v0.1 (2010)
|
Genesis, v0.1 (2010)
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
* Initial version, released after private beta
|
* Initial version, released after private beta @valeriansaliou
|
||||||
* Introduction of Jappix Desktop
|
* Introduction of Jappix Desktop @valeriansaliou
|
||||||
* Basic chat, groupchat, roster and profile features
|
* Basic chat, groupchat, roster and profile features @valeriansaliou
|
||||||
* Basic UI
|
* 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**
|
**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
|
@ -37,4 +37,4 @@ THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
|
||||||
|
|
||||||
**ParaType Ltd**
|
**ParaType Ltd**
|
||||||
**http://www.paratype.ru**
|
**http://www.paratype.ru**
|
||||||
|
|
|
@ -23,4 +23,4 @@ They contain work from the FamFamFam Silk icon set by Mark James.
|
||||||
|
|
||||||
* http://famfamfam.com/lab/icons/silk/
|
* http://famfamfam.com/lab/icons/silk/
|
||||||
* http://creativecommons.org/licenses/by/2.5/
|
* http://creativecommons.org/licenses/by/2.5/
|
||||||
* http://creativecommons.org/licenses/by/3.0/
|
* http://creativecommons.org/licenses/by/3.0/
|
||||||
|
|
|
@ -18,4 +18,4 @@ More
|
||||||
* The whole documentation is available at: https://github.com/jappix/jappix/wiki
|
* The whole documentation is available at: https://github.com/jappix/jappix/wiki
|
||||||
|
|
||||||
|
|
||||||
Now, you can use Jappix. Happy socializing!
|
Now, you can use Jappix. Happy socializing!
|
||||||
|
|
|
@ -65,4 +65,4 @@ Here are listed the XMPP Protocol Extensions that Jappix supports, as well as th
|
||||||
|
|
||||||
# Others
|
# Others
|
||||||
|
|
||||||
* RFC-3264: An Offer/Answer Model with Session Description Protocol (SDP)
|
* RFC-3264: An Offer/Answer Model with Session Description Protocol (SDP)
|
||||||
|
|
|
@ -7,17 +7,17 @@ We would like to thanks the authors of these tools, coming from other projects:
|
||||||
Projects
|
Projects
|
||||||
--------
|
--------
|
||||||
|
|
||||||
* Base64 https://github.com/dankogai/js-base64
|
* Base64 https://github.com/dankogai/js-base64
|
||||||
* DrawSVGChart http://codingteam.net/project/codingteam
|
* DrawSVGChart http://codingteam.net/project/codingteam
|
||||||
* idzXHR http://www.iadvize.com/plugin_strophe_xmpp.html
|
* idzXHR http://www.iadvize.com/plugin_strophe_xmpp.html
|
||||||
* JSJaC http://blog.jwchat.org/jsjac/
|
* JSJaC http://blog.jwchat.org/jsjac/
|
||||||
* JSMin http://github.com/rgrove/jsmin-php/
|
* JSMin http://github.com/rgrove/jsmin-php/
|
||||||
* jQuery http://jquery.com/
|
* jQuery http://jquery.com/
|
||||||
* jQuery Form http://jquery.malsup.com/form/
|
* jQuery Form http://jquery.malsup.com/form/
|
||||||
* jQuery Timers http://plugins.jquery.com/project/timers
|
* jQuery Timers http://plugins.jquery.com/project/timers
|
||||||
* jXHR http://mulletxhr.com/
|
* jXHR http://mulletxhr.com/
|
||||||
* Mobile Detect https://github.com/serbanghita/Mobile-Detect
|
* Mobile Detect https://github.com/serbanghita/Mobile-Detect
|
||||||
* ParaType http://paratype.ru/
|
* ParaType http://paratype.ru/
|
||||||
* PHP-gettext https://launchpad.net/php-gettext
|
* PHP-gettext https://launchpad.net/php-gettext
|
||||||
* Silk icons http://www.famfamfam.com/lab/icons/silk/
|
* Silk icons http://www.famfamfam.com/lab/icons/silk/
|
||||||
* Smileys http://www.gajim.org/
|
* 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" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<jappix xmlns="jappix:file:get">
|
<jappix xmlns="jappix:file:get">
|
||||||
<css>anonymous.css</css>
|
<css>anonymous.css</css>
|
||||||
<js>anonymous.js</js>
|
<js>anonymous.js</js>
|
||||||
</jappix>
|
</jappix>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<jappix xmlns="jappix:file:get">
|
<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>
|
<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>
|
<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>
|
</jappix>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<jappix xmlns="jappix:file:get">
|
<jappix xmlns="jappix:file:get">
|
||||||
<js>httpauth.js</js>
|
<js>httpauth.js</js>
|
||||||
</jappix>
|
</jappix>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<jappix xmlns="jappix:file:get">
|
<jappix xmlns="jappix:file:get">
|
||||||
<css>main.css~install.css~images.css</css>
|
<css>main.css~install.css~images.css</css>
|
||||||
<js></js>
|
<js></js>
|
||||||
</jappix>
|
</jappix>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<jappix xmlns="jappix:file:get">
|
<jappix xmlns="jappix:file:get">
|
||||||
<css>main.css~manager.css~images.css</css>
|
<css>main.css~manager.css~images.css</css>
|
||||||
<js></js>
|
<js></js>
|
||||||
</jappix>
|
</jappix>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<jappix xmlns="jappix:file:get">
|
<jappix xmlns="jappix:file:get">
|
||||||
<css>mini.css</css>
|
<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>
|
<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>
|
</jappix>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<jappix xmlns="jappix:file:get">
|
<jappix xmlns="jappix:file:get">
|
||||||
<css>mobile.css~ios.css~images.css</css>
|
<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>
|
<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>
|
</jappix>
|
||||||
|
|
|
@ -20,7 +20,7 @@ var Anonymous = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Connected to an anonymous session
|
* Connected to an anonymous session
|
||||||
* @public
|
* @public
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
|
|
|
@ -46,7 +46,7 @@ var Audio = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Plays the given sound ID
|
* Plays the given sound ID
|
||||||
* @public
|
* @public
|
||||||
* @param {string} name
|
* @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
|
* @public
|
||||||
* @param {string} a
|
* @param {array} a
|
||||||
* @param {string} b
|
* @param {array} b
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
*/
|
*/
|
||||||
self.caseInsensitiveSort = function(a, b) {
|
self.caseInsensitiveSort = function(a, b) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Put the two strings into lower case
|
// Put the two strings into lower case
|
||||||
a = a.toLowerCase();
|
var sA = a[0].toLowerCase();
|
||||||
b = b.toLowerCase();
|
var sB = b[0].toLowerCase();
|
||||||
|
|
||||||
// Process the sort
|
// Process the sort
|
||||||
if(a > b)
|
if(sA > sB)
|
||||||
return 1;
|
return 1;
|
||||||
if(a < b)
|
if(sA < sB)
|
||||||
return -1;
|
return -1;
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
Console.error('Autocompletion.caseInsensitiveSort', e);
|
Console.error('Autocompletion.caseInsensitiveSort', e);
|
||||||
|
@ -47,11 +48,52 @@ var Autocompletion = (function () {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates an array with the autocompletion results
|
* Split a query into its subqueries ready to be used in autocompletion
|
||||||
* @public
|
* 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
|
* @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
|
* @param {string} id
|
||||||
* @return {object}
|
* @return {Array}
|
||||||
*/
|
*/
|
||||||
self.process = function(query, id) {
|
self.process = function(query, id) {
|
||||||
|
|
||||||
|
@ -60,16 +102,23 @@ var Autocompletion = (function () {
|
||||||
try {
|
try {
|
||||||
// Replace forbidden characters in regex
|
// Replace forbidden characters in regex
|
||||||
query = Common.escapeRegex(query);
|
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
|
// Search in the roster
|
||||||
$('#' + id + ' .user').each(function() {
|
$('#' + id + ' .user').each(function() {
|
||||||
var nick = $(this).find('.name').text();
|
var nick = $(this).find('.name').text();
|
||||||
var regex = new RegExp('(^)' + query, 'gi');
|
for (i = 0; i<queryRegExp.length; i++) {
|
||||||
|
var regex = queryRegExp[i];
|
||||||
if(nick.match(regex))
|
if(nick.match(regex)) {
|
||||||
results.push(nick);
|
results.push([nick, i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Sort the array
|
// Sort the array
|
||||||
results = results.sort(self.caseInsensitiveSort);
|
results = results.sort(self.caseInsensitiveSort);
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
|
@ -106,7 +155,7 @@ var Autocompletion = (function () {
|
||||||
*/
|
*/
|
||||||
self.create = function(hash) {
|
self.create = function(hash) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Initialize
|
// Initialize
|
||||||
var vSelector = $('#' + hash + ' .message-area');
|
var vSelector = $('#' + hash + ' .message-area');
|
||||||
var value = vSelector.val();
|
var value = vSelector.val();
|
||||||
|
@ -117,10 +166,13 @@ var Autocompletion = (function () {
|
||||||
|
|
||||||
var query = vSelector.attr('data-autocompletion-query');
|
var query = vSelector.attr('data-autocompletion-query');
|
||||||
|
|
||||||
// The autocompletion has not been yet launched
|
|
||||||
if(query === undefined) {
|
if(query === undefined) {
|
||||||
query = value;
|
// The autocompletion has not been yet launched
|
||||||
vSelector.attr('data-autocompletion-query', query);
|
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
|
// Get the pointer
|
||||||
|
@ -131,7 +183,11 @@ var Autocompletion = (function () {
|
||||||
i = parseInt(pointer);
|
i = parseInt(pointer);
|
||||||
|
|
||||||
// We get the nickname
|
// 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!
|
// Shit, this is my nick!
|
||||||
if((nick !== undefined) && (nick.toLowerCase() == Name.getMUCNick(hash).toLowerCase())) {
|
if((nick !== undefined) && (nick.toLowerCase() == Name.getMUCNick(hash).toLowerCase())) {
|
||||||
|
@ -139,14 +195,18 @@ var Autocompletion = (function () {
|
||||||
i++;
|
i++;
|
||||||
|
|
||||||
// Get the next nick
|
// 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
|
// We quote the nick
|
||||||
if(nick !== undefined) {
|
if((nickResult !== undefined) && (nick !== undefined)) {
|
||||||
// Increment
|
// Increment
|
||||||
i++;
|
i++;
|
||||||
Utils.quoteMyNick(hash, nick);
|
var message = query[1][nickResult[1]];
|
||||||
|
Utils.quoteMyNick(hash, nick, message);
|
||||||
|
|
||||||
// Put a pointer
|
// Put a pointer
|
||||||
vSelector.attr('data-autocompletion-pointer', i);
|
vSelector.attr('data-autocompletion-pointer', i);
|
||||||
|
|
|
@ -20,11 +20,11 @@ var Avatar = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/* Variables */
|
/* Variables */
|
||||||
self.pending = [];
|
self.pending = [];
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Requests the avatar of a given user
|
* Requests the avatar of a given user
|
||||||
* @public
|
* @public
|
||||||
* @param {string} xid
|
* @param {string} xid
|
||||||
|
|
|
@ -20,7 +20,7 @@ var Board = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a board panel
|
* Creates a board panel
|
||||||
* @public
|
* @public
|
||||||
* @param {string} type
|
* @param {string} type
|
||||||
|
@ -202,7 +202,7 @@ var Board = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Closes a given board
|
* Closes a given board
|
||||||
* @public
|
* @public
|
||||||
* @param {string} board
|
* @param {string} board
|
||||||
|
@ -235,8 +235,9 @@ var Board = (function () {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Cannot process?
|
// Cannot process?
|
||||||
if(Common.isFocused() || !content || !window.webkitNotifications)
|
if(Common.isFocused() || !content || !(window.webkitNotifications || window.Notification)) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Default icon?
|
// Default icon?
|
||||||
if(!icon) {
|
if(!icon) {
|
||||||
|
@ -256,49 +257,77 @@ var Board = (function () {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Default title?
|
// Default title?
|
||||||
if(!title)
|
if(!title) {
|
||||||
title = Common._e("New event!");
|
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
|
// Check for notification permission
|
||||||
if(window.webkitNotifications.checkPermission() === 0) {
|
try {
|
||||||
// Create notification
|
if(Notification.permission == 'granted' || Notification.permission === undefined) {
|
||||||
var notification = window.webkitNotifications.createNotification(icon, title, content);
|
var notification = new Notification(title, {
|
||||||
|
dir: 'auto',
|
||||||
// Auto-hide after a while
|
lang: '',
|
||||||
notification.ondisplay = function(event) {
|
body: content,
|
||||||
|
tag: type,
|
||||||
|
icon: icon
|
||||||
|
});
|
||||||
|
|
||||||
|
notification.onclick = cb_click_fn;
|
||||||
|
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
event.currentTarget.cancel();
|
notification.close();
|
||||||
}, 10000);
|
}, 10000);
|
||||||
};
|
|
||||||
|
if(notification.permission == 'granted') {
|
||||||
// Click event
|
return notification;
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
} catch(_e) {
|
||||||
|
if(window.webkitNotifications.checkPermission() === 0) {
|
||||||
|
// Create notification
|
||||||
|
var notification = window.webkitNotifications.createNotification(icon, title, content);
|
||||||
|
|
||||||
// Focus on msg-me
|
// Auto-hide after a while
|
||||||
window.focus();
|
notification.ondisplay = function(event) {
|
||||||
|
setTimeout(function() {
|
||||||
|
event.currentTarget.cancel();
|
||||||
|
}, 10000);
|
||||||
|
};
|
||||||
|
|
||||||
// Remove notification
|
// Click event
|
||||||
this.cancel();
|
notification.onclick = cb_click_fn;
|
||||||
};
|
|
||||||
|
// Show notification
|
||||||
// Show notification
|
notification.show();
|
||||||
notification.show();
|
|
||||||
|
return notification;
|
||||||
return notification;
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
Console.error('Board.quick', e);
|
Console.error('Board.quick', e);
|
||||||
}
|
}
|
||||||
|
@ -314,11 +343,21 @@ var Board = (function () {
|
||||||
self.quickPermission = function() {
|
self.quickPermission = function() {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if(!window.webkitNotifications || (window.webkitNotifications.checkPermission() === 0))
|
try {
|
||||||
return;
|
// W3C Notification API (still a draft!)
|
||||||
|
if(Notification.permission !== 'granted') {
|
||||||
// Ask for permission
|
// Ask for permission
|
||||||
window.webkitNotifications.requestPermission();
|
Notification.requestPermission();
|
||||||
|
}
|
||||||
|
} catch (_e) {
|
||||||
|
// WebKit Notification API (fallback)
|
||||||
|
if(!window.webkitNotifications || (window.webkitNotifications.checkPermission() === 0)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ask for permission
|
||||||
|
window.webkitNotifications.requestPermission();
|
||||||
|
}
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
Console.error('Board.quickPermission', e);
|
Console.error('Board.quickPermission', e);
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,122 +4,122 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var BrowserDetect = {
|
var BrowserDetect = {
|
||||||
init: function () {
|
init: function () {
|
||||||
this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
|
this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
|
||||||
this.version = this.searchVersion(navigator.userAgent)
|
this.version = this.searchVersion(navigator.userAgent)
|
||||||
|| this.searchVersion(navigator.appVersion)
|
|| this.searchVersion(navigator.appVersion)
|
||||||
|| "an unknown version";
|
|| "an unknown version";
|
||||||
this.OS = this.searchString(this.dataOS) || "an unknown OS";
|
this.OS = this.searchString(this.dataOS) || "an unknown OS";
|
||||||
},
|
},
|
||||||
|
|
||||||
searchString: function (data) {
|
searchString: function (data) {
|
||||||
for (var i=0;i<data.length;i++) {
|
for (var i=0;i<data.length;i++) {
|
||||||
var dataString = data[i].string;
|
var dataString = data[i].string;
|
||||||
var dataProp = data[i].prop;
|
var dataProp = data[i].prop;
|
||||||
this.versionSearchString = data[i].versionSearch || data[i].identity;
|
this.versionSearchString = data[i].versionSearch || data[i].identity;
|
||||||
if (dataString) {
|
if (dataString) {
|
||||||
if (dataString.indexOf(data[i].subString) != -1)
|
if (dataString.indexOf(data[i].subString) != -1)
|
||||||
return data[i].identity;
|
return data[i].identity;
|
||||||
}
|
}
|
||||||
else if (dataProp)
|
else if (dataProp)
|
||||||
return data[i].identity;
|
return data[i].identity;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
searchVersion: function (dataString) {
|
searchVersion: function (dataString) {
|
||||||
var index = dataString.indexOf(this.versionSearchString);
|
var index = dataString.indexOf(this.versionSearchString);
|
||||||
if (index == -1) return;
|
if (index == -1) return;
|
||||||
return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
|
return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
|
||||||
},
|
},
|
||||||
|
|
||||||
dataBrowser: [
|
dataBrowser: [
|
||||||
{
|
{
|
||||||
string: navigator.userAgent,
|
string: navigator.userAgent,
|
||||||
subString: "Chrome",
|
subString: "Chrome",
|
||||||
identity: "Chrome"
|
identity: "Chrome"
|
||||||
},
|
},
|
||||||
{ string: navigator.userAgent,
|
{ string: navigator.userAgent,
|
||||||
subString: "OmniWeb",
|
subString: "OmniWeb",
|
||||||
versionSearch: "OmniWeb/",
|
versionSearch: "OmniWeb/",
|
||||||
identity: "OmniWeb"
|
identity: "OmniWeb"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
string: navigator.vendor,
|
string: navigator.vendor,
|
||||||
subString: "Apple",
|
subString: "Apple",
|
||||||
identity: "Safari",
|
identity: "Safari",
|
||||||
versionSearch: "Version"
|
versionSearch: "Version"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: window.opera,
|
prop: window.opera,
|
||||||
identity: "Opera"
|
identity: "Opera"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
string: navigator.vendor,
|
string: navigator.vendor,
|
||||||
subString: "iCab",
|
subString: "iCab",
|
||||||
identity: "iCab"
|
identity: "iCab"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
string: navigator.vendor,
|
string: navigator.vendor,
|
||||||
subString: "KDE",
|
subString: "KDE",
|
||||||
identity: "Konqueror"
|
identity: "Konqueror"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
string: navigator.userAgent,
|
string: navigator.userAgent,
|
||||||
subString: "Firefox",
|
subString: "Firefox",
|
||||||
identity: "Firefox"
|
identity: "Firefox"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
string: navigator.vendor,
|
string: navigator.vendor,
|
||||||
subString: "Camino",
|
subString: "Camino",
|
||||||
identity: "Camino"
|
identity: "Camino"
|
||||||
},
|
},
|
||||||
{ // for newer Netscapes (6+)
|
{ // for newer Netscapes (6+)
|
||||||
string: navigator.userAgent,
|
string: navigator.userAgent,
|
||||||
subString: "Netscape",
|
subString: "Netscape",
|
||||||
identity: "Netscape"
|
identity: "Netscape"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
string: navigator.userAgent,
|
string: navigator.userAgent,
|
||||||
subString: "MSIE",
|
subString: "MSIE",
|
||||||
identity: "Explorer",
|
identity: "Explorer",
|
||||||
versionSearch: "MSIE"
|
versionSearch: "MSIE"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
string: navigator.userAgent,
|
string: navigator.userAgent,
|
||||||
subString: "Gecko",
|
subString: "Gecko",
|
||||||
identity: "Mozilla",
|
identity: "Mozilla",
|
||||||
versionSearch: "rv"
|
versionSearch: "rv"
|
||||||
},
|
},
|
||||||
{ // for older Netscapes (4-)
|
{ // for older Netscapes (4-)
|
||||||
string: navigator.userAgent,
|
string: navigator.userAgent,
|
||||||
subString: "Mozilla",
|
subString: "Mozilla",
|
||||||
identity: "Netscape",
|
identity: "Netscape",
|
||||||
versionSearch: "Mozilla"
|
versionSearch: "Mozilla"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
||||||
dataOS : [
|
dataOS : [
|
||||||
{
|
{
|
||||||
string: navigator.platform,
|
string: navigator.platform,
|
||||||
subString: "Win",
|
subString: "Win",
|
||||||
identity: "Windows"
|
identity: "Windows"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
string: navigator.platform,
|
string: navigator.platform,
|
||||||
subString: "Mac",
|
subString: "Mac",
|
||||||
identity: "Mac"
|
identity: "Mac"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
string: navigator.userAgent,
|
string: navigator.userAgent,
|
||||||
subString: "iPhone",
|
subString: "iPhone",
|
||||||
identity: "iPhone/iPod"
|
identity: "iPhone/iPod"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
string: navigator.platform,
|
string: navigator.platform,
|
||||||
subString: "Linux",
|
subString: "Linux",
|
||||||
identity: "Linux"
|
identity: "Linux"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|
||||||
BrowserDetect.init();
|
BrowserDetect.init();
|
||||||
|
|
|
@ -20,7 +20,7 @@ var Bubble = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Closes all the opened bubbles
|
* Closes all the opened bubbles
|
||||||
* @public
|
* @public
|
||||||
* @return {boolean}
|
* @return {boolean}
|
||||||
|
|
|
@ -39,7 +39,7 @@ var Caps = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an array of the Jappix disco#infos
|
* Returns an array of the Jappix disco#infos
|
||||||
* @public
|
* @public
|
||||||
* @return {object}
|
* @return {object}
|
||||||
|
@ -468,7 +468,7 @@ var Caps = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generates the Jappix CAPS hash
|
* Generates the Jappix CAPS hash
|
||||||
* @public
|
* @public
|
||||||
* @return {string}
|
* @return {string}
|
||||||
|
|
|
@ -20,7 +20,7 @@ var Chat = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Correctly opens a new chat
|
* Correctly opens a new chat
|
||||||
* @public
|
* @public
|
||||||
* @param {string} xid
|
* @param {string} xid
|
||||||
|
|
|
@ -20,7 +20,7 @@ var ChatState = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sends a given chatstate to a given entity
|
* Sends a given chatstate to a given entity
|
||||||
* @public
|
* @public
|
||||||
* @param {string} state
|
* @param {string} state
|
||||||
|
|
|
@ -20,7 +20,7 @@ var Common = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if an element exists in the DOM
|
* Checks if an element exists in the DOM
|
||||||
* @public
|
* @public
|
||||||
* @param {string} path
|
* @param {string} path
|
||||||
|
@ -162,7 +162,7 @@ var Common = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Replaces '%s' to a given value for a translated string
|
* Replaces '%s' to a given value for a translated string
|
||||||
* @public
|
* @public
|
||||||
* @param {string} string
|
* @param {string} string
|
||||||
|
@ -298,7 +298,7 @@ var Common = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* nodepreps an XMPP node
|
* nodepreps an XMPP node
|
||||||
* @public
|
* @public
|
||||||
* @param {string} node
|
* @param {string} node
|
||||||
|
@ -360,8 +360,9 @@ var Common = (function () {
|
||||||
xid = self.cutResource(xid);
|
xid = self.cutResource(xid);
|
||||||
|
|
||||||
// Launch nodeprep
|
// Launch nodeprep
|
||||||
if(xid.indexOf('@') != -1)
|
if(xid.indexOf('@') != -1) {
|
||||||
xid = self.nodeprep(self.getXIDNick(xid)) + '@' + self.getXIDHost(xid);
|
xid = self.nodeprep(self.getXIDNick(xid)) + '@' + self.getXIDHost(xid);
|
||||||
|
}
|
||||||
|
|
||||||
return xid;
|
return xid;
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
|
@ -417,7 +418,7 @@ var Common = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the host from a XID
|
* Gets the host from a XID
|
||||||
* @public
|
* @public
|
||||||
* @param {string} aXID
|
* @param {string} aXID
|
||||||
|
@ -482,7 +483,7 @@ var Common = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the full XID of the user
|
* Gets the full XID of the user
|
||||||
* @public
|
* @public
|
||||||
* @return {string}
|
* @return {string}
|
||||||
|
@ -572,8 +573,9 @@ var Common = (function () {
|
||||||
var from = stanza.getFrom();
|
var from = stanza.getFrom();
|
||||||
|
|
||||||
// No from, we assume this is our XID
|
// No from, we assume this is our XID
|
||||||
if(!from)
|
if(!from) {
|
||||||
from = self.getXID();
|
from = self.getXID();
|
||||||
|
}
|
||||||
|
|
||||||
return from;
|
return from;
|
||||||
} catch(e) {
|
} 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
|
* Adds a zero to a date when needed
|
||||||
* @public
|
* @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
|
* @public
|
||||||
* @param {string} query
|
* @param {object} query
|
||||||
* @return {string}
|
* @return {object}
|
||||||
*/
|
*/
|
||||||
self.escapeRegex = function(query) {
|
self.escapeRegex = function(query) {
|
||||||
|
|
||||||
try {
|
if (query instanceof Array) {
|
||||||
return query.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
|
var result = new Array(query.length);
|
||||||
} catch(e) {
|
for(i=0; i<query.length; i++) {
|
||||||
Console.error('Common.escapeRegex', e);
|
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
|
* Converts a XML document to a string
|
||||||
* @public
|
* @public
|
||||||
* @param {object} xmlData
|
* @param {object} xmlData
|
||||||
|
|
|
@ -29,7 +29,7 @@ var Connection = (function () {
|
||||||
self.resume = false;
|
self.resume = false;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Does the user login
|
* Does the user login
|
||||||
* @public
|
* @public
|
||||||
* @param {string} lNick
|
* @param {string} lNick
|
||||||
|
@ -363,7 +363,7 @@ var Connection = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Triggers the connected state
|
* Triggers the connected state
|
||||||
* @public
|
* @public
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
|
@ -513,7 +513,7 @@ var Connection = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Quits a session
|
* Quits a session
|
||||||
* @public
|
* @public
|
||||||
* @param {type} name
|
* @param {type} name
|
||||||
|
@ -710,7 +710,7 @@ var Connection = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Resets the connection markers
|
* Resets the connection markers
|
||||||
* @public
|
* @public
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
|
|
|
@ -178,54 +178,54 @@ var BOSH_SAME_ORIGIN = false;
|
||||||
|
|
||||||
// XMPP error stanzas
|
// XMPP error stanzas
|
||||||
function STANZA_ERROR(code, type, cond) {
|
function STANZA_ERROR(code, type, cond) {
|
||||||
if(window == this) {
|
if(window == this) {
|
||||||
return new STANZA_ERROR(code, type, cond);
|
return new STANZA_ERROR(code, type, cond);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.code = code;
|
this.code = code;
|
||||||
this.type = type;
|
this.type = type;
|
||||||
this.cond = cond;
|
this.cond = cond;
|
||||||
}
|
}
|
||||||
|
|
||||||
var ERR_BAD_REQUEST =
|
var ERR_BAD_REQUEST =
|
||||||
STANZA_ERROR('400', 'modify', 'bad-request');
|
STANZA_ERROR('400', 'modify', 'bad-request');
|
||||||
var ERR_CONFLICT =
|
var ERR_CONFLICT =
|
||||||
STANZA_ERROR('409', 'cancel', 'conflict');
|
STANZA_ERROR('409', 'cancel', 'conflict');
|
||||||
var ERR_FEATURE_NOT_IMPLEMENTED =
|
var ERR_FEATURE_NOT_IMPLEMENTED =
|
||||||
STANZA_ERROR('501', 'cancel', 'feature-not-implemented');
|
STANZA_ERROR('501', 'cancel', 'feature-not-implemented');
|
||||||
var ERR_FORBIDDEN =
|
var ERR_FORBIDDEN =
|
||||||
STANZA_ERROR('403', 'auth', 'forbidden');
|
STANZA_ERROR('403', 'auth', 'forbidden');
|
||||||
var ERR_GONE =
|
var ERR_GONE =
|
||||||
STANZA_ERROR('302', 'modify', 'gone');
|
STANZA_ERROR('302', 'modify', 'gone');
|
||||||
var ERR_INTERNAL_SERVER_ERROR =
|
var ERR_INTERNAL_SERVER_ERROR =
|
||||||
STANZA_ERROR('500', 'wait', 'internal-server-error');
|
STANZA_ERROR('500', 'wait', 'internal-server-error');
|
||||||
var ERR_ITEM_NOT_FOUND =
|
var ERR_ITEM_NOT_FOUND =
|
||||||
STANZA_ERROR('404', 'cancel', 'item-not-found');
|
STANZA_ERROR('404', 'cancel', 'item-not-found');
|
||||||
var ERR_JID_MALFORMED =
|
var ERR_JID_MALFORMED =
|
||||||
STANZA_ERROR('400', 'modify', 'jid-malformed');
|
STANZA_ERROR('400', 'modify', 'jid-malformed');
|
||||||
var ERR_NOT_ACCEPTABLE =
|
var ERR_NOT_ACCEPTABLE =
|
||||||
STANZA_ERROR('406', 'modify', 'not-acceptable');
|
STANZA_ERROR('406', 'modify', 'not-acceptable');
|
||||||
var ERR_NOT_ALLOWED =
|
var ERR_NOT_ALLOWED =
|
||||||
STANZA_ERROR('405', 'cancel', 'not-allowed');
|
STANZA_ERROR('405', 'cancel', 'not-allowed');
|
||||||
var ERR_NOT_AUTHORIZED =
|
var ERR_NOT_AUTHORIZED =
|
||||||
STANZA_ERROR('401', 'auth', 'not-authorized');
|
STANZA_ERROR('401', 'auth', 'not-authorized');
|
||||||
var ERR_PAYMENT_REQUIRED =
|
var ERR_PAYMENT_REQUIRED =
|
||||||
STANZA_ERROR('402', 'auth', 'payment-required');
|
STANZA_ERROR('402', 'auth', 'payment-required');
|
||||||
var ERR_RECIPIENT_UNAVAILABLE =
|
var ERR_RECIPIENT_UNAVAILABLE =
|
||||||
STANZA_ERROR('404', 'wait', 'recipient-unavailable');
|
STANZA_ERROR('404', 'wait', 'recipient-unavailable');
|
||||||
var ERR_REDIRECT =
|
var ERR_REDIRECT =
|
||||||
STANZA_ERROR('302', 'modify', 'redirect');
|
STANZA_ERROR('302', 'modify', 'redirect');
|
||||||
var ERR_REGISTRATION_REQUIRED =
|
var ERR_REGISTRATION_REQUIRED =
|
||||||
STANZA_ERROR('407', 'auth', 'registration-required');
|
STANZA_ERROR('407', 'auth', 'registration-required');
|
||||||
var ERR_REMOTE_SERVER_NOT_FOUND =
|
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 =
|
var ERR_REMOTE_SERVER_TIMEOUT =
|
||||||
STANZA_ERROR('504', 'wait', 'remote-server-timeout');
|
STANZA_ERROR('504', 'wait', 'remote-server-timeout');
|
||||||
var ERR_RESOURCE_CONSTRAINT =
|
var ERR_RESOURCE_CONSTRAINT =
|
||||||
STANZA_ERROR('500', 'wait', 'resource-constraint');
|
STANZA_ERROR('500', 'wait', 'resource-constraint');
|
||||||
var ERR_SERVICE_UNAVAILABLE =
|
var ERR_SERVICE_UNAVAILABLE =
|
||||||
STANZA_ERROR('503', 'cancel', 'service-unavailable');
|
STANZA_ERROR('503', 'cancel', 'service-unavailable');
|
||||||
var ERR_SUBSCRIPTION_REQUIRED =
|
var ERR_SUBSCRIPTION_REQUIRED =
|
||||||
STANZA_ERROR('407', 'auth', 'subscription-required');
|
STANZA_ERROR('407', 'auth', 'subscription-required');
|
||||||
var ERR_UNEXPECTED_REQUEST =
|
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 = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the defined dataform elements
|
* Gets the defined dataform elements
|
||||||
* @public
|
* @public
|
||||||
* @param {string} host
|
* @param {string} host
|
||||||
|
@ -384,7 +384,7 @@ var DataForm = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles the command dataform
|
* Handles the command dataform
|
||||||
* @public
|
* @public
|
||||||
* @param {object} iq
|
* @param {object} iq
|
||||||
|
@ -943,7 +943,7 @@ var DataForm = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the dataform type
|
* Gets the dataform type
|
||||||
* @public
|
* @public
|
||||||
* @param {string} host
|
* @param {string} host
|
||||||
|
|
|
@ -25,7 +25,7 @@ var DataStore = (function () {
|
||||||
self._persistent_emulated = {};
|
self._persistent_emulated = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Common: storage adapter
|
* Common: storage adapter
|
||||||
* @public
|
* @public
|
||||||
* @param {object} storage_native
|
* @param {object} storage_native
|
||||||
|
@ -234,7 +234,7 @@ var DataStore = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Temporary: used to check a database entry exists
|
* Temporary: used to check a database entry exists
|
||||||
* @public
|
* @public
|
||||||
* @param {string} dbID
|
* @param {string} dbID
|
||||||
|
@ -378,7 +378,7 @@ var DataStore = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Persistent: used to remove a database entry
|
* Persistent: used to remove a database entry
|
||||||
* @public
|
* @public
|
||||||
* @param {string} dbID
|
* @param {string} dbID
|
||||||
|
|
|
@ -25,7 +25,7 @@ var DateUtils = (function () {
|
||||||
self.presence_last_activity = 0;
|
self.presence_last_activity = 0;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets a stamp from a date
|
* Gets a stamp from a date
|
||||||
* @public
|
* @public
|
||||||
* @param {Date} date
|
* @param {Date} date
|
||||||
|
@ -115,7 +115,7 @@ var DateUtils = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generates the time for XMPP
|
* Generates the time for XMPP
|
||||||
* @public
|
* @public
|
||||||
* @param {string} location
|
* @param {string} location
|
||||||
|
@ -288,7 +288,7 @@ var DateUtils = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parses a XMPP date (hh-mm-ss) into an human-readable one
|
* Parses a XMPP date (hh-mm-ss) into an human-readable one
|
||||||
* @public
|
* @public
|
||||||
* @param {string} to_parse
|
* @param {string} to_parse
|
||||||
|
|
|
@ -20,7 +20,7 @@ var Directory = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Opens the directory popup
|
* Opens the directory popup
|
||||||
* @public
|
* @public
|
||||||
* @return {boolean}
|
* @return {boolean}
|
||||||
|
|
|
@ -20,7 +20,7 @@ var Discovery = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Opens the discovery popup
|
* Opens the discovery popup
|
||||||
* @public
|
* @public
|
||||||
* @return {boolean}
|
* @return {boolean}
|
||||||
|
|
|
@ -20,7 +20,7 @@ var Errors = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Shows the given error output
|
* Shows the given error output
|
||||||
* @public
|
* @public
|
||||||
* @param {string} condition
|
* @param {string} condition
|
||||||
|
|
|
@ -20,7 +20,7 @@ var Favorites = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Opens the favorites popup
|
* Opens the favorites popup
|
||||||
* @public
|
* @public
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
|
@ -255,7 +255,7 @@ var Favorites = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Edits a favorite
|
* Edits a favorite
|
||||||
* @public
|
* @public
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
|
@ -365,6 +365,8 @@ var Favorites = (function () {
|
||||||
Console.info('Action on this bookmark: ' + room + '@' + server + ' / ' + type);
|
Console.info('Action on this bookmark: ' + room + '@' + server + ' / ' + type);
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
Console.error('Favorites.terminateThis', 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
|
* Gets a list of the MUC items on a given server
|
||||||
* @public
|
* @public
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
|
@ -663,11 +665,11 @@ var Favorites = (function () {
|
||||||
if(e.keyCode == 13) {
|
if(e.keyCode == 13) {
|
||||||
// Edit a favorite
|
// Edit a favorite
|
||||||
if($(path + 'fedit-edit').is(':visible'))
|
if($(path + 'fedit-edit').is(':visible'))
|
||||||
terminateThis('edit');
|
self.terminateThis('edit');
|
||||||
|
|
||||||
// Add a favorite
|
// Add a favorite
|
||||||
else
|
else
|
||||||
terminateThis('add');
|
self.terminateThis('add');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -690,15 +692,15 @@ var Favorites = (function () {
|
||||||
});
|
});
|
||||||
|
|
||||||
$(path + 'fedit-add').click(function() {
|
$(path + 'fedit-add').click(function() {
|
||||||
return terminateThis('add');
|
return self.terminateThis('add');
|
||||||
});
|
});
|
||||||
|
|
||||||
$(path + 'fedit-edit').click(function() {
|
$(path + 'fedit-edit').click(function() {
|
||||||
return terminateThis('edit');
|
return self.terminateThis('edit');
|
||||||
});
|
});
|
||||||
|
|
||||||
$(path + 'fedit-remove').click(function() {
|
$(path + 'fedit-remove').click(function() {
|
||||||
return terminateThis('remove');
|
return self.terminateThis('remove');
|
||||||
});
|
});
|
||||||
|
|
||||||
$(path + 'bottom .finish').click(function() {
|
$(path + 'bottom .finish').click(function() {
|
||||||
|
|
|
@ -20,7 +20,23 @@ var Features = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/* Constants */
|
||||||
|
self.SERVER_NAMES = [
|
||||||
|
'metronome',
|
||||||
|
'prosody',
|
||||||
|
'ejabberd',
|
||||||
|
'jabberd',
|
||||||
|
'openfire',
|
||||||
|
'tigase',
|
||||||
|
'isode'
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
/* Variables */
|
||||||
|
self.server_name = null;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
* Gets the features of a server
|
* Gets the features of a server
|
||||||
* @public
|
* @public
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
|
@ -89,10 +105,12 @@ var Features = (function () {
|
||||||
// Markers
|
// Markers
|
||||||
var namespaces = [NS_PUBSUB, NS_PUBSUB_CN, NS_URN_MAM, NS_COMMANDS, NS_URN_CARBONS];
|
var namespaces = [NS_PUBSUB, NS_PUBSUB_CN, NS_URN_MAM, NS_COMMANDS, NS_URN_CARBONS];
|
||||||
|
|
||||||
|
var identity = selector.find('identity');
|
||||||
|
|
||||||
var cur_feature;
|
var cur_feature;
|
||||||
var features = {
|
var features = {
|
||||||
// This weird selector fixes the same IE8 bug as above...
|
// This weird selector fixes the same IE8 bug as above...
|
||||||
'pep': (selector.find('identity').filter(function() {
|
'pep': (identity.filter(function() {
|
||||||
var this_sel = $(this);
|
var this_sel = $(this);
|
||||||
return (this_sel.attr('category') == 'pubsub' && this_sel.attr('type') == 'pep');
|
return (this_sel.attr('category') == 'pubsub' && this_sel.attr('type') == 'pep');
|
||||||
}).size() && true)
|
}).size() && true)
|
||||||
|
@ -105,7 +123,12 @@ var Features = (function () {
|
||||||
self.enable(namespace);
|
self.enable(namespace);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Retrieve server identity
|
||||||
|
self.server_name = self._normalizeServerName(
|
||||||
|
identity.filter('[category="server"]').attr('name')
|
||||||
|
);
|
||||||
|
|
||||||
// Enable the pep elements if available
|
// Enable the pep elements if available
|
||||||
if(features.pep === true) {
|
if(features.pep === true) {
|
||||||
// Update our database
|
// Update our database
|
||||||
|
@ -246,7 +269,7 @@ var Features = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the XMPP server PEP support
|
* Returns the XMPP server PEP support
|
||||||
* @public
|
* @public
|
||||||
* @return {boolean}
|
* @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
|
* Return class scope
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -20,7 +20,7 @@ var Filter = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generates a given emoticon HTML code
|
* Generates a given emoticon HTML code
|
||||||
* @public
|
* @public
|
||||||
* @param {string} image
|
* @param {string} image
|
||||||
|
|
|
@ -24,7 +24,7 @@ var Groupchat = (function () {
|
||||||
var JOIN_SUGGEST = [];
|
var JOIN_SUGGEST = [];
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Displays the MUC admin elements
|
* Displays the MUC admin elements
|
||||||
* @public
|
* @public
|
||||||
* @param {string} affiliation
|
* @param {string} affiliation
|
||||||
|
@ -348,7 +348,7 @@ var Groupchat = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generates a groupchat to join array
|
* Generates a groupchat to join array
|
||||||
* @public
|
* @public
|
||||||
* @return {object}
|
* @return {object}
|
||||||
|
|
|
@ -20,7 +20,7 @@ var Home = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allows the user to switch the difference home page elements
|
* Allows the user to switch the difference home page elements
|
||||||
* @public
|
* @public
|
||||||
* @param {string} div
|
* @param {string} div
|
||||||
|
|
|
@ -20,7 +20,7 @@ var HTTPAuth = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Login to a HTTP session
|
* Login to a HTTP session
|
||||||
* @public
|
* @public
|
||||||
* @param {string} lNick
|
* @param {string} lNick
|
||||||
|
@ -55,7 +55,7 @@ var HTTPAuth = (function () {
|
||||||
}
|
}
|
||||||
|
|
||||||
// And we handle everything that happen
|
// And we handle everything that happen
|
||||||
self.setupCon(con);
|
Connection.setupCon(con);
|
||||||
|
|
||||||
// Generate a resource
|
// Generate a resource
|
||||||
var random_resource = DataStore.getDB(Connection.desktop_hash, 'session', 'resource');
|
var random_resource = DataStore.getDB(Connection.desktop_hash, 'session', 'resource');
|
||||||
|
|
|
@ -20,7 +20,7 @@ var Inbox = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Opens the inbox popup
|
* Opens the inbox popup
|
||||||
* @public
|
* @public
|
||||||
* @return {boolean}
|
* @return {boolean}
|
||||||
|
@ -232,7 +232,7 @@ var Inbox = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cleans the inbox
|
* Cleans the inbox
|
||||||
* @public
|
* @public
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
|
@ -469,7 +469,7 @@ var Inbox = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stores an inbox message
|
* Stores an inbox message
|
||||||
* @public
|
* @public
|
||||||
* @param {string} from
|
* @param {string} from
|
||||||
|
@ -715,7 +715,7 @@ var Inbox = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hides a normal message content
|
* Hides a normal message content
|
||||||
* @public
|
* @public
|
||||||
* @param {string} id
|
* @param {string} id
|
||||||
|
|
|
@ -20,7 +20,7 @@ var IntegrateBox = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Opens the integratebox popup
|
* Opens the integratebox popup
|
||||||
* @public
|
* @public
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
|
@ -309,7 +309,7 @@ var IntegrateBox = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filters a string to apply the integratebox links
|
* Filters a string to apply the integratebox links
|
||||||
* @public
|
* @public
|
||||||
* @param {string} data
|
* @param {string} data
|
||||||
|
|
|
@ -24,7 +24,7 @@ var Interface = (function () {
|
||||||
self.chat_focus_hash = null;
|
self.chat_focus_hash = null;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Changes the title of the document
|
* Changes the title of the document
|
||||||
* @public
|
* @public
|
||||||
* @param {string} new_title
|
* @param {string} new_title
|
||||||
|
@ -166,7 +166,7 @@ var Interface = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads the complete chat switcher
|
* Loads the complete chat switcher
|
||||||
* @public
|
* @public
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
|
@ -433,7 +433,7 @@ var Interface = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Notifies the user from a new incoming message
|
* Notifies the user from a new incoming message
|
||||||
* @public
|
* @public
|
||||||
* @param {string} hash
|
* @param {string} hash
|
||||||
|
@ -451,17 +451,19 @@ var Interface = (function () {
|
||||||
// We notify the user if he has not the focus on the chat
|
// We notify the user if he has not the focus on the chat
|
||||||
if(!active || !Common.isFocused() || (self.chat_focus_hash != hash)) {
|
if(!active || !Common.isFocused() || (self.chat_focus_hash != hash)) {
|
||||||
if(!active) {
|
if(!active) {
|
||||||
if(type == 'personal')
|
if(type == 'personal') {
|
||||||
$(tested + ', ' + chat_switch + 'more-button').addClass('chan-newmessage');
|
$(tested + ', ' + chat_switch + 'more-button').addClass('chan-newmessage');
|
||||||
else if(type == 'unread')
|
} else if(type == 'unread') {
|
||||||
$(tested).addClass('chan-unread');
|
$(tested).addClass('chan-unread');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Count the number of pending messages
|
// Count the number of pending messages
|
||||||
var pending = 1;
|
var pending = 1;
|
||||||
|
|
||||||
if(Common.exists('#' + hash + '[data-counter]'))
|
if(Common.exists('#' + hash + '[data-counter]')) {
|
||||||
pending = parseInt($('#' + hash).attr('data-counter')) + 1;
|
pending = parseInt($('#' + hash).attr('data-counter')) + 1;
|
||||||
|
}
|
||||||
|
|
||||||
$('#' + hash).attr('data-counter', pending);
|
$('#' + hash).attr('data-counter', pending);
|
||||||
}
|
}
|
||||||
|
@ -570,7 +572,7 @@ var Interface = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Shows all the buddies in the roster
|
* Shows all the buddies in the roster
|
||||||
* @public
|
* @public
|
||||||
* @param {string} from
|
* @param {string} from
|
||||||
|
|
|
@ -15,340 +15,340 @@ Author: Camaran
|
||||||
* Released under MIT license, http://cubiq.org/license
|
* Released under MIT license, http://cubiq.org/license
|
||||||
*/
|
*/
|
||||||
var addToHome = (function (w) {
|
var addToHome = (function (w) {
|
||||||
var nav = w.navigator,
|
var nav = w.navigator,
|
||||||
isIDevice = 'platform' in nav && (/iphone|ipod|ipad/gi).test(nav.platform),
|
isIDevice = 'platform' in nav && (/iphone|ipod|ipad/gi).test(nav.platform),
|
||||||
isIPad,
|
isIPad,
|
||||||
isRetina,
|
isRetina,
|
||||||
isSafari,
|
isSafari,
|
||||||
isStandalone,
|
isStandalone,
|
||||||
OSVersion,
|
OSVersion,
|
||||||
startX = 0,
|
startX = 0,
|
||||||
startY = 0,
|
startY = 0,
|
||||||
lastVisit = 0,
|
lastVisit = 0,
|
||||||
isExpired,
|
isExpired,
|
||||||
isSessionActive,
|
isSessionActive,
|
||||||
isReturningVisitor,
|
isReturningVisitor,
|
||||||
balloon,
|
balloon,
|
||||||
overrideChecks,
|
overrideChecks,
|
||||||
|
|
||||||
positionInterval,
|
positionInterval,
|
||||||
closeTimeout,
|
closeTimeout,
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
autostart: true, // Automatically open the balloon
|
autostart: true, // Automatically open the balloon
|
||||||
returningVisitor: false, // Show the balloon to returning visitors only (setting this to true is highly recommended)
|
returningVisitor: false, // Show the balloon to returning visitors only (setting this to true is highly recommended)
|
||||||
animationIn: 'drop', // drop || bubble || fade
|
animationIn: 'drop', // drop || bubble || fade
|
||||||
animationOut: 'fade', // drop || bubble || fade
|
animationOut: 'fade', // drop || bubble || fade
|
||||||
startDelay: 2000, // 2 seconds from page load before the balloon appears
|
startDelay: 2000, // 2 seconds from page load before the balloon appears
|
||||||
lifespan: 15000, // 15 seconds before it is automatically destroyed
|
lifespan: 15000, // 15 seconds before it is automatically destroyed
|
||||||
bottomOffset: 14, // Distance of the balloon from bottom
|
bottomOffset: 14, // Distance of the balloon from bottom
|
||||||
expire: 0, // Minutes to wait before showing the popup again (0 = always displayed)
|
expire: 0, // Minutes to wait before showing the popup again (0 = always displayed)
|
||||||
message: '', // Customize your message or force a language ('' = automatic)
|
message: '', // Customize your message or force a language ('' = automatic)
|
||||||
touchIcon: false, // Display the touch icon
|
touchIcon: false, // Display the touch icon
|
||||||
arrow: true, // Display the balloon arrow
|
arrow: true, // Display the balloon arrow
|
||||||
hookOnLoad: true, // Should we hook to onload event? (really advanced usage)
|
hookOnLoad: true, // Should we hook to onload event? (really advanced usage)
|
||||||
closeButton: true, // Let the user close the balloon
|
closeButton: true, // Let the user close the balloon
|
||||||
iterations: 100 // Internal/debug use
|
iterations: 100 // Internal/debug use
|
||||||
},
|
},
|
||||||
|
|
||||||
intl = {
|
intl = {
|
||||||
ar: '<span dir="rtl">قم بتثبيت هذا التطبيق على <span dir="ltr">%device:</span>انقر<span dir="ltr">%icon</span> ،<strong>ثم اضفه الى الشاشة الرئيسية.</strong></span>',
|
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>.',
|
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>.',
|
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>.',
|
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>.',
|
de_de: 'Installieren Sie diese App auf Ihrem %device: %icon antippen und dann <strong>Zum Home-Bildschirm</strong>.',
|
||||||
el_gr: 'Εγκαταστήσετε αυτήν την Εφαρμογή στήν συσκευή σας %device: %icon μετά πατάτε <strong>Προσθήκη σε Αφετηρία</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>.',
|
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>.',
|
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>.',
|
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>.',
|
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>',
|
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>.',
|
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.',
|
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>.',
|
it_it: 'Installa questa applicazione sul tuo %device: premi su %icon e poi <strong>Aggiungi a Home</strong>.',
|
||||||
ja_jp: 'このウェブアプリをあなたの%deviceにインストールするには%iconをタップして<strong>ホーム画面に追加</strong>を選んでください。',
|
ja_jp: 'このウェブアプリをあなたの%deviceにインストールするには%iconをタップして<strong>ホーム画面に追加</strong>を選んでください。',
|
||||||
ko_kr: '%device에 웹앱을 설치하려면 %icon을 터치 후 "홈화면에 추가"를 선택하세요',
|
ko_kr: '%device에 웹앱을 설치하려면 %icon을 터치 후 "홈화면에 추가"를 선택하세요',
|
||||||
nb_no: 'Installer denne appen på din %device: trykk på %icon og deretter <strong>Legg til på Hjem-skjerm</strong>',
|
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>.',
|
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>.',
|
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_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>.',
|
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>.',
|
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>.',
|
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>',
|
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.',
|
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>.',
|
uk_ua: 'Встановіть цей веб сайт на Ваш %device: натисніть %icon, а потім <strong>На початковий екран</strong>.',
|
||||||
zh_cn: '您可以将此应用程式安装到您的 %device 上。请按 %icon 然后点选<strong>添加至主屏幕</strong>。',
|
zh_cn: '您可以将此应用程式安装到您的 %device 上。请按 %icon 然后点选<strong>添加至主屏幕</strong>。',
|
||||||
zh_tw: '您可以將此應用程式安裝到您的 %device 上。請按 %icon 然後點選<strong>加入主畫面螢幕</strong>。'
|
zh_tw: '您可以將此應用程式安裝到您的 %device 上。請按 %icon 然後點選<strong>加入主畫面螢幕</strong>。'
|
||||||
};
|
};
|
||||||
|
|
||||||
function init () {
|
function init () {
|
||||||
// Preliminary check, all further checks are performed on iDevices only
|
// Preliminary check, all further checks are performed on iDevices only
|
||||||
if ( !isIDevice ) return;
|
if ( !isIDevice ) return;
|
||||||
|
|
||||||
var now = Date.now(),
|
var now = Date.now(),
|
||||||
i;
|
i;
|
||||||
|
|
||||||
// Merge local with global options
|
// Merge local with global options
|
||||||
if ( w.addToHomeConfig ) {
|
if ( w.addToHomeConfig ) {
|
||||||
for ( i in w.addToHomeConfig ) {
|
for ( i in w.addToHomeConfig ) {
|
||||||
options[i] = w.addToHomeConfig[i];
|
options[i] = w.addToHomeConfig[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ( !options.autostart ) options.hookOnLoad = false;
|
if ( !options.autostart ) options.hookOnLoad = false;
|
||||||
|
|
||||||
isIPad = (/ipad/gi).test(nav.platform);
|
isIPad = (/ipad/gi).test(nav.platform);
|
||||||
isRetina = w.devicePixelRatio && w.devicePixelRatio > 1;
|
isRetina = w.devicePixelRatio && w.devicePixelRatio > 1;
|
||||||
isSafari = (/Safari/i).test(nav.appVersion) && !(/CriOS/i).test(nav.appVersion);
|
isSafari = (/Safari/i).test(nav.appVersion) && !(/CriOS/i).test(nav.appVersion);
|
||||||
isStandalone = nav.standalone;
|
isStandalone = nav.standalone;
|
||||||
OSVersion = nav.appVersion.match(/OS (\d+_\d+)/i);
|
OSVersion = nav.appVersion.match(/OS (\d+_\d+)/i);
|
||||||
OSVersion = OSVersion && OSVersion[1] ? +OSVersion[1].replace('_', '.') : 0;
|
OSVersion = OSVersion && OSVersion[1] ? +OSVersion[1].replace('_', '.') : 0;
|
||||||
|
|
||||||
lastVisit = +w.localStorage.getItem('addToHome');
|
lastVisit = +w.localStorage.getItem('addToHome');
|
||||||
|
|
||||||
isSessionActive = w.sessionStorage.getItem('addToHomeSession');
|
isSessionActive = w.sessionStorage.getItem('addToHomeSession');
|
||||||
isReturningVisitor = options.returningVisitor ? lastVisit && lastVisit + 28*24*60*60*1000 > now : true;
|
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
|
// If it is expired we need to reissue a new balloon
|
||||||
isExpired = isReturningVisitor && lastVisit <= now;
|
isExpired = isReturningVisitor && lastVisit <= now;
|
||||||
|
|
||||||
if ( options.hookOnLoad ) w.addEventListener('load', loaded, false);
|
if ( options.hookOnLoad ) w.addEventListener('load', loaded, false);
|
||||||
else if ( !options.hookOnLoad && options.autostart ) loaded();
|
else if ( !options.hookOnLoad && options.autostart ) loaded();
|
||||||
}
|
}
|
||||||
|
|
||||||
function loaded () {
|
function loaded () {
|
||||||
w.removeEventListener('load', loaded, false);
|
w.removeEventListener('load', loaded, false);
|
||||||
|
|
||||||
if ( !isReturningVisitor ) w.localStorage.setItem('addToHome', Date.now());
|
if ( !isReturningVisitor ) w.localStorage.setItem('addToHome', Date.now());
|
||||||
else if ( options.expire && isExpired ) w.localStorage.setItem('addToHome', Date.now() + options.expire * 60000);
|
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 = '',
|
var touchIcon = '',
|
||||||
platform = nav.platform.split(' ')[0],
|
platform = nav.platform.split(' ')[0],
|
||||||
language = nav.language.replace('-', '_');
|
language = nav.language.replace('-', '_');
|
||||||
|
|
||||||
balloon = document.createElement('div');
|
balloon = document.createElement('div');
|
||||||
balloon.id = 'addToHomeScreen';
|
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.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
|
// Localize message
|
||||||
if ( options.message in intl ) { // You may force a language despite the user's locale
|
if ( options.message in intl ) { // You may force a language despite the user's locale
|
||||||
language = options.message;
|
language = options.message;
|
||||||
options.message = '';
|
options.message = '';
|
||||||
}
|
}
|
||||||
if ( options.message === '' ) { // We look for a suitable language (defaulted to en_us)
|
if ( options.message === '' ) { // We look for a suitable language (defaulted to en_us)
|
||||||
options.message = language in intl ? intl[language] : intl['en_us'];
|
options.message = language in intl ? intl[language] : intl['en_us'];
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( options.touchIcon ) {
|
if ( options.touchIcon ) {
|
||||||
touchIcon = isRetina ?
|
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="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]');
|
document.querySelector('head link[rel^=apple-touch-icon][sizes="57x57"],head link[rel^=apple-touch-icon]');
|
||||||
|
|
||||||
if ( touchIcon ) {
|
if ( touchIcon ) {
|
||||||
touchIcon = '<span style="background-image:url(' + touchIcon.href + ')" class="addToHomeTouchIcon"></span>';
|
touchIcon = '<span style="background-image:url(' + touchIcon.href + ')" class="addToHomeTouchIcon"></span>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
balloon.className = (isIPad ? 'addToHomeIpad' : 'addToHomeIphone') + (touchIcon ? ' addToHomeWide' : '');
|
balloon.className = (isIPad ? 'addToHomeIpad' : 'addToHomeIphone') + (touchIcon ? ' addToHomeWide' : '');
|
||||||
balloon.innerHTML = touchIcon +
|
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.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.arrow ? '<span class="addToHomeArrow"></span>' : '') +
|
||||||
(options.closeButton ? '<span class="addToHomeClose">\u00D7</span>' : '');
|
(options.closeButton ? '<span class="addToHomeClose">\u00D7</span>' : '');
|
||||||
|
|
||||||
document.body.appendChild(balloon);
|
document.body.appendChild(balloon);
|
||||||
|
|
||||||
// Add the close action
|
// Add the close action
|
||||||
if ( options.closeButton ) balloon.addEventListener('click', clicked, false);
|
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 () {
|
function show () {
|
||||||
var duration,
|
var duration,
|
||||||
iPadXShift = 208;
|
iPadXShift = 208;
|
||||||
|
|
||||||
// Set the initial position
|
// Set the initial position
|
||||||
if ( isIPad ) {
|
if ( isIPad ) {
|
||||||
if ( OSVersion < 5 ) {
|
if ( OSVersion < 5 ) {
|
||||||
startY = w.scrollY;
|
startY = w.scrollY;
|
||||||
startX = w.scrollX;
|
startX = w.scrollX;
|
||||||
} else if ( OSVersion < 6 ) {
|
} else if ( OSVersion < 6 ) {
|
||||||
iPadXShift = 160;
|
iPadXShift = 160;
|
||||||
}
|
}
|
||||||
|
|
||||||
balloon.style.top = startY + options.bottomOffset + 'px';
|
balloon.style.top = startY + options.bottomOffset + 'px';
|
||||||
balloon.style.left = startX + iPadXShift - Math.round(balloon.offsetWidth / 2) + 'px';
|
balloon.style.left = startX + iPadXShift - Math.round(balloon.offsetWidth / 2) + 'px';
|
||||||
|
|
||||||
switch ( options.animationIn ) {
|
switch ( options.animationIn ) {
|
||||||
case 'drop':
|
case 'drop':
|
||||||
duration = '0.6s';
|
duration = '0.6s';
|
||||||
balloon.style.webkitTransform = 'translate3d(0,' + -(w.scrollY + options.bottomOffset + balloon.offsetHeight) + 'px,0)';
|
balloon.style.webkitTransform = 'translate3d(0,' + -(w.scrollY + options.bottomOffset + balloon.offsetHeight) + 'px,0)';
|
||||||
break;
|
break;
|
||||||
case 'bubble':
|
case 'bubble':
|
||||||
duration = '0.6s';
|
duration = '0.6s';
|
||||||
balloon.style.opacity = '0';
|
balloon.style.opacity = '0';
|
||||||
balloon.style.webkitTransform = 'translate3d(0,' + (startY + 50) + 'px,0)';
|
balloon.style.webkitTransform = 'translate3d(0,' + (startY + 50) + 'px,0)';
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
duration = '1s';
|
duration = '1s';
|
||||||
balloon.style.opacity = '0';
|
balloon.style.opacity = '0';
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
startY = w.innerHeight + w.scrollY;
|
startY = w.innerHeight + w.scrollY;
|
||||||
|
|
||||||
if ( OSVersion < 5 ) {
|
if ( OSVersion < 5 ) {
|
||||||
startX = Math.round((w.innerWidth - balloon.offsetWidth) / 2) + w.scrollX;
|
startX = Math.round((w.innerWidth - balloon.offsetWidth) / 2) + w.scrollX;
|
||||||
balloon.style.left = startX + 'px';
|
balloon.style.left = startX + 'px';
|
||||||
balloon.style.top = startY - balloon.offsetHeight - options.bottomOffset + 'px';
|
balloon.style.top = startY - balloon.offsetHeight - options.bottomOffset + 'px';
|
||||||
} else {
|
} else {
|
||||||
balloon.style.left = '50%';
|
balloon.style.left = '50%';
|
||||||
balloon.style.marginLeft = -Math.round(balloon.offsetWidth / 2) - ( w.orientation%180 && OSVersion >= 6 ? 40 : 0 ) + 'px';
|
balloon.style.marginLeft = -Math.round(balloon.offsetWidth / 2) - ( w.orientation%180 && OSVersion >= 6 ? 40 : 0 ) + 'px';
|
||||||
balloon.style.bottom = options.bottomOffset + 'px';
|
balloon.style.bottom = options.bottomOffset + 'px';
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (options.animationIn) {
|
switch (options.animationIn) {
|
||||||
case 'drop':
|
case 'drop':
|
||||||
duration = '1s';
|
duration = '1s';
|
||||||
balloon.style.webkitTransform = 'translate3d(0,' + -(startY + options.bottomOffset) + 'px,0)';
|
balloon.style.webkitTransform = 'translate3d(0,' + -(startY + options.bottomOffset) + 'px,0)';
|
||||||
break;
|
break;
|
||||||
case 'bubble':
|
case 'bubble':
|
||||||
duration = '0.6s';
|
duration = '0.6s';
|
||||||
balloon.style.webkitTransform = 'translate3d(0,' + (balloon.offsetHeight + options.bottomOffset + 50) + 'px,0)';
|
balloon.style.webkitTransform = 'translate3d(0,' + (balloon.offsetHeight + options.bottomOffset + 50) + 'px,0)';
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
duration = '1s';
|
duration = '1s';
|
||||||
balloon.style.opacity = '0';
|
balloon.style.opacity = '0';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
balloon.offsetHeight; // repaint trick
|
balloon.offsetHeight; // repaint trick
|
||||||
balloon.style.webkitTransitionDuration = duration;
|
balloon.style.webkitTransitionDuration = duration;
|
||||||
balloon.style.opacity = '1';
|
balloon.style.opacity = '1';
|
||||||
balloon.style.webkitTransform = 'translate3d(0,0,0)';
|
balloon.style.webkitTransform = 'translate3d(0,0,0)';
|
||||||
balloon.addEventListener('webkitTransitionEnd', transitionEnd, false);
|
balloon.addEventListener('webkitTransitionEnd', transitionEnd, false);
|
||||||
|
|
||||||
closeTimeout = setTimeout(close, options.lifespan);
|
closeTimeout = setTimeout(close, options.lifespan);
|
||||||
}
|
}
|
||||||
|
|
||||||
function manualShow (override) {
|
function manualShow (override) {
|
||||||
if ( !isIDevice || balloon ) return;
|
if ( !isIDevice || balloon ) return;
|
||||||
|
|
||||||
overrideChecks = override;
|
overrideChecks = override;
|
||||||
loaded();
|
loaded();
|
||||||
}
|
}
|
||||||
|
|
||||||
function close () {
|
function close () {
|
||||||
clearInterval( positionInterval );
|
clearInterval( positionInterval );
|
||||||
clearTimeout( closeTimeout );
|
clearTimeout( closeTimeout );
|
||||||
closeTimeout = null;
|
closeTimeout = null;
|
||||||
|
|
||||||
// check if the popup is displayed and prevent errors
|
// check if the popup is displayed and prevent errors
|
||||||
if ( !balloon ) return;
|
if ( !balloon ) return;
|
||||||
|
|
||||||
var posY = 0,
|
var posY = 0,
|
||||||
posX = 0,
|
posX = 0,
|
||||||
opacity = '1',
|
opacity = '1',
|
||||||
duration = '0';
|
duration = '0';
|
||||||
|
|
||||||
if ( options.closeButton ) balloon.removeEventListener('click', clicked, false);
|
if ( options.closeButton ) balloon.removeEventListener('click', clicked, false);
|
||||||
if ( !isIPad && OSVersion >= 6 ) window.removeEventListener('orientationchange', orientationCheck, false);
|
if ( !isIPad && OSVersion >= 6 ) window.removeEventListener('orientationchange', orientationCheck, false);
|
||||||
|
|
||||||
if ( OSVersion < 5 ) {
|
if ( OSVersion < 5 ) {
|
||||||
posY = isIPad ? w.scrollY - startY : w.scrollY + w.innerHeight - startY;
|
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;
|
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 ) {
|
switch ( options.animationOut ) {
|
||||||
case 'drop':
|
case 'drop':
|
||||||
if ( isIPad ) {
|
if ( isIPad ) {
|
||||||
duration = '0.4s';
|
duration = '0.4s';
|
||||||
opacity = '0';
|
opacity = '0';
|
||||||
posY += 50;
|
posY += 50;
|
||||||
} else {
|
} else {
|
||||||
duration = '0.6s';
|
duration = '0.6s';
|
||||||
posY += balloon.offsetHeight + options.bottomOffset + 50;
|
posY += balloon.offsetHeight + options.bottomOffset + 50;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'bubble':
|
case 'bubble':
|
||||||
if ( isIPad ) {
|
if ( isIPad ) {
|
||||||
duration = '0.8s';
|
duration = '0.8s';
|
||||||
posY -= balloon.offsetHeight + options.bottomOffset + 50;
|
posY -= balloon.offsetHeight + options.bottomOffset + 50;
|
||||||
} else {
|
} else {
|
||||||
duration = '0.4s';
|
duration = '0.4s';
|
||||||
opacity = '0';
|
opacity = '0';
|
||||||
posY -= 50;
|
posY -= 50;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
duration = '0.8s';
|
duration = '0.8s';
|
||||||
opacity = '0';
|
opacity = '0';
|
||||||
}
|
}
|
||||||
|
|
||||||
balloon.addEventListener('webkitTransitionEnd', transitionEnd, false);
|
balloon.addEventListener('webkitTransitionEnd', transitionEnd, false);
|
||||||
balloon.style.opacity = opacity;
|
balloon.style.opacity = opacity;
|
||||||
balloon.style.webkitTransitionDuration = duration;
|
balloon.style.webkitTransitionDuration = duration;
|
||||||
balloon.style.webkitTransform = 'translate3d(' + posX + 'px,' + posY + 'px,0)';
|
balloon.style.webkitTransform = 'translate3d(' + posX + 'px,' + posY + 'px,0)';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function clicked () {
|
function clicked () {
|
||||||
w.sessionStorage.setItem('addToHomeSession', '1');
|
w.sessionStorage.setItem('addToHomeSession', '1');
|
||||||
isSessionActive = true;
|
isSessionActive = true;
|
||||||
close();
|
close();
|
||||||
}
|
}
|
||||||
|
|
||||||
function transitionEnd () {
|
function transitionEnd () {
|
||||||
balloon.removeEventListener('webkitTransitionEnd', transitionEnd, false);
|
balloon.removeEventListener('webkitTransitionEnd', transitionEnd, false);
|
||||||
|
|
||||||
balloon.style.webkitTransitionProperty = '-webkit-transform';
|
balloon.style.webkitTransitionProperty = '-webkit-transform';
|
||||||
balloon.style.webkitTransitionDuration = '0.2s';
|
balloon.style.webkitTransitionDuration = '0.2s';
|
||||||
|
|
||||||
// We reached the end!
|
// We reached the end!
|
||||||
if ( !closeTimeout ) {
|
if ( !closeTimeout ) {
|
||||||
balloon.parentNode.removeChild(balloon);
|
balloon.parentNode.removeChild(balloon);
|
||||||
balloon = null;
|
balloon = null;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// On iOS 4 we start checking the element position
|
// On iOS 4 we start checking the element position
|
||||||
if ( OSVersion < 5 && closeTimeout ) positionInterval = setInterval(setPosition, options.iterations);
|
if ( OSVersion < 5 && closeTimeout ) positionInterval = setInterval(setPosition, options.iterations);
|
||||||
}
|
}
|
||||||
|
|
||||||
function setPosition () {
|
function setPosition () {
|
||||||
var matrix = new WebKitCSSMatrix(w.getComputedStyle(balloon, null).webkitTransform),
|
var matrix = new WebKitCSSMatrix(w.getComputedStyle(balloon, null).webkitTransform),
|
||||||
posY = isIPad ? w.scrollY - startY : w.scrollY + w.innerHeight - startY,
|
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;
|
posX = isIPad ? w.scrollX - startX : w.scrollX + Math.round((w.innerWidth - balloon.offsetWidth) / 2) - startX;
|
||||||
|
|
||||||
// Screen didn't move
|
// Screen didn't move
|
||||||
if ( posY == matrix.m42 && posX == matrix.m41 ) return;
|
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)
|
// Clear local and session storages (this is useful primarily in development)
|
||||||
function reset () {
|
function reset () {
|
||||||
w.localStorage.removeItem('addToHome');
|
w.localStorage.removeItem('addToHome');
|
||||||
w.sessionStorage.removeItem('addToHomeSession');
|
w.sessionStorage.removeItem('addToHomeSession');
|
||||||
}
|
}
|
||||||
|
|
||||||
function orientationCheck () {
|
function orientationCheck () {
|
||||||
balloon.style.marginLeft = -Math.round(balloon.offsetWidth / 2) - ( w.orientation%180 && OSVersion >= 6 ? 40 : 0 ) + 'px';
|
balloon.style.marginLeft = -Math.round(balloon.offsetWidth / 2) - ( w.orientation%180 && OSVersion >= 6 ? 40 : 0 ) + 'px';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Bootstrap!
|
// Bootstrap!
|
||||||
init();
|
init();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
show: manualShow,
|
show: manualShow,
|
||||||
close: close,
|
close: close,
|
||||||
reset: reset
|
reset: reset
|
||||||
};
|
};
|
||||||
})(window);
|
})(window);
|
||||||
|
|
|
@ -20,7 +20,7 @@ var IQ = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles an incoming IQ packet
|
* Handles an incoming IQ packet
|
||||||
* @public
|
* @public
|
||||||
* @param {object} iq
|
* @param {object} iq
|
||||||
|
@ -109,7 +109,7 @@ var IQ = (function () {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Privacy lists push
|
// 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
|
// REF : http://xmpp.org/extensions/xep-0016.html
|
||||||
|
|
||||||
// Roster push
|
// Roster push
|
||||||
|
@ -124,7 +124,7 @@ var IQ = (function () {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Roster push
|
// 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
|
// REF : http://xmpp.org/extensions/xep-0092.html
|
||||||
|
|
||||||
// Roster push
|
// Roster push
|
||||||
|
|
|
@ -29,7 +29,7 @@ var Jingle = (function() {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides an adapter to the JSJaCJingle console implementation which is different
|
* Provides an adapter to the JSJaCJingle console implementation which is different
|
||||||
* @public
|
* @private
|
||||||
* @return {object}
|
* @return {object}
|
||||||
*/
|
*/
|
||||||
self._consoleAdapter = (function() {
|
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>
|
* @license MIT License <http://www.opensource.org/licenses/mit-license.php>
|
||||||
*/
|
*/
|
||||||
(function ($) {
|
(function ($) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var escape = /["\\\x00-\x1f\x7f-\x9f]/g,
|
var escape = /["\\\x00-\x1f\x7f-\x9f]/g,
|
||||||
meta = {
|
meta = {
|
||||||
'\b': '\\b',
|
'\b': '\\b',
|
||||||
'\t': '\\t',
|
'\t': '\\t',
|
||||||
'\n': '\\n',
|
'\n': '\\n',
|
||||||
'\f': '\\f',
|
'\f': '\\f',
|
||||||
'\r': '\\r',
|
'\r': '\\r',
|
||||||
'"' : '\\"',
|
'"' : '\\"',
|
||||||
'\\': '\\\\'
|
'\\': '\\\\'
|
||||||
},
|
},
|
||||||
hasOwn = Object.prototype.hasOwnProperty;
|
hasOwn = Object.prototype.hasOwnProperty;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* jQuery.toJSON
|
* jQuery.toJSON
|
||||||
* Converts the given argument into a JSON representation.
|
* Converts the given argument into a JSON representation.
|
||||||
*
|
*
|
||||||
* @param o {Mixed} The json-serializable *thing* to be converted
|
* @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.
|
* 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
|
* Non-integer/string keys are skipped in the object, as are keys that point to a
|
||||||
* function.
|
* function.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
$.toJSON = typeof JSON === 'object' && JSON.stringify ? JSON.stringify : function (o) {
|
$.toJSON = typeof JSON === 'object' && JSON.stringify ? JSON.stringify : function (o) {
|
||||||
if (o === null) {
|
if (o === null) {
|
||||||
return 'null';
|
return 'null';
|
||||||
}
|
}
|
||||||
|
|
||||||
var pairs, k, name, val,
|
var pairs, k, name, val,
|
||||||
type = $.type(o);
|
type = $.type(o);
|
||||||
|
|
||||||
if (type === 'undefined') {
|
if (type === 'undefined') {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Also covers instantiated Number and Boolean objects,
|
// Also covers instantiated Number and Boolean objects,
|
||||||
// which are typeof 'object' but thanks to $.type, we
|
// which are typeof 'object' but thanks to $.type, we
|
||||||
// catch them here. I don't know whether it is right
|
// catch them here. I don't know whether it is right
|
||||||
// or wrong that instantiated primitives are not
|
// or wrong that instantiated primitives are not
|
||||||
// exported to JSON as an {"object":..}.
|
// exported to JSON as an {"object":..}.
|
||||||
// We choose this path because that's what the browsers did.
|
// We choose this path because that's what the browsers did.
|
||||||
if (type === 'number' || type === 'boolean') {
|
if (type === 'number' || type === 'boolean') {
|
||||||
return String(o);
|
return String(o);
|
||||||
}
|
}
|
||||||
if (type === 'string') {
|
if (type === 'string') {
|
||||||
return $.quoteString(o);
|
return $.quoteString(o);
|
||||||
}
|
}
|
||||||
if (typeof o.toJSON === 'function') {
|
if (typeof o.toJSON === 'function') {
|
||||||
return $.toJSON(o.toJSON());
|
return $.toJSON(o.toJSON());
|
||||||
}
|
}
|
||||||
if (type === 'date') {
|
if (type === 'date') {
|
||||||
var month = o.getUTCMonth() + 1,
|
var month = o.getUTCMonth() + 1,
|
||||||
day = o.getUTCDate(),
|
day = o.getUTCDate(),
|
||||||
year = o.getUTCFullYear(),
|
year = o.getUTCFullYear(),
|
||||||
hours = o.getUTCHours(),
|
hours = o.getUTCHours(),
|
||||||
minutes = o.getUTCMinutes(),
|
minutes = o.getUTCMinutes(),
|
||||||
seconds = o.getUTCSeconds(),
|
seconds = o.getUTCSeconds(),
|
||||||
milli = o.getUTCMilliseconds();
|
milli = o.getUTCMilliseconds();
|
||||||
|
|
||||||
if (month < 10) {
|
if (month < 10) {
|
||||||
month = '0' + month;
|
month = '0' + month;
|
||||||
}
|
}
|
||||||
if (day < 10) {
|
if (day < 10) {
|
||||||
day = '0' + day;
|
day = '0' + day;
|
||||||
}
|
}
|
||||||
if (hours < 10) {
|
if (hours < 10) {
|
||||||
hours = '0' + hours;
|
hours = '0' + hours;
|
||||||
}
|
}
|
||||||
if (minutes < 10) {
|
if (minutes < 10) {
|
||||||
minutes = '0' + minutes;
|
minutes = '0' + minutes;
|
||||||
}
|
}
|
||||||
if (seconds < 10) {
|
if (seconds < 10) {
|
||||||
seconds = '0' + seconds;
|
seconds = '0' + seconds;
|
||||||
}
|
}
|
||||||
if (milli < 100) {
|
if (milli < 100) {
|
||||||
milli = '0' + milli;
|
milli = '0' + milli;
|
||||||
}
|
}
|
||||||
if (milli < 10) {
|
if (milli < 10) {
|
||||||
milli = '0' + milli;
|
milli = '0' + milli;
|
||||||
}
|
}
|
||||||
return '"' + year + '-' + month + '-' + day + 'T' +
|
return '"' + year + '-' + month + '-' + day + 'T' +
|
||||||
hours + ':' + minutes + ':' + seconds +
|
hours + ':' + minutes + ':' + seconds +
|
||||||
'.' + milli + 'Z"';
|
'.' + milli + 'Z"';
|
||||||
}
|
}
|
||||||
|
|
||||||
pairs = [];
|
pairs = [];
|
||||||
|
|
||||||
if ($.isArray(o)) {
|
if ($.isArray(o)) {
|
||||||
for (k = 0; k < o.length; k++) {
|
for (k = 0; k < o.length; k++) {
|
||||||
pairs.push($.toJSON(o[k]) || 'null');
|
pairs.push($.toJSON(o[k]) || 'null');
|
||||||
}
|
}
|
||||||
return '[' + pairs.join(',') + ']';
|
return '[' + pairs.join(',') + ']';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Any other object (plain object, RegExp, ..)
|
// Any other object (plain object, RegExp, ..)
|
||||||
// Need to do typeof instead of $.type, because we also
|
// Need to do typeof instead of $.type, because we also
|
||||||
// want to catch non-plain objects.
|
// want to catch non-plain objects.
|
||||||
if (typeof o === 'object') {
|
if (typeof o === 'object') {
|
||||||
for (k in o) {
|
for (k in o) {
|
||||||
// Only include own properties,
|
// Only include own properties,
|
||||||
// Filter out inherited prototypes
|
// Filter out inherited prototypes
|
||||||
if (hasOwn.call(o, k)) {
|
if (hasOwn.call(o, k)) {
|
||||||
// Keys must be numerical or string. Skip others
|
// Keys must be numerical or string. Skip others
|
||||||
type = typeof k;
|
type = typeof k;
|
||||||
if (type === 'number') {
|
if (type === 'number') {
|
||||||
name = '"' + k + '"';
|
name = '"' + k + '"';
|
||||||
} else if (type === 'string') {
|
} else if (type === 'string') {
|
||||||
name = $.quoteString(k);
|
name = $.quoteString(k);
|
||||||
} else {
|
} else {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
type = typeof o[k];
|
type = typeof o[k];
|
||||||
|
|
||||||
// Invalid values like these return undefined
|
// Invalid values like these return undefined
|
||||||
// from toJSON, however those object members
|
// from toJSON, however those object members
|
||||||
// shouldn't be included in the JSON string at all.
|
// shouldn't be included in the JSON string at all.
|
||||||
if (type !== 'function' && type !== 'undefined') {
|
if (type !== 'function' && type !== 'undefined') {
|
||||||
val = $.toJSON(o[k]);
|
val = $.toJSON(o[k]);
|
||||||
pairs.push(name + ':' + val);
|
pairs.push(name + ':' + val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return '{' + pairs.join(',') + '}';
|
return '{' + pairs.join(',') + '}';
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* jQuery.evalJSON
|
* jQuery.evalJSON
|
||||||
* Evaluates a given json string.
|
* Evaluates a given json string.
|
||||||
*
|
*
|
||||||
* @param str {String}
|
* @param str {String}
|
||||||
*/
|
*/
|
||||||
$.evalJSON = typeof JSON === 'object' && JSON.parse ? JSON.parse : function (str) {
|
$.evalJSON = typeof JSON === 'object' && JSON.parse ? JSON.parse : function (str) {
|
||||||
/*jshint evil: true */
|
/*jshint evil: true */
|
||||||
return eval('(' + str + ')');
|
return eval('(' + str + ')');
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* jQuery.secureEvalJSON
|
* jQuery.secureEvalJSON
|
||||||
* Evals JSON in a way that is *more* secure.
|
* Evals JSON in a way that is *more* secure.
|
||||||
*
|
*
|
||||||
* @param str {String}
|
* @param str {String}
|
||||||
*/
|
*/
|
||||||
$.secureEvalJSON = typeof JSON === 'object' && JSON.parse ? JSON.parse : function (str) {
|
$.secureEvalJSON = typeof JSON === 'object' && JSON.parse ? JSON.parse : function (str) {
|
||||||
var filtered =
|
var filtered =
|
||||||
str
|
str
|
||||||
.replace(/\\["\\\/bfnrtu]/g, '@')
|
.replace(/\\["\\\/bfnrtu]/g, '@')
|
||||||
.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
|
.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
|
||||||
.replace(/(?:^|:|,)(?:\s*\[)+/g, '');
|
.replace(/(?:^|:|,)(?:\s*\[)+/g, '');
|
||||||
|
|
||||||
if (/^[\],:{}\s]*$/.test(filtered)) {
|
if (/^[\],:{}\s]*$/.test(filtered)) {
|
||||||
/*jshint evil: true */
|
/*jshint evil: true */
|
||||||
return eval('(' + str + ')');
|
return eval('(' + str + ')');
|
||||||
}
|
}
|
||||||
throw new SyntaxError('Error parsing JSON, source is not valid.');
|
throw new SyntaxError('Error parsing JSON, source is not valid.');
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* jQuery.quoteString
|
* jQuery.quoteString
|
||||||
* Returns a string-repr of a string, escaping quotes intelligently.
|
* Returns a string-repr of a string, escaping quotes intelligently.
|
||||||
* Mostly a support function for toJSON.
|
* Mostly a support function for toJSON.
|
||||||
* Examples:
|
* Examples:
|
||||||
* >>> jQuery.quoteString('apple')
|
* >>> jQuery.quoteString('apple')
|
||||||
* "apple"
|
* "apple"
|
||||||
*
|
*
|
||||||
* >>> jQuery.quoteString('"Where are we going?", she asked.')
|
* >>> jQuery.quoteString('"Where are we going?", she asked.')
|
||||||
* "\"Where are we going?\", she asked."
|
* "\"Where are we going?\", she asked."
|
||||||
*/
|
*/
|
||||||
$.quoteString = function (str) {
|
$.quoteString = function (str) {
|
||||||
if (str.match(escape)) {
|
if (str.match(escape)) {
|
||||||
return '"' + str.replace(escape, function (a) {
|
return '"' + str.replace(escape, function (a) {
|
||||||
var c = meta[a];
|
var c = meta[a];
|
||||||
if (typeof c === 'string') {
|
if (typeof c === 'string') {
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
c = a.charCodeAt();
|
c = a.charCodeAt();
|
||||||
return '\\u00' + Math.floor(c / 16).toString(16) + (c % 16).toString(16);
|
return '\\u00' + Math.floor(c / 16).toString(16) + (c % 16).toString(16);
|
||||||
}) + '"';
|
}) + '"';
|
||||||
}
|
}
|
||||||
return '"' + str + '"';
|
return '"' + str + '"';
|
||||||
};
|
};
|
||||||
|
|
||||||
}(jQuery));
|
}(jQuery));
|
||||||
|
|
|
@ -1,157 +1,157 @@
|
||||||
/*! http://mths.be/placeholder v2.0.7 by @mathias */
|
/*! http://mths.be/placeholder v2.0.7 by @mathias */
|
||||||
;(function(window, document, $) {
|
;(function(window, document, $) {
|
||||||
|
|
||||||
var isInputSupported = 'placeholder' in document.createElement('input'),
|
var isInputSupported = 'placeholder' in document.createElement('input'),
|
||||||
isTextareaSupported = 'placeholder' in document.createElement('textarea'),
|
isTextareaSupported = 'placeholder' in document.createElement('textarea'),
|
||||||
prototype = $.fn,
|
prototype = $.fn,
|
||||||
valHooks = $.valHooks,
|
valHooks = $.valHooks,
|
||||||
hooks,
|
hooks,
|
||||||
placeholder;
|
placeholder;
|
||||||
|
|
||||||
if (isInputSupported && isTextareaSupported) {
|
if (isInputSupported && isTextareaSupported) {
|
||||||
|
|
||||||
placeholder = prototype.placeholder = function() {
|
placeholder = prototype.placeholder = function() {
|
||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
|
||||||
placeholder.input = placeholder.textarea = true;
|
placeholder.input = placeholder.textarea = true;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
placeholder = prototype.placeholder = function() {
|
placeholder = prototype.placeholder = function() {
|
||||||
var $this = this;
|
var $this = this;
|
||||||
$this
|
$this
|
||||||
.filter((isInputSupported ? 'textarea' : ':input') + '[placeholder]')
|
.filter((isInputSupported ? 'textarea' : ':input') + '[placeholder]')
|
||||||
.not('.placeholder')
|
.not('.placeholder')
|
||||||
.bind({
|
.bind({
|
||||||
'focus.placeholder': clearPlaceholder,
|
'focus.placeholder': clearPlaceholder,
|
||||||
'blur.placeholder': setPlaceholder
|
'blur.placeholder': setPlaceholder
|
||||||
})
|
})
|
||||||
.data('placeholder-enabled', true)
|
.data('placeholder-enabled', true)
|
||||||
.trigger('blur.placeholder');
|
.trigger('blur.placeholder');
|
||||||
return $this;
|
return $this;
|
||||||
};
|
};
|
||||||
|
|
||||||
placeholder.input = isInputSupported;
|
placeholder.input = isInputSupported;
|
||||||
placeholder.textarea = isTextareaSupported;
|
placeholder.textarea = isTextareaSupported;
|
||||||
|
|
||||||
hooks = {
|
hooks = {
|
||||||
'get': function(element) {
|
'get': function(element) {
|
||||||
var $element = $(element);
|
var $element = $(element);
|
||||||
return $element.data('placeholder-enabled') && $element.hasClass('placeholder') ? '' : element.value;
|
return $element.data('placeholder-enabled') && $element.hasClass('placeholder') ? '' : element.value;
|
||||||
},
|
},
|
||||||
'set': function(element, value) {
|
'set': function(element, value) {
|
||||||
var $element = $(element);
|
var $element = $(element);
|
||||||
if (!$element.data('placeholder-enabled')) {
|
if (!$element.data('placeholder-enabled')) {
|
||||||
return element.value = value;
|
return element.value = value;
|
||||||
}
|
}
|
||||||
if (value == '') {
|
if (value == '') {
|
||||||
element.value = value;
|
element.value = value;
|
||||||
// Issue #56: Setting the placeholder causes problems if the element continues to have focus.
|
// Issue #56: Setting the placeholder causes problems if the element continues to have focus.
|
||||||
if (element != document.activeElement) {
|
if (element != document.activeElement) {
|
||||||
// We can't use `triggerHandler` here because of dummy text/password inputs :(
|
// We can't use `triggerHandler` here because of dummy text/password inputs :(
|
||||||
setPlaceholder.call(element);
|
setPlaceholder.call(element);
|
||||||
}
|
}
|
||||||
} else if ($element.hasClass('placeholder')) {
|
} else if ($element.hasClass('placeholder')) {
|
||||||
clearPlaceholder.call(element, true, value) || (element.value = value);
|
clearPlaceholder.call(element, true, value) || (element.value = value);
|
||||||
} else {
|
} else {
|
||||||
element.value = value;
|
element.value = value;
|
||||||
}
|
}
|
||||||
// `set` can not return `undefined`; see http://jsapi.info/jquery/1.7.1/val#L2363
|
// `set` can not return `undefined`; see http://jsapi.info/jquery/1.7.1/val#L2363
|
||||||
return $element;
|
return $element;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
isInputSupported || (valHooks.input = hooks);
|
isInputSupported || (valHooks.input = hooks);
|
||||||
isTextareaSupported || (valHooks.textarea = hooks);
|
isTextareaSupported || (valHooks.textarea = hooks);
|
||||||
|
|
||||||
$(function() {
|
$(function() {
|
||||||
// Look for forms
|
// Look for forms
|
||||||
$(document).delegate('form', 'submit.placeholder', function() {
|
$(document).delegate('form', 'submit.placeholder', function() {
|
||||||
// Clear the placeholder values so they don't get submitted
|
// Clear the placeholder values so they don't get submitted
|
||||||
var $inputs = $('.placeholder', this).each(clearPlaceholder);
|
var $inputs = $('.placeholder', this).each(clearPlaceholder);
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
$inputs.each(setPlaceholder);
|
$inputs.each(setPlaceholder);
|
||||||
}, 10);
|
}, 10);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// Clear placeholder values upon page reload
|
// Clear placeholder values upon page reload
|
||||||
$(window).bind('beforeunload.placeholder', function() {
|
$(window).bind('beforeunload.placeholder', function() {
|
||||||
$('.placeholder').each(function() {
|
$('.placeholder').each(function() {
|
||||||
this.value = '';
|
this.value = '';
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function args(elem) {
|
function args(elem) {
|
||||||
// Return an object of element attributes
|
// Return an object of element attributes
|
||||||
var newAttrs = {},
|
var newAttrs = {},
|
||||||
rinlinejQuery = /^jQuery\d+$/;
|
rinlinejQuery = /^jQuery\d+$/;
|
||||||
$.each(elem.attributes, function(i, attr) {
|
$.each(elem.attributes, function(i, attr) {
|
||||||
if (attr.specified && !rinlinejQuery.test(attr.name)) {
|
if (attr.specified && !rinlinejQuery.test(attr.name)) {
|
||||||
newAttrs[attr.name] = attr.value;
|
newAttrs[attr.name] = attr.value;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return newAttrs;
|
return newAttrs;
|
||||||
}
|
}
|
||||||
|
|
||||||
function clearPlaceholder(event, value) {
|
function clearPlaceholder(event, value) {
|
||||||
var input = this,
|
var input = this,
|
||||||
$input = $(input);
|
$input = $(input);
|
||||||
if (input.value == $input.attr('placeholder') && $input.hasClass('placeholder')) {
|
if (input.value == $input.attr('placeholder') && $input.hasClass('placeholder')) {
|
||||||
if ($input.data('placeholder-password')) {
|
if ($input.data('placeholder-password')) {
|
||||||
$input = $input.hide().next().show().attr('id', $input.removeAttr('id').data('placeholder-id'));
|
$input = $input.hide().next().show().attr('id', $input.removeAttr('id').data('placeholder-id'));
|
||||||
// If `clearPlaceholder` was called from `$.valHooks.input.set`
|
// If `clearPlaceholder` was called from `$.valHooks.input.set`
|
||||||
if (event === true) {
|
if (event === true) {
|
||||||
return $input[0].value = value;
|
return $input[0].value = value;
|
||||||
}
|
}
|
||||||
$input.focus();
|
$input.focus();
|
||||||
} else {
|
} else {
|
||||||
input.value = '';
|
input.value = '';
|
||||||
$input.removeClass('placeholder');
|
$input.removeClass('placeholder');
|
||||||
input == document.activeElement && input.select();
|
input == document.activeElement && input.select();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function setPlaceholder() {
|
function setPlaceholder() {
|
||||||
var $replacement,
|
var $replacement,
|
||||||
input = this,
|
input = this,
|
||||||
$input = $(input),
|
$input = $(input),
|
||||||
$origInput = $input,
|
$origInput = $input,
|
||||||
id = this.id;
|
id = this.id;
|
||||||
if (input.value == '') {
|
if (input.value == '') {
|
||||||
if (input.type == 'password') {
|
if (input.type == 'password') {
|
||||||
if (!$input.data('placeholder-textinput')) {
|
if (!$input.data('placeholder-textinput')) {
|
||||||
try {
|
try {
|
||||||
$replacement = $input.clone().attr({ 'type': 'text' });
|
$replacement = $input.clone().attr({ 'type': 'text' });
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
$replacement = $('<input>').attr($.extend(args(this), { 'type': 'text' }));
|
$replacement = $('<input>').attr($.extend(args(this), { 'type': 'text' }));
|
||||||
}
|
}
|
||||||
$replacement
|
$replacement
|
||||||
.removeAttr('name')
|
.removeAttr('name')
|
||||||
.data({
|
.data({
|
||||||
'placeholder-password': true,
|
'placeholder-password': true,
|
||||||
'placeholder-id': id
|
'placeholder-id': id
|
||||||
})
|
})
|
||||||
.bind('focus.placeholder', clearPlaceholder);
|
.bind('focus.placeholder', clearPlaceholder);
|
||||||
$input
|
$input
|
||||||
.data({
|
.data({
|
||||||
'placeholder-textinput': $replacement,
|
'placeholder-textinput': $replacement,
|
||||||
'placeholder-id': id
|
'placeholder-id': id
|
||||||
})
|
})
|
||||||
.before($replacement);
|
.before($replacement);
|
||||||
}
|
}
|
||||||
$input = $input.removeAttr('id').hide().prev().attr('id', id).show();
|
$input = $input.removeAttr('id').hide().prev().attr('id', id).show();
|
||||||
// Note: `$input[0] != input` now!
|
// Note: `$input[0] != input` now!
|
||||||
}
|
}
|
||||||
$input.addClass('placeholder');
|
$input.addClass('placeholder');
|
||||||
$input[0].value = $input.attr('placeholder');
|
$input[0].value = $input.attr('placeholder');
|
||||||
} else {
|
} else {
|
||||||
$input.removeClass('placeholder');
|
$input.removeClass('placeholder');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}(this, document, jQuery));
|
}(this, document, jQuery));
|
|
@ -17,169 +17,169 @@
|
||||||
}
|
}
|
||||||
}(function ($) {
|
}(function ($) {
|
||||||
|
|
||||||
var $scrollTo = $.scrollTo = function( target, duration, settings ) {
|
var $scrollTo = $.scrollTo = function( target, duration, settings ) {
|
||||||
return $(window).scrollTo( target, duration, settings );
|
return $(window).scrollTo( target, duration, settings );
|
||||||
};
|
};
|
||||||
|
|
||||||
$scrollTo.defaults = {
|
$scrollTo.defaults = {
|
||||||
axis:'xy',
|
axis:'xy',
|
||||||
duration: parseFloat($.fn.jquery) >= 1.3 ? 0 : 1,
|
duration: parseFloat($.fn.jquery) >= 1.3 ? 0 : 1,
|
||||||
limit:true
|
limit:true
|
||||||
};
|
};
|
||||||
|
|
||||||
// Returns the element that needs to be animated to scroll the window.
|
// Returns the element that needs to be animated to scroll the window.
|
||||||
// Kept for backwards compatibility (specially for localScroll & serialScroll)
|
// Kept for backwards compatibility (specially for localScroll & serialScroll)
|
||||||
$scrollTo.window = function( scope ) {
|
$scrollTo.window = function( scope ) {
|
||||||
return $(window)._scrollable();
|
return $(window)._scrollable();
|
||||||
};
|
};
|
||||||
|
|
||||||
// Hack, hack, hack :)
|
// Hack, hack, hack :)
|
||||||
// Returns the real elements to scroll (supports window/iframes, documents and regular nodes)
|
// Returns the real elements to scroll (supports window/iframes, documents and regular nodes)
|
||||||
$.fn._scrollable = function() {
|
$.fn._scrollable = function() {
|
||||||
return this.map(function() {
|
return this.map(function() {
|
||||||
var elem = this,
|
var elem = this,
|
||||||
isWin = !elem.nodeName || $.inArray( elem.nodeName.toLowerCase(), ['iframe','#document','html','body'] ) != -1;
|
isWin = !elem.nodeName || $.inArray( elem.nodeName.toLowerCase(), ['iframe','#document','html','body'] ) != -1;
|
||||||
|
|
||||||
if (!isWin)
|
if (!isWin)
|
||||||
return elem;
|
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' ?
|
return /webkit/i.test(navigator.userAgent) || doc.compatMode == 'BackCompat' ?
|
||||||
doc.body :
|
doc.body :
|
||||||
doc.documentElement;
|
doc.documentElement;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
$.fn.scrollTo = function( target, duration, settings ) {
|
$.fn.scrollTo = function( target, duration, settings ) {
|
||||||
if (typeof duration == 'object') {
|
if (typeof duration == 'object') {
|
||||||
settings = duration;
|
settings = duration;
|
||||||
duration = 0;
|
duration = 0;
|
||||||
}
|
}
|
||||||
if (typeof settings == 'function')
|
if (typeof settings == 'function')
|
||||||
settings = { onAfter:settings };
|
settings = { onAfter:settings };
|
||||||
|
|
||||||
if (target == 'max')
|
if (target == 'max')
|
||||||
target = 9e9;
|
target = 9e9;
|
||||||
|
|
||||||
settings = $.extend( {}, $scrollTo.defaults, settings );
|
settings = $.extend( {}, $scrollTo.defaults, settings );
|
||||||
// Speed is still recognized for backwards compatibility
|
// Speed is still recognized for backwards compatibility
|
||||||
duration = duration || settings.duration;
|
duration = duration || settings.duration;
|
||||||
// Make sure the settings are given right
|
// Make sure the settings are given right
|
||||||
settings.queue = settings.queue && settings.axis.length > 1;
|
settings.queue = settings.queue && settings.axis.length > 1;
|
||||||
|
|
||||||
if (settings.queue)
|
if (settings.queue)
|
||||||
// Let's keep the overall duration
|
// Let's keep the overall duration
|
||||||
duration /= 2;
|
duration /= 2;
|
||||||
settings.offset = both( settings.offset );
|
settings.offset = both( settings.offset );
|
||||||
settings.over = both( settings.over );
|
settings.over = both( settings.over );
|
||||||
|
|
||||||
return this._scrollable().each(function() {
|
return this._scrollable().each(function() {
|
||||||
// Null target yields nothing, just like jQuery does
|
// Null target yields nothing, just like jQuery does
|
||||||
if (target == null) return;
|
if (target == null) return;
|
||||||
|
|
||||||
var elem = this,
|
var elem = this,
|
||||||
$elem = $(elem),
|
$elem = $(elem),
|
||||||
targ = target, toff, attr = {},
|
targ = target, toff, attr = {},
|
||||||
win = $elem.is('html,body');
|
win = $elem.is('html,body');
|
||||||
|
|
||||||
switch (typeof targ) {
|
switch (typeof targ) {
|
||||||
// A number will pass the regex
|
// A number will pass the regex
|
||||||
case 'number':
|
case 'number':
|
||||||
case 'string':
|
case 'string':
|
||||||
if (/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(targ)) {
|
if (/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(targ)) {
|
||||||
targ = both( targ );
|
targ = both( targ );
|
||||||
// We are done
|
// We are done
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// Relative selector, no break!
|
// Relative selector, no break!
|
||||||
targ = $(targ,this);
|
targ = $(targ,this);
|
||||||
if (!targ.length) return;
|
if (!targ.length) return;
|
||||||
case 'object':
|
case 'object':
|
||||||
// DOMElement / jQuery
|
// DOMElement / jQuery
|
||||||
if (targ.is || targ.style)
|
if (targ.is || targ.style)
|
||||||
// Get the real position of the target
|
// Get the real position of the target
|
||||||
toff = (targ = $(targ)).offset();
|
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 ) {
|
$.each( settings.axis.split(''), function( i, axis ) {
|
||||||
var Pos = axis == 'x' ? 'Left' : 'Top',
|
var Pos = axis == 'x' ? 'Left' : 'Top',
|
||||||
pos = Pos.toLowerCase(),
|
pos = Pos.toLowerCase(),
|
||||||
key = 'scroll' + Pos,
|
key = 'scroll' + Pos,
|
||||||
old = elem[key],
|
old = elem[key],
|
||||||
max = $scrollTo.max(elem, axis);
|
max = $scrollTo.max(elem, axis);
|
||||||
|
|
||||||
if (toff) {// jQuery / DOMElement
|
if (toff) {// jQuery / DOMElement
|
||||||
attr[key] = toff[pos] + ( win ? 0 : old - $elem.offset()[pos] );
|
attr[key] = toff[pos] + ( win ? 0 : old - $elem.offset()[pos] );
|
||||||
|
|
||||||
// If it's a dom element, reduce the margin
|
// If it's a dom element, reduce the margin
|
||||||
if (settings.margin) {
|
if (settings.margin) {
|
||||||
attr[key] -= parseInt(targ.css('margin'+Pos)) || 0;
|
attr[key] -= parseInt(targ.css('margin'+Pos)) || 0;
|
||||||
attr[key] -= parseInt(targ.css('border'+Pos+'Width')) || 0;
|
attr[key] -= parseInt(targ.css('border'+Pos+'Width')) || 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
attr[key] += offset[pos] || 0;
|
attr[key] += offset[pos] || 0;
|
||||||
|
|
||||||
if(settings.over[pos])
|
if(settings.over[pos])
|
||||||
// Scroll to a fraction of its width/height
|
// Scroll to a fraction of its width/height
|
||||||
attr[key] += targ[axis=='x'?'width':'height']() * settings.over[pos];
|
attr[key] += targ[axis=='x'?'width':'height']() * settings.over[pos];
|
||||||
} else {
|
} else {
|
||||||
var val = targ[pos];
|
var val = targ[pos];
|
||||||
// Handle percentage values
|
// Handle percentage values
|
||||||
attr[key] = val.slice && val.slice(-1) == '%' ?
|
attr[key] = val.slice && val.slice(-1) == '%' ?
|
||||||
parseFloat(val) / 100 * max
|
parseFloat(val) / 100 * max
|
||||||
: val;
|
: val;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Number or 'number'
|
// Number or 'number'
|
||||||
if (settings.limit && /^\d+$/.test(attr[key]))
|
if (settings.limit && /^\d+$/.test(attr[key]))
|
||||||
// Check the limits
|
// Check the limits
|
||||||
attr[key] = attr[key] <= 0 ? 0 : Math.min( attr[key], max );
|
attr[key] = attr[key] <= 0 ? 0 : Math.min( attr[key], max );
|
||||||
|
|
||||||
// Queueing axes
|
// Queueing axes
|
||||||
if (!i && settings.queue) {
|
if (!i && settings.queue) {
|
||||||
// Don't waste time animating, if there's no need.
|
// Don't waste time animating, if there's no need.
|
||||||
if (old != attr[key])
|
if (old != attr[key])
|
||||||
// Intermediate animation
|
// Intermediate animation
|
||||||
animate( settings.onAfterFirst );
|
animate( settings.onAfterFirst );
|
||||||
// Don't animate this axis again in the next iteration.
|
// Don't animate this axis again in the next iteration.
|
||||||
delete attr[key];
|
delete attr[key];
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
animate( settings.onAfter );
|
animate( settings.onAfter );
|
||||||
|
|
||||||
function animate( callback ) {
|
function animate( callback ) {
|
||||||
$elem.animate( attr, duration, settings.easing, callback && function() {
|
$elem.animate( attr, duration, settings.easing, callback && function() {
|
||||||
callback.call(this, targ, settings);
|
callback.call(this, targ, settings);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
}).end();
|
}).end();
|
||||||
};
|
};
|
||||||
|
|
||||||
// Max scrolling position, works on quirks mode
|
// Max scrolling position, works on quirks mode
|
||||||
// It only fails (not too badly) on IE, quirks mode.
|
// It only fails (not too badly) on IE, quirks mode.
|
||||||
$scrollTo.max = function( elem, axis ) {
|
$scrollTo.max = function( elem, axis ) {
|
||||||
var Dim = axis == 'x' ? 'Width' : 'Height',
|
var Dim = axis == 'x' ? 'Width' : 'Height',
|
||||||
scroll = 'scroll'+Dim;
|
scroll = 'scroll'+Dim;
|
||||||
|
|
||||||
if (!$(elem).is('html,body'))
|
if (!$(elem).is('html,body'))
|
||||||
return elem[scroll] - $(elem)[Dim.toLowerCase()]();
|
return elem[scroll] - $(elem)[Dim.toLowerCase()]();
|
||||||
|
|
||||||
var size = 'client' + Dim,
|
var size = 'client' + Dim,
|
||||||
html = elem.ownerDocument.documentElement,
|
html = elem.ownerDocument.documentElement,
|
||||||
body = elem.ownerDocument.body;
|
body = elem.ownerDocument.body;
|
||||||
|
|
||||||
return Math.max( html[scroll], body[scroll] )
|
return Math.max( html[scroll], body[scroll] )
|
||||||
- Math.min( html[size] , body[size] );
|
- Math.min( html[size] , body[size] );
|
||||||
};
|
};
|
||||||
|
|
||||||
function both( val ) {
|
function both( val ) {
|
||||||
return $.isFunction(val) || typeof val == 'object' ? val : { top:val, left:val };
|
return $.isFunction(val) || typeof val == 'object' ? val : { top:val, left:val };
|
||||||
};
|
};
|
||||||
|
|
||||||
// AMD requirement
|
// AMD requirement
|
||||||
return $scrollTo;
|
return $scrollTo;
|
||||||
|
|
|
@ -10,129 +10,129 @@
|
||||||
**/
|
**/
|
||||||
|
|
||||||
jQuery.fn.extend({
|
jQuery.fn.extend({
|
||||||
everyTime: function(interval, label, fn, times) {
|
everyTime: function(interval, label, fn, times) {
|
||||||
return this.each(function() {
|
return this.each(function() {
|
||||||
jQuery.timer.add(this, interval, label, fn, times);
|
jQuery.timer.add(this, interval, label, fn, times);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
oneTime: function(interval, label, fn) {
|
oneTime: function(interval, label, fn) {
|
||||||
return this.each(function() {
|
return this.each(function() {
|
||||||
jQuery.timer.add(this, interval, label, fn, 1);
|
jQuery.timer.add(this, interval, label, fn, 1);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
stopTime: function(label, fn) {
|
stopTime: function(label, fn) {
|
||||||
return this.each(function() {
|
return this.each(function() {
|
||||||
jQuery.timer.remove(this, label, fn);
|
jQuery.timer.remove(this, label, fn);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
jQuery.extend({
|
jQuery.extend({
|
||||||
timer: {
|
timer: {
|
||||||
global: [],
|
global: [],
|
||||||
guid: 1,
|
guid: 1,
|
||||||
dataKey: "jQuery.timer",
|
dataKey: "jQuery.timer",
|
||||||
regex: /^([0-9]+(?:\.[0-9]*)?)\s*(.*s)?$/,
|
regex: /^([0-9]+(?:\.[0-9]*)?)\s*(.*s)?$/,
|
||||||
powers: {
|
powers: {
|
||||||
// Yeah this is major overkill...
|
// Yeah this is major overkill...
|
||||||
'ms': 1,
|
'ms': 1,
|
||||||
'cs': 10,
|
'cs': 10,
|
||||||
'ds': 100,
|
'ds': 100,
|
||||||
's': 1000,
|
's': 1000,
|
||||||
'das': 10000,
|
'das': 10000,
|
||||||
'hs': 100000,
|
'hs': 100000,
|
||||||
'ks': 1000000
|
'ks': 1000000
|
||||||
},
|
},
|
||||||
timeParse: function(value) {
|
timeParse: function(value) {
|
||||||
if (value == undefined || value == null)
|
if (value == undefined || value == null)
|
||||||
return null;
|
return null;
|
||||||
var result = this.regex.exec(jQuery.trim(value.toString()));
|
var result = this.regex.exec(jQuery.trim(value.toString()));
|
||||||
if (result[2]) {
|
if (result[2]) {
|
||||||
var num = parseFloat(result[1]);
|
var num = parseFloat(result[1]);
|
||||||
var mult = this.powers[result[2]] || 1;
|
var mult = this.powers[result[2]] || 1;
|
||||||
return num * mult;
|
return num * mult;
|
||||||
} else {
|
} else {
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
add: function(element, interval, label, fn, times) {
|
add: function(element, interval, label, fn, times) {
|
||||||
var counter = 0;
|
var counter = 0;
|
||||||
|
|
||||||
if (jQuery.isFunction(label)) {
|
if (jQuery.isFunction(label)) {
|
||||||
if (!times)
|
if (!times)
|
||||||
times = fn;
|
times = fn;
|
||||||
fn = label;
|
fn = label;
|
||||||
label = interval;
|
label = interval;
|
||||||
}
|
}
|
||||||
|
|
||||||
interval = jQuery.timer.timeParse(interval);
|
interval = jQuery.timer.timeParse(interval);
|
||||||
|
|
||||||
if (typeof interval != 'number' || isNaN(interval) || interval < 0)
|
if (typeof interval != 'number' || isNaN(interval) || interval < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (typeof times != 'number' || isNaN(times) || times < 0)
|
if (typeof times != 'number' || isNaN(times) || times < 0)
|
||||||
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])
|
if (!timers[label])
|
||||||
timers[label] = {};
|
timers[label] = {};
|
||||||
|
|
||||||
fn.timerID = fn.timerID || this.guid++;
|
fn.timerID = fn.timerID || this.guid++;
|
||||||
|
|
||||||
var handler = function() {
|
var handler = function() {
|
||||||
if ((++counter > times && times !== 0) || fn.call(element, counter) === false)
|
if ((++counter > times && times !== 0) || fn.call(element, counter) === false)
|
||||||
jQuery.timer.remove(element, label, fn);
|
jQuery.timer.remove(element, label, fn);
|
||||||
};
|
};
|
||||||
|
|
||||||
handler.timerID = fn.timerID;
|
handler.timerID = fn.timerID;
|
||||||
|
|
||||||
if (!timers[label][fn.timerID])
|
if (!timers[label][fn.timerID])
|
||||||
timers[label][fn.timerID] = window.setInterval(handler,interval);
|
timers[label][fn.timerID] = window.setInterval(handler,interval);
|
||||||
|
|
||||||
this.global.push( element );
|
this.global.push( element );
|
||||||
|
|
||||||
},
|
},
|
||||||
remove: function(element, label, fn) {
|
remove: function(element, label, fn) {
|
||||||
var timers = jQuery.data(element, this.dataKey), ret;
|
var timers = jQuery.data(element, this.dataKey), ret;
|
||||||
|
|
||||||
if ( timers ) {
|
if ( timers ) {
|
||||||
|
|
||||||
if (!label) {
|
if (!label) {
|
||||||
for ( label in timers )
|
for ( label in timers )
|
||||||
this.remove(element, label, fn);
|
this.remove(element, label, fn);
|
||||||
} else if ( timers[label] ) {
|
} else if ( timers[label] ) {
|
||||||
if ( fn ) {
|
if ( fn ) {
|
||||||
if ( fn.timerID ) {
|
if ( fn.timerID ) {
|
||||||
window.clearInterval(timers[label][fn.timerID]);
|
window.clearInterval(timers[label][fn.timerID]);
|
||||||
delete timers[label][fn.timerID];
|
delete timers[label][fn.timerID];
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for ( var fn in timers[label] ) {
|
for ( var fn in timers[label] ) {
|
||||||
window.clearInterval(timers[label][fn]);
|
window.clearInterval(timers[label][fn]);
|
||||||
delete timers[label][fn];
|
delete timers[label][fn];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( ret in timers[label] ) break;
|
for ( ret in timers[label] ) break;
|
||||||
if ( !ret ) {
|
if ( !ret ) {
|
||||||
ret = null;
|
ret = null;
|
||||||
delete timers[label];
|
delete timers[label];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( ret in timers ) break;
|
for ( ret in timers ) break;
|
||||||
if ( !ret )
|
if ( !ret )
|
||||||
jQuery.removeData(element, this.dataKey);
|
jQuery.removeData(element, this.dataKey);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
jQuery(window).bind("unload", function() {
|
jQuery(window).bind("unload", function() {
|
||||||
jQuery.each(jQuery.timer.global, function(index, item) {
|
jQuery.each(jQuery.timer.global, function(index, item) {
|
||||||
jQuery.timer.remove(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
|
// Fallback on JSONP
|
||||||
return new jXHR();
|
return new jXHR();
|
||||||
}
|
}
|
||||||
// Might be local-domain?
|
// Might be local-domain?
|
||||||
if (window.XMLHttpRequest) {
|
if (window.XMLHttpRequest) {
|
||||||
|
@ -86,12 +86,12 @@ XmlHttp.create = function () {
|
||||||
// some versions of Moz do not support the readyState property
|
// some versions of Moz do not support the readyState property
|
||||||
// and the onreadystate event so we patch it!
|
// and the onreadystate event so we patch it!
|
||||||
if (req.readyState == null) {
|
if (req.readyState == null) {
|
||||||
req.readyState = 1;
|
req.readyState = 1;
|
||||||
req.addEventListener("load", function () {
|
req.addEventListener("load", function () {
|
||||||
req.readyState = 4;
|
req.readyState = 4;
|
||||||
if (typeof req.onreadystatechange == "function")
|
if (typeof req.onreadystatechange == "function")
|
||||||
req.onreadystatechange();
|
req.onreadystatechange();
|
||||||
}, false);
|
}, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
return req;
|
return req;
|
||||||
|
@ -146,12 +146,12 @@ XmlDocument.create = function (name,ns) {
|
||||||
// some versions of Moz do not support the readyState property
|
// some versions of Moz do not support the readyState property
|
||||||
// and the onreadystate event so we patch it!
|
// and the onreadystate event so we patch it!
|
||||||
if (doc.readyState == null) {
|
if (doc.readyState == null) {
|
||||||
doc.readyState = 1;
|
doc.readyState = 1;
|
||||||
doc.addEventListener("load", function () {
|
doc.addEventListener("load", function () {
|
||||||
doc.readyState = 4;
|
doc.readyState = 4;
|
||||||
if (typeof doc.onreadystatechange == "function")
|
if (typeof doc.onreadystatechange == "function")
|
||||||
doc.onreadystatechange();
|
doc.onreadystatechange();
|
||||||
}, false);
|
}, false);
|
||||||
}
|
}
|
||||||
} else if (window.ActiveXObject) {
|
} else if (window.ActiveXObject) {
|
||||||
doc = new ActiveXObject(XmlDocument.getPrefix() + ".DomDocument");
|
doc = new ActiveXObject(XmlDocument.getPrefix() + ".DomDocument");
|
||||||
|
@ -218,14 +218,14 @@ if (typeof(Document) != 'undefined' && window.DOMParser) {
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
Document.prototype.loadXML = function (s) {
|
Document.prototype.loadXML = function (s) {
|
||||||
|
|
||||||
// parse the string to a new doc
|
// parse the string to a new doc
|
||||||
var doc2 = (new DOMParser()).parseFromString(s, "text/xml");
|
var doc2 = (new DOMParser()).parseFromString(s, "text/xml");
|
||||||
|
|
||||||
// remove all initial children
|
// remove all initial children
|
||||||
while (this.hasChildNodes())
|
while (this.hasChildNodes())
|
||||||
this.removeChild(this.lastChild);
|
this.removeChild(this.lastChild);
|
||||||
|
|
||||||
// insert and import nodes
|
// insert and import nodes
|
||||||
for (var i = 0; i < doc2.childNodes.length; i++) {
|
for (var i = 0; i < doc2.childNodes.length; i++) {
|
||||||
this.appendChild(this.importNode(doc2.childNodes[i], true));
|
this.appendChild(this.importNode(doc2.childNodes[i], true));
|
||||||
|
@ -312,7 +312,7 @@ String.prototype.htmlEnc = function() {
|
||||||
String.prototype.revertHtmlEnc = function() {
|
String.prototype.revertHtmlEnc = function() {
|
||||||
if(!this)
|
if(!this)
|
||||||
return this;
|
return this;
|
||||||
|
|
||||||
var str = this.replace(/&/gi,'&');
|
var str = this.replace(/&/gi,'&');
|
||||||
str = str.replace(/</gi,'<');
|
str = str.replace(/</gi,'<');
|
||||||
str = str.replace(/>/gi,'>');
|
str = str.replace(/>/gi,'>');
|
||||||
|
@ -333,7 +333,7 @@ String.prototype.revertHtmlEnc = function() {
|
||||||
Date.jab2date = function(ts) {
|
Date.jab2date = function(ts) {
|
||||||
// Timestamp
|
// Timestamp
|
||||||
if(!isNaN(ts))
|
if(!isNaN(ts))
|
||||||
return new Date(ts * 1000);
|
return new Date(ts * 1000);
|
||||||
|
|
||||||
// Get the UTC date
|
// 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)));
|
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();
|
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}
|
* somewhat opposit to {@link #hrTime}
|
||||||
* expects a javascript Date object as parameter and returns a jabber
|
* expects a javascript Date object as parameter and returns a jabber
|
||||||
* date string conforming to
|
* date string conforming to
|
||||||
|
@ -1195,6 +1205,7 @@ function cnonce(size) {
|
||||||
|
|
||||||
JSJAC_HAVEKEYS = true; // whether to use keys
|
JSJAC_HAVEKEYS = true; // whether to use keys
|
||||||
JSJAC_NKEYS = 16; // number of keys to generate
|
JSJAC_NKEYS = 16; // number of keys to generate
|
||||||
|
|
||||||
JSJAC_INACTIVITY = 300; // qnd hack to make suspend/resume
|
JSJAC_INACTIVITY = 300; // qnd hack to make suspend/resume
|
||||||
// work more smoothly with polling
|
// work more smoothly with polling
|
||||||
JSJAC_ERR_COUNT = 10; // number of retries in case of connection
|
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_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
|
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)
|
JSJAC_RETRYDELAY = 5000; // msecs to wait before trying next
|
||||||
JSJACHBC_MAX_HOLD = 1; // default for number of connections held by
|
// request after error
|
||||||
// connection manager
|
|
||||||
JSJACHBC_MAX_WAIT = 20; // default 'wait' param - how long an idle connection
|
JSJAC_REGID_TIMEOUT = 20000; // time in msec until registered
|
||||||
// should be held by connection manager
|
// 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_BOSH_VERSION = "1.6";
|
||||||
JSJACHBC_USE_BOSH_VER = true;
|
JSJACHBC_USE_BOSH_VER = true;
|
||||||
|
@ -1265,7 +1284,7 @@ JSJaCJSON.toString = function (obj) {
|
||||||
v = x[i];
|
v = x[i];
|
||||||
f = s[typeof v];
|
f = s[typeof v];
|
||||||
if (f) {
|
if (f) {
|
||||||
try {
|
try {
|
||||||
v = f(v);
|
v = f(v);
|
||||||
if (typeof v == 'string') {
|
if (typeof v == 'string') {
|
||||||
if (b) {
|
if (b) {
|
||||||
|
@ -1274,8 +1293,8 @@ JSJaCJSON.toString = function (obj) {
|
||||||
a[a.length] = v;
|
a[a.length] = v;
|
||||||
b = true;
|
b = true;
|
||||||
}
|
}
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
a[a.length] = ']';
|
a[a.length] = ']';
|
||||||
|
@ -1301,7 +1320,7 @@ JSJaCJSON.toString = function (obj) {
|
||||||
v = x[i];
|
v = x[i];
|
||||||
f = s[typeof v];
|
f = s[typeof v];
|
||||||
if (f) {
|
if (f) {
|
||||||
try {
|
try {
|
||||||
v = f(v);
|
v = f(v);
|
||||||
if (typeof v == 'string') {
|
if (typeof v == 'string') {
|
||||||
if (b) {
|
if (b) {
|
||||||
|
@ -1310,8 +1329,8 @@ JSJaCJSON.toString = function (obj) {
|
||||||
a.push(s.string(i), ':', v);
|
a.push(s.string(i), ':', v);
|
||||||
b = true;
|
b = true;
|
||||||
}
|
}
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1517,7 +1536,7 @@ JSJaCJID.prototype.clone = function() {
|
||||||
*/
|
*/
|
||||||
JSJaCJID.prototype.isEntity = function(jid) {
|
JSJaCJID.prototype.isEntity = function(jid) {
|
||||||
if (typeof jid == 'string')
|
if (typeof jid == 'string')
|
||||||
jid = (new JSJaCJID(jid));
|
jid = (new JSJaCJID(jid));
|
||||||
jid.removeResource();
|
jid.removeResource();
|
||||||
return (this.clone().removeResource().toString() === jid.toString());
|
return (this.clone().removeResource().toString() === jid.toString());
|
||||||
};
|
};
|
||||||
|
@ -2263,7 +2282,7 @@ JSJaCIQ.prototype.setQuery = function(xmlns) {
|
||||||
query = this.getDoc().createElementNS(xmlns,'query');
|
query = this.getDoc().createElementNS(xmlns,'query');
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
query = this.getDoc().createElement('query');
|
query = this.getDoc().createElement('query');
|
||||||
query.setAttribute('xmlns',xmlns);
|
query.setAttribute('xmlns',xmlns);
|
||||||
}
|
}
|
||||||
this.getNode().appendChild(query);
|
this.getNode().appendChild(query);
|
||||||
return query;
|
return query;
|
||||||
|
@ -2483,7 +2502,7 @@ function JSJaCError(code,type,condition) {
|
||||||
* @constructor
|
* @constructor
|
||||||
* @param {Function} func The hash function to be used for creating the keys
|
* @param {Function} func The hash function to be used for creating the keys
|
||||||
* @param {Debugger} oDbg Reference to debugger implementation [optional]
|
* @param {Debugger} oDbg Reference to debugger implementation [optional]
|
||||||
*/
|
*/
|
||||||
function JSJaCKeys(func,oDbg) {
|
function JSJaCKeys(func,oDbg) {
|
||||||
var seed = Math.random();
|
var seed = Math.random();
|
||||||
|
|
||||||
|
@ -2965,9 +2984,9 @@ JSJaCConnection.prototype.resumeFromData = function(data) {
|
||||||
this._handleEvent('onresume');
|
this._handleEvent('onresume');
|
||||||
setTimeout(JSJaC.bind(this._resume, this),this.getPollInterval());
|
setTimeout(JSJaC.bind(this._resume, this),this.getPollInterval());
|
||||||
this._interval = setInterval(JSJaC.bind(this._checkQueue, this),
|
this._interval = setInterval(JSJaC.bind(this._checkQueue, this),
|
||||||
JSJAC_CHECKQUEUEINTERVAL);
|
JSJAC_CHECKQUEUEINTERVAL);
|
||||||
this._inQto = setInterval(JSJaC.bind(this._checkInQ, this),
|
this._inQto = setInterval(JSJaC.bind(this._checkInQ, this),
|
||||||
JSJAC_CHECKINQUEUEINTERVAL);
|
JSJAC_CHECKINQUEUEINTERVAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (this._connected === true);
|
return (this._connected === true);
|
||||||
|
@ -3009,7 +3028,7 @@ JSJaCConnection.prototype.send = function(packet,cb,arg) {
|
||||||
|
|
||||||
// remember id for response if callback present
|
// remember id for response if callback present
|
||||||
if (cb)
|
if (cb)
|
||||||
this._registerPID(packet.getID(),cb,arg);
|
this._registerPID(packet, cb, arg);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
this._handleEvent(packet.pType()+'_out', packet);
|
this._handleEvent(packet.pType()+'_out', packet);
|
||||||
|
@ -3063,7 +3082,7 @@ JSJaCConnection.prototype.sendIQ = function(iq, handlers, arg) {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets polling interval for this connection
|
* 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
|
* @return effective interval this connection has been set to
|
||||||
* @type int
|
* @type int
|
||||||
*/
|
*/
|
||||||
|
@ -3502,6 +3521,11 @@ JSJaCConnection.prototype._doXMPPSess = function(iq) {
|
||||||
this.fulljid = iq.getChildVal("jid");
|
this.fulljid = iq.getChildVal("jid");
|
||||||
this.jid = this.fulljid.substring(0,this.fulljid.lastIndexOf('/'));
|
this.jid = this.fulljid.substring(0,this.fulljid.lastIndexOf('/'));
|
||||||
|
|
||||||
|
if (!this.legacy_sessions) {
|
||||||
|
this._handleEvent('onconnect');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
iq = new JSJaCIQ();
|
iq = new JSJaCIQ();
|
||||||
iq.setIQ(null,'set','sess_1');
|
iq.setIQ(null,'set','sess_1');
|
||||||
iq.appendNode("session", {xmlns: "urn:ietf:params:xml:ns:xmpp-session"},
|
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) {
|
||||||
if (arg.pType) { // it's a packet
|
if (arg.pType) { // it's a packet
|
||||||
if ((!arg.getNode().hasChildNodes() && aEvent.childName != '*') ||
|
if ((!arg.getNode().hasChildNodes() && aEvent.childName != '*') ||
|
||||||
(arg.getNode().hasChildNodes() &&
|
(arg.getNode().hasChildNodes() &&
|
||||||
!arg.getChild(aEvent.childName, aEvent.childNS)))
|
!arg.getChild(aEvent.childName, aEvent.childNS)))
|
||||||
continue;
|
continue;
|
||||||
if (aEvent.type != '*' &&
|
if (aEvent.type != '*' &&
|
||||||
arg.getType() != aEvent.type)
|
arg.getType() != aEvent.type)
|
||||||
|
@ -3573,29 +3597,39 @@ JSJaCConnection.prototype._handleEvent = function(event,arg) {
|
||||||
/**
|
/**
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
JSJaCConnection.prototype._handlePID = function(aJSJaCPacket) {
|
JSJaCConnection.prototype._handlePID = function(packet) {
|
||||||
if (!aJSJaCPacket.getID())
|
if (!packet.getID())
|
||||||
return false;
|
return false;
|
||||||
for (var i in this._regIDs) {
|
|
||||||
if (this._regIDs.hasOwnProperty(i) &&
|
if (packet.pType() != 'iq' ||
|
||||||
this._regIDs[i] && i == aJSJaCPacket.getID()) {
|
(packet.getType() != 'error' && packet.getType() != 'result'))
|
||||||
var pID = aJSJaCPacket.getID();
|
return false;
|
||||||
this.oDbg.log("handling "+pID,3);
|
|
||||||
try {
|
var jid = packet.getFrom() || this.jid;
|
||||||
if (this._regIDs[i].cb.call(this, aJSJaCPacket, this._regIDs[i].arg) === false) {
|
|
||||||
// don't unregister
|
if (packet.getFrom() == this.domain)
|
||||||
return false;
|
jid = this.jid;
|
||||||
} else {
|
|
||||||
this._unregisterPID(pID);
|
var id = packet.getID();
|
||||||
return true;
|
if (this._regIDs[jid] && this._regIDs[jid][id]) {
|
||||||
}
|
try {
|
||||||
} catch (e) {
|
this.oDbg.log("handling id "+id,3);
|
||||||
// broken handler?
|
var reg = this._regIDs[jid][id];
|
||||||
this.oDbg.log(e.name+": "+ e.message, 1);
|
if (reg.cb.call(this, packet, reg.arg) === false) {
|
||||||
this._unregisterPID(pID);
|
// don't unregister
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
delete this._regIDs[jid][id];
|
||||||
return true;
|
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;
|
return false;
|
||||||
};
|
};
|
||||||
|
@ -3686,6 +3720,12 @@ JSJaCConnection.prototype._parseStreamFeatures = function(doc) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get legacy session capability if available
|
||||||
|
this.legacy_sessions=null;
|
||||||
|
if (doc.getElementsByTagName("session")[0]) {
|
||||||
|
this.legacy_sessions=true;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
@ -3784,20 +3824,69 @@ JSJaCConnection.prototype._process = function(timerval) {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
* @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) {
|
JSJaCConnection.prototype._registerPID = function(packet, cb, arg) {
|
||||||
if (!pID || !cb)
|
this.oDbg.log("registering id for packet "+packet.xml(), 3);
|
||||||
|
var id = packet.getID();
|
||||||
|
if (!id) {
|
||||||
|
this.oDbg.log("id missing", 1);
|
||||||
return false;
|
return false;
|
||||||
this._regIDs[pID] = new Object();
|
}
|
||||||
this._regIDs[pID].cb = cb;
|
|
||||||
if (arg)
|
if (typeof cb != 'function') {
|
||||||
this._regIDs[pID].arg = arg;
|
this.oDbg.log("callback is not a function", 1);
|
||||||
this.oDbg.log("registered "+pID,3);
|
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;
|
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
|
* @private
|
||||||
*/
|
*/
|
||||||
JSJaCConnection.prototype._prepSendEmpty = function(cb, ctx) {
|
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
|
* @fileoverview All stuff related to HTTP Binding
|
||||||
|
@ -4240,18 +4318,18 @@ JSJaCHttpBindingConnection.prototype._parseResponse = function(req) {
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.oDbg.log("XMLHttpRequest error: status not available", 1);
|
this.oDbg.log("XMLHttpRequest error: status not available", 1);
|
||||||
this._errcnt++;
|
this._errcnt++;
|
||||||
if (this._errcnt > JSJAC_ERR_COUNT) {
|
if (this._errcnt > JSJAC_ERR_COUNT) {
|
||||||
// abort
|
// abort
|
||||||
this._abort();
|
this._abort();
|
||||||
} else {
|
} else {
|
||||||
if (this.connected()) {
|
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
|
// schedule next tick
|
||||||
setTimeout(JSJaC.bind(this._resume, this),
|
setTimeout(JSJaC.bind(this._resume, this),
|
||||||
this.getPollInterval());
|
this.getPollInterval());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4260,7 +4338,7 @@ JSJaCHttpBindingConnection.prototype._parseResponse = function(req) {
|
||||||
|
|
||||||
var body = r.responseXML.documentElement;
|
var body = r.responseXML.documentElement;
|
||||||
if (!body || body.tagName != 'body' ||
|
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);
|
this.oDbg.log("invalid response:\n" + r.responseText,1);
|
||||||
|
|
||||||
clearTimeout(this._timeout); // remove timer
|
clearTimeout(this._timeout); // remove timer
|
||||||
|
@ -4273,7 +4351,7 @@ JSJaCHttpBindingConnection.prototype._parseResponse = function(req) {
|
||||||
|
|
||||||
this._setStatus('internal_server_error');
|
this._setStatus('internal_server_error');
|
||||||
this._handleEvent('onerror',
|
this._handleEvent('onerror',
|
||||||
JSJaCError('500','wait','internal-server-error'));
|
JSJaCError('500','wait','internal-server-error'));
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -4841,7 +4919,7 @@ JSJaCWebSocketConnection.prototype.send = function(packet, cb, arg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// register callback with id
|
// register callback with id
|
||||||
this._registerPID(packet.getID(), cb, arg);
|
this._registerPID(packet, cb, arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -5,112 +5,112 @@
|
||||||
// for http://www.iadvize.com
|
// for http://www.iadvize.com
|
||||||
|
|
||||||
(function(global){
|
(function(global){
|
||||||
var SETTIMEOUT = global.setTimeout, // for better compression
|
var SETTIMEOUT = global.setTimeout, // for better compression
|
||||||
doc = global.document,
|
doc = global.document,
|
||||||
callback_counter = 0;
|
callback_counter = 0;
|
||||||
|
|
||||||
global.jXHR = function() {
|
global.jXHR = function() {
|
||||||
var script_url,
|
var script_url,
|
||||||
script_loaded,
|
script_loaded,
|
||||||
jsonp_callback,
|
jsonp_callback,
|
||||||
scriptElem,
|
scriptElem,
|
||||||
publicAPI = null;
|
publicAPI = null;
|
||||||
|
|
||||||
function removeScript() { try { scriptElem.parentNode.removeChild(scriptElem); } catch (err) { } }
|
function removeScript() { try { scriptElem.parentNode.removeChild(scriptElem); } catch (err) { } }
|
||||||
|
|
||||||
function reset() {
|
function reset() {
|
||||||
script_loaded = false;
|
script_loaded = false;
|
||||||
script_url = "";
|
script_url = "";
|
||||||
removeScript();
|
removeScript();
|
||||||
scriptElem = null;
|
scriptElem = null;
|
||||||
fireReadyStateChange(0);
|
fireReadyStateChange(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
function ThrowError(msg) {
|
function ThrowError(msg) {
|
||||||
try {
|
try {
|
||||||
publicAPI.onerror.call(publicAPI,msg,script_url);
|
publicAPI.onerror.call(publicAPI,msg,script_url);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
//throw new Error(msg);
|
//throw new Error(msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleScriptLoad() {
|
function handleScriptLoad() {
|
||||||
if ((this.readyState && this.readyState!=="complete" && this.readyState!=="loaded") || script_loaded) { return; }
|
if ((this.readyState && this.readyState!=="complete" && this.readyState!=="loaded") || script_loaded) { return; }
|
||||||
this.onload = this.onreadystatechange = null; // prevent memory leak
|
this.onload = this.onreadystatechange = null; // prevent memory leak
|
||||||
script_loaded = true;
|
script_loaded = true;
|
||||||
if (publicAPI.readyState !== 4) ThrowError("handleScriptLoad: Script failed to load ["+script_url+"].");
|
if (publicAPI.readyState !== 4) ThrowError("handleScriptLoad: Script failed to load ["+script_url+"].");
|
||||||
removeScript();
|
removeScript();
|
||||||
}
|
}
|
||||||
|
|
||||||
function parseXMLString(xmlStr) {
|
function parseXMLString(xmlStr) {
|
||||||
var xmlDoc = null;
|
var xmlDoc = null;
|
||||||
if(window.DOMParser) {
|
if(window.DOMParser) {
|
||||||
var parser = new DOMParser();
|
var parser = new DOMParser();
|
||||||
xmlDoc = parser.parseFromString(xmlStr,"text/xml");
|
xmlDoc = parser.parseFromString(xmlStr,"text/xml");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
|
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
|
||||||
xmlDoc.async="false";
|
xmlDoc.async="false";
|
||||||
xmlDoc.loadXML(xmlStr);
|
xmlDoc.loadXML(xmlStr);
|
||||||
}
|
}
|
||||||
return xmlDoc;
|
return xmlDoc;
|
||||||
}
|
}
|
||||||
|
|
||||||
function fireReadyStateChange(rs,args) {
|
function fireReadyStateChange(rs,args) {
|
||||||
|
|
||||||
args = args || [];
|
args = args || [];
|
||||||
publicAPI.readyState = rs;
|
publicAPI.readyState = rs;
|
||||||
if (rs == 4) {
|
if (rs == 4) {
|
||||||
publicAPI.responseText = args[0].reply;
|
publicAPI.responseText = args[0].reply;
|
||||||
publicAPI.responseXML = parseXMLString(args[0].reply);
|
publicAPI.responseXML = parseXMLString(args[0].reply);
|
||||||
}
|
}
|
||||||
if (typeof publicAPI.onreadystatechange === "function") publicAPI.onreadystatechange.apply(publicAPI,args);
|
if (typeof publicAPI.onreadystatechange === "function") publicAPI.onreadystatechange.apply(publicAPI,args);
|
||||||
}
|
}
|
||||||
|
|
||||||
publicAPI = {
|
publicAPI = {
|
||||||
onerror:null,
|
onerror:null,
|
||||||
onreadystatechange:null,
|
onreadystatechange:null,
|
||||||
readyState:0,
|
readyState:0,
|
||||||
status:200,
|
status:200,
|
||||||
responseBody: null,
|
responseBody: null,
|
||||||
responseText: null,
|
responseText: null,
|
||||||
responseXML: null,
|
responseXML: null,
|
||||||
open:function(method,url){
|
open:function(method,url){
|
||||||
reset();
|
reset();
|
||||||
var internal_callback = "cb"+(callback_counter++);
|
var internal_callback = "cb"+(callback_counter++);
|
||||||
(function(icb){
|
(function(icb){
|
||||||
global.jXHR[icb] = function() {
|
global.jXHR[icb] = function() {
|
||||||
try { fireReadyStateChange.call(publicAPI,4,arguments); }
|
try { fireReadyStateChange.call(publicAPI,4,arguments); }
|
||||||
catch(err) {
|
catch(err) {
|
||||||
publicAPI.readyState = -1;
|
publicAPI.readyState = -1;
|
||||||
ThrowError("Script failed to run ["+script_url+"].");
|
ThrowError("Script failed to run ["+script_url+"].");
|
||||||
}
|
}
|
||||||
global.jXHR[icb] = null;
|
global.jXHR[icb] = null;
|
||||||
};
|
};
|
||||||
})(internal_callback);
|
})(internal_callback);
|
||||||
script_url = url + '?callback=?jXHR&data=';
|
script_url = url + '?callback=?jXHR&data=';
|
||||||
script_url = script_url.replace(/=\?jXHR/,"=jXHR."+internal_callback);
|
script_url = script_url.replace(/=\?jXHR/,"=jXHR."+internal_callback);
|
||||||
fireReadyStateChange(1);
|
fireReadyStateChange(1);
|
||||||
},
|
},
|
||||||
send:function(data){
|
send:function(data){
|
||||||
script_url = script_url + encodeURIComponent(data);
|
script_url = script_url + encodeURIComponent(data);
|
||||||
SETTIMEOUT(function(){
|
SETTIMEOUT(function(){
|
||||||
scriptElem = doc.createElement("script");
|
scriptElem = doc.createElement("script");
|
||||||
scriptElem.setAttribute("type","text/javascript");
|
scriptElem.setAttribute("type","text/javascript");
|
||||||
scriptElem.onload = scriptElem.onreadystatechange = function(){handleScriptLoad.call(scriptElem);};
|
scriptElem.onload = scriptElem.onreadystatechange = function(){handleScriptLoad.call(scriptElem);};
|
||||||
scriptElem.setAttribute("src",script_url);
|
scriptElem.setAttribute("src",script_url);
|
||||||
doc.getElementsByTagName("head")[0].appendChild(scriptElem);
|
doc.getElementsByTagName("head")[0].appendChild(scriptElem);
|
||||||
},0);
|
},0);
|
||||||
fireReadyStateChange(2);
|
fireReadyStateChange(2);
|
||||||
},
|
},
|
||||||
abort:function(){},
|
abort:function(){},
|
||||||
setRequestHeader:function(){}, // noop
|
setRequestHeader:function(){}, // noop
|
||||||
getResponseHeader:function(){return "";}, // basically noop
|
getResponseHeader:function(){return "";}, // basically noop
|
||||||
getAllResponseHeaders:function(){return [];} // ditto
|
getAllResponseHeaders:function(){return [];} // ditto
|
||||||
};
|
};
|
||||||
|
|
||||||
reset();
|
reset();
|
||||||
|
|
||||||
return publicAPI;
|
return publicAPI;
|
||||||
};
|
};
|
||||||
})(window);
|
})(window);
|
||||||
|
|
|
@ -38,7 +38,7 @@ var MAM = (function () {
|
||||||
self.msg_queue = {};
|
self.msg_queue = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the MAM configuration
|
* Gets the MAM configuration
|
||||||
* @public
|
* @public
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
|
@ -210,7 +210,7 @@ var MAM = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles the MAM configuration
|
* Handles the MAM configuration
|
||||||
* @public
|
* @public
|
||||||
* @param {object} iq
|
* @param {object} iq
|
||||||
|
|
|
@ -20,7 +20,7 @@ var Me = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Opens the Me tools
|
* Opens the Me tools
|
||||||
* @public
|
* @public
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
|
|
|
@ -20,7 +20,7 @@ var Message = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles the incoming message packets
|
* Handles the incoming message packets
|
||||||
* @public
|
* @public
|
||||||
* @param {object} message
|
* @param {object} message
|
||||||
|
@ -392,8 +392,9 @@ var Message = (function () {
|
||||||
var html_escape = true;
|
var html_escape = true;
|
||||||
|
|
||||||
// IE bug fix
|
// IE bug fix
|
||||||
if((BrowserDetect.browser == 'Explorer') && (BrowserDetect.version < 9))
|
if((BrowserDetect.browser == 'Explorer') && (BrowserDetect.version < 9)) {
|
||||||
xHTML = 0;
|
xHTML = 0;
|
||||||
|
}
|
||||||
|
|
||||||
//If this is a xHTML message
|
//If this is a xHTML message
|
||||||
if(xHTML) {
|
if(xHTML) {
|
||||||
|
@ -411,12 +412,14 @@ var Message = (function () {
|
||||||
var message_type = 'user-message';
|
var message_type = 'user-message';
|
||||||
|
|
||||||
// This is an old message
|
// This is an old message
|
||||||
if(delay && resource)
|
if(delay && resource) {
|
||||||
message_type = 'old-message';
|
message_type = 'old-message';
|
||||||
|
}
|
||||||
|
|
||||||
// This is a system message
|
// This is a system message
|
||||||
else if(!resource)
|
else if(!resource) {
|
||||||
message_type = 'system-message';
|
message_type = 'system-message';
|
||||||
|
}
|
||||||
|
|
||||||
var nickQuote = '';
|
var nickQuote = '';
|
||||||
|
|
||||||
|
@ -442,8 +445,9 @@ var Message = (function () {
|
||||||
Interface.messageNotify(hash, 'unread');
|
Interface.messageNotify(hash, 'unread');
|
||||||
|
|
||||||
// Play sound to all users in the MUC, except user who sent the message.
|
// Play sound to all users in the MUC, except user who sent the message.
|
||||||
if(myNick != resource)
|
if(myNick != resource) {
|
||||||
Audio.play('receive-message');
|
Audio.play('receive-message');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -462,10 +466,11 @@ var Message = (function () {
|
||||||
Receipts.sendReceived(type, from, id);
|
Receipts.sendReceived(type, from, id);
|
||||||
|
|
||||||
// It does not come from a groupchat user, get the full name
|
// It does not come from a groupchat user, get the full name
|
||||||
if(!GCUser)
|
if(!GCUser) {
|
||||||
fromName = Name.getBuddy(xid);
|
fromName = Name.getBuddy(xid);
|
||||||
else
|
} else {
|
||||||
chatType = 'private';
|
chatType = 'private';
|
||||||
|
}
|
||||||
|
|
||||||
// If the chat isn't yet opened, open it !
|
// If the chat isn't yet opened, open it !
|
||||||
if(!Common.exists('#' + hash)) {
|
if(!Common.exists('#' + hash)) {
|
||||||
|
|
|
@ -18,9 +18,9 @@ var Microblog = (function () {
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Completes arrays of an entry's attached files
|
* Completes arrays of an entry's attached files
|
||||||
* @public
|
* @public
|
||||||
* @param {string} selector
|
* @param {string} selector
|
||||||
|
@ -515,7 +515,7 @@ var Microblog = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets a given microblog comments node
|
* Gets a given microblog comments node
|
||||||
* @public
|
* @public
|
||||||
* @param {string} server
|
* @param {string} server
|
||||||
|
@ -930,7 +930,7 @@ var Microblog = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adapts the comment elements width
|
* Adapts the comment elements width
|
||||||
* @public
|
* @public
|
||||||
* @param {string} id
|
* @param {string} id
|
||||||
|
@ -1085,7 +1085,7 @@ var Microblog = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles the user's microblog to create it in case of error
|
* Handles the user's microblog to create it in case of error
|
||||||
* @public
|
* @public
|
||||||
* @param {object} iq
|
* @param {object} iq
|
||||||
|
@ -1199,7 +1199,7 @@ var Microblog = (function () {
|
||||||
// Create a new individual channel
|
// Create a new individual channel
|
||||||
$('#channel .content.mixed').after(
|
$('#channel .content.mixed').after(
|
||||||
'<div class="content individual microblog-' + hash + '">' +
|
'<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>'
|
'</div>'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1283,7 +1283,7 @@ var Microblog = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the microblog configuration
|
* Gets the microblog configuration
|
||||||
* @public
|
* @public
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
|
@ -1455,7 +1455,7 @@ var Microblog = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Publishes a given microblog item
|
* Publishes a given microblog item
|
||||||
* @public
|
* @public
|
||||||
* @param {type} body
|
* @param {type} body
|
||||||
|
|
|
@ -11,39 +11,39 @@ Authors: Valérian Saliou, hunterjm, Camaran, regilero, Kloadut, Maranda
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Jappix Mini globals
|
// Jappix Mini globals
|
||||||
var MINI_DISCONNECT = false;
|
var MINI_DISCONNECT = false;
|
||||||
var MINI_AUTOCONNECT = false;
|
var MINI_AUTOCONNECT = false;
|
||||||
var MINI_SHOWPANE = false;
|
var MINI_SHOWPANE = false;
|
||||||
var MINI_INITIALIZED = false;
|
var MINI_INITIALIZED = false;
|
||||||
var MINI_ROSTER_INIT = false;
|
var MINI_ROSTER_INIT = false;
|
||||||
var MINI_ROSTER_NOGROUP = 'jm_nogroup';
|
var MINI_ROSTER_NOGROUP = 'jm_nogroup';
|
||||||
var MINI_ANONYMOUS = false;
|
var MINI_ANONYMOUS = false;
|
||||||
var MINI_ANIMATE = false;
|
var MINI_ANIMATE = false;
|
||||||
var MINI_RANDNICK = false;
|
var MINI_RANDNICK = false;
|
||||||
var MINI_GROUPCHAT_PRESENCE = false;
|
var MINI_GROUPCHAT_PRESENCE = false;
|
||||||
var MINI_DISABLE_MOBILE = false;
|
var MINI_DISABLE_MOBILE = false;
|
||||||
var MINI_NICKNAME = '';
|
var MINI_NICKNAME = '';
|
||||||
var MINI_TITLE = null;
|
var MINI_TITLE = null;
|
||||||
var MINI_DOMAIN = null;
|
var MINI_DOMAIN = null;
|
||||||
var MINI_USER = null;
|
var MINI_USER = null;
|
||||||
var MINI_PASSWORD = null;
|
var MINI_PASSWORD = null;
|
||||||
var MINI_HASH = null;
|
var MINI_HASH = null;
|
||||||
var MINI_ACTIVE = null;
|
var MINI_ACTIVE = null;
|
||||||
var MINI_RECONNECT = 0;
|
var MINI_RECONNECT = 0;
|
||||||
var MINI_RECONNECT_MAX = 100;
|
var MINI_RECONNECT_MAX = 100;
|
||||||
var MINI_RECONNECT_INTERVAL = 1;
|
var MINI_RECONNECT_INTERVAL = 1;
|
||||||
var MINI_PIXEL_STREAM_DURATION = 300;
|
var MINI_PIXEL_STREAM_DURATION = 300;
|
||||||
var MINI_PIXEL_STREAM_INTERVAL = 7200;
|
var MINI_PIXEL_STREAM_INTERVAL = 7200;
|
||||||
var MINI_QUEUE = [];
|
var MINI_QUEUE = [];
|
||||||
var MINI_CHATS = [];
|
var MINI_CHATS = [];
|
||||||
var MINI_GROUPCHATS = [];
|
var MINI_GROUPCHATS = [];
|
||||||
var MINI_SUGGEST_CHATS = [];
|
var MINI_SUGGEST_CHATS = [];
|
||||||
var MINI_SUGGEST_GROUPCHATS = [];
|
var MINI_SUGGEST_GROUPCHATS = [];
|
||||||
var MINI_SUGGEST_PASSWORDS = [];
|
var MINI_SUGGEST_PASSWORDS = [];
|
||||||
var MINI_PASSWORDS = [];
|
var MINI_PASSWORDS = [];
|
||||||
var MINI_PRIORITY = 1;
|
var MINI_PRIORITY = 1;
|
||||||
var MINI_RESOURCE = JAPPIX_RESOURCE + ' Mini';
|
var MINI_RESOURCE = JAPPIX_RESOURCE + ' Mini';
|
||||||
var MINI_ERROR_LINK = 'https://mini.jappix.com/issues';
|
var MINI_ERROR_LINK = 'https://mini.jappix.com/issues';
|
||||||
|
|
||||||
|
|
||||||
// Bundle
|
// Bundle
|
||||||
|
@ -56,7 +56,7 @@ var JappixMini = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Setups connection handlers
|
* Setups connection handlers
|
||||||
* @public
|
* @public
|
||||||
* @param {object} con
|
* @param {object} con
|
||||||
|
@ -298,7 +298,7 @@ var JappixMini = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Flushes Jappix Mini storage database
|
* Flushes Jappix Mini storage database
|
||||||
* @public
|
* @public
|
||||||
* @param {string} r_override
|
* @param {string} r_override
|
||||||
|
@ -604,7 +604,7 @@ var JappixMini = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles the incoming IQs
|
* Handles the incoming IQs
|
||||||
* @public
|
* @public
|
||||||
* @param {object} iq
|
* @param {object} iq
|
||||||
|
@ -843,7 +843,7 @@ var JappixMini = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes a given presence resource for an user
|
* Removes a given presence resource for an user
|
||||||
* @public
|
* @public
|
||||||
* @param {string} xid
|
* @param {string} xid
|
||||||
|
@ -1174,7 +1174,7 @@ var JappixMini = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates the user presence
|
* Updates the user presence
|
||||||
* @public
|
* @public
|
||||||
* @param {string} type
|
* @param {string} type
|
||||||
|
@ -1371,7 +1371,7 @@ var JappixMini = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unserializes and update the queue storage
|
* Unserializes and update the queue storage
|
||||||
* @public
|
* @public
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
|
@ -1526,7 +1526,7 @@ var JappixMini = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clears the notifications
|
* Clears the notifications
|
||||||
* @public
|
* @public
|
||||||
* @param {string} hash
|
* @param {string} hash
|
||||||
|
@ -2431,7 +2431,7 @@ var JappixMini = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Buddy events
|
* Buddy events
|
||||||
* @public
|
* @public
|
||||||
* @param {string} path
|
* @param {string} path
|
||||||
|
@ -2745,7 +2745,7 @@ var JappixMini = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the prompt value
|
* Returns the prompt value
|
||||||
* @public
|
* @public
|
||||||
* @return {string}
|
* @return {string}
|
||||||
|
@ -3159,7 +3159,7 @@ var JappixMini = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Shows the roster
|
* Shows the roster
|
||||||
* @public
|
* @public
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
|
@ -3363,7 +3363,7 @@ var JappixMini = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Displays a roster buddy
|
* Displays a roster buddy
|
||||||
* @public
|
* @public
|
||||||
* @param {string} xid
|
* @param {string} xid
|
||||||
|
@ -3654,7 +3654,7 @@ var JappixMini = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adapts the roster height to the window
|
* Adapts the roster height to the window
|
||||||
* @public
|
* @public
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
|
@ -3861,7 +3861,7 @@ var JappixMini = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds the chatstate events
|
* Adds the chatstate events
|
||||||
* @public
|
* @public
|
||||||
* @param {string} xid
|
* @param {string} xid
|
||||||
|
|
|
@ -20,7 +20,7 @@ var Mobile = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Proceeds connection
|
* Proceeds connection
|
||||||
* @public
|
* @public
|
||||||
* @param {object} aForm
|
* @param {object} aForm
|
||||||
|
@ -207,7 +207,7 @@ var Mobile = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Resets DOM to its initial state
|
* Resets DOM to its initial state
|
||||||
* @public
|
* @public
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
|
@ -286,7 +286,7 @@ var Mobile = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles message stanza
|
* Handles message stanza
|
||||||
* @public
|
* @public
|
||||||
* @param {object} msg
|
* @param {object} msg
|
||||||
|
@ -504,7 +504,7 @@ var Mobile = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles disconnected state
|
* Handles disconnected state
|
||||||
* @public
|
* @public
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
|
@ -664,7 +664,7 @@ var Mobile = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets user nick (the dumb way)
|
* Gets user nick (the dumb way)
|
||||||
* @public
|
* @public
|
||||||
* @param {string} xid
|
* @param {string} xid
|
||||||
|
@ -770,7 +770,7 @@ var Mobile = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the host part of a XID
|
* Gets the host part of a XID
|
||||||
* @public
|
* @public
|
||||||
* @param {string} aXID
|
* @param {string} aXID
|
||||||
|
@ -899,7 +899,7 @@ var Mobile = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates given chat
|
* Creates given chat
|
||||||
* @public
|
* @public
|
||||||
* @param {string} xid
|
* @param {string} xid
|
||||||
|
|
|
@ -20,7 +20,7 @@ var MUCAdmin = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Opens the MUC admin popup
|
* Opens the MUC admin popup
|
||||||
* @public
|
* @public
|
||||||
* @param {string} xid
|
* @param {string} xid
|
||||||
|
@ -251,7 +251,7 @@ var MUCAdmin = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles the MUC admin form
|
* Handles the MUC admin form
|
||||||
* @public
|
* @public
|
||||||
* @param {object} iq
|
* @param {object} iq
|
||||||
|
@ -449,7 +449,7 @@ var MUCAdmin = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Destroys a MUC room
|
* Destroys a MUC room
|
||||||
* @public
|
* @public
|
||||||
* @param {string} xid
|
* @param {string} xid
|
||||||
|
|
|
@ -20,7 +20,7 @@ var Music = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Opens the music bubble
|
* Opens the music bubble
|
||||||
* @public
|
* @public
|
||||||
* @return {boolean}
|
* @return {boolean}
|
||||||
|
@ -281,7 +281,7 @@ var Music = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a music title to the results
|
* Adds a music title to the results
|
||||||
* @public
|
* @public
|
||||||
* @param {string} id
|
* @param {string} id
|
||||||
|
|
|
@ -20,7 +20,7 @@ var Name = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets an user name for buddy add tool
|
* Gets an user name for buddy add tool
|
||||||
* @public
|
* @public
|
||||||
* @param {string} xid
|
* @param {string} xid
|
||||||
|
@ -181,7 +181,7 @@ var Name = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the full name of the user
|
* Gets the full name of the user
|
||||||
* @public
|
* @public
|
||||||
* @return {string}
|
* @return {string}
|
||||||
|
|
|
@ -20,7 +20,7 @@ var Notification = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Resets the notifications alert if no one remaining
|
* Resets the notifications alert if no one remaining
|
||||||
* @public
|
* @public
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
|
@ -405,7 +405,7 @@ var Notification = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the pending social notifications
|
* Gets the pending social notifications
|
||||||
* @public
|
* @public
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
|
@ -588,7 +588,7 @@ var Notification = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adapt the notifications bubble max-height
|
* Adapt the notifications bubble max-height
|
||||||
* @public
|
* @public
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
|
|
|
@ -20,7 +20,7 @@ var OOB = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sends an OOB request to someone
|
* Sends an OOB request to someone
|
||||||
* @public
|
* @public
|
||||||
* @param {string} to
|
* @param {string} to
|
||||||
|
|
|
@ -20,7 +20,7 @@ var Options = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Opens the options popup
|
* Opens the options popup
|
||||||
* @public
|
* @public
|
||||||
* @return {boolean}
|
* @return {boolean}
|
||||||
|
@ -315,7 +315,7 @@ var Options = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sends the options to the XMPP server
|
* Sends the options to the XMPP server
|
||||||
* @public
|
* @public
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
|
@ -559,7 +559,7 @@ var Options = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles the account deletion request
|
* Handles the account deletion request
|
||||||
* @public
|
* @public
|
||||||
* @param {object} iq
|
* @param {object} iq
|
||||||
|
@ -747,7 +747,7 @@ var Options = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads the user options
|
* Loads the user options
|
||||||
* @public
|
* @public
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
|
|
|
@ -20,7 +20,7 @@ var PEP = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stores the PEP items
|
* Stores the PEP items
|
||||||
* @public
|
* @public
|
||||||
* @param {string} xid
|
* @param {string} xid
|
||||||
|
@ -549,7 +549,7 @@ var PEP = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sends the user's activity
|
* Sends the user's activity
|
||||||
* @public
|
* @public
|
||||||
* @param {string} main
|
* @param {string} main
|
||||||
|
@ -777,7 +777,7 @@ var PEP = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Geolocates the user
|
* Geolocates the user
|
||||||
* @public
|
* @public
|
||||||
* @return {undefined}
|
* @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
|
* @public
|
||||||
* @return {undefined}
|
* @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
|
* @public
|
||||||
* @param {object} iq
|
* @param {object} iq
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
|
|
|
@ -20,7 +20,7 @@ var Popup = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a popup code
|
* Creates a popup code
|
||||||
* @public
|
* @public
|
||||||
* @param {string} id
|
* @param {string} id
|
||||||
|
|
|
@ -25,7 +25,7 @@ var Presence = (function () {
|
||||||
self.auto_idle = false;
|
self.auto_idle = false;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sends the user first presence
|
* Sends the user first presence
|
||||||
* @public
|
* @public
|
||||||
* @param {string} checksum
|
* @param {string} checksum
|
||||||
|
@ -753,7 +753,7 @@ var Presence = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Process the chat presence position
|
* Process the chat presence position
|
||||||
* @public
|
* @public
|
||||||
* @param {string} hash
|
* @param {string} hash
|
||||||
|
@ -997,7 +997,7 @@ var Presence = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the highest presence priority XID for an user
|
* Returns the highest presence priority XID for an user
|
||||||
* @public
|
* @public
|
||||||
* @param {string} xid
|
* @param {string} xid
|
||||||
|
@ -1130,7 +1130,7 @@ var Presence = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Makes something easy to process for the presence IA
|
* Makes something easy to process for the presence IA
|
||||||
* @public
|
* @public
|
||||||
* @param {string} xid
|
* @param {string} xid
|
||||||
|
@ -1356,7 +1356,7 @@ var Presence = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Accepts the subscription from another entity
|
* Accepts the subscription from another entity
|
||||||
* @public
|
* @public
|
||||||
* @param {string} xid
|
* @param {string} xid
|
||||||
|
@ -1526,7 +1526,7 @@ var Presence = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the user presence show
|
* Gets the user presence show
|
||||||
* @public
|
* @public
|
||||||
* @return {string}
|
* @return {string}
|
||||||
|
|
|
@ -20,7 +20,7 @@ var Privacy = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Opens the privacy popup
|
* Opens the privacy popup
|
||||||
* @public
|
* @public
|
||||||
* @return {boolean}
|
* @return {boolean}
|
||||||
|
@ -243,7 +243,7 @@ var Privacy = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets privacy lists
|
* Gets privacy lists
|
||||||
* @public
|
* @public
|
||||||
* @param {object} list
|
* @param {object} list
|
||||||
|
@ -536,7 +536,7 @@ var Privacy = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks the privacy status (action) of a value
|
* Checks the privacy status (action) of a value
|
||||||
* @public
|
* @public
|
||||||
* @param {string} list
|
* @param {string} list
|
||||||
|
@ -844,7 +844,7 @@ var Privacy = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clears the privacy list form
|
* Clears the privacy list form
|
||||||
* @public
|
* @public
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
|
|
|
@ -20,7 +20,7 @@ var Receipts = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if we can send a receipt request
|
* Checks if we can send a receipt request
|
||||||
* @public
|
* @public
|
||||||
* @param {string} hash
|
* @param {string} hash
|
||||||
|
@ -158,7 +158,7 @@ var Receipts = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if the message has been received
|
* Checks if the message has been received
|
||||||
* @public
|
* @public
|
||||||
* @param {string} hash
|
* @param {string} hash
|
||||||
|
|
|
@ -24,7 +24,7 @@ var Roster = (function () {
|
||||||
self.blist_all = false;
|
self.blist_all = false;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the roster items
|
* Gets the roster items
|
||||||
* @public
|
* @public
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
|
@ -66,7 +66,10 @@ var Roster = (function () {
|
||||||
|
|
||||||
// Request user microblog (populates channel)
|
// Request user microblog (populates channel)
|
||||||
if(user_xid && ((user_subscription == 'both') || (user_subscription == 'to'))) {
|
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
|
* Applies the buddy editing input events
|
||||||
* @public
|
* @public
|
||||||
* @param {string} xid
|
* @param {string} xid
|
||||||
|
@ -704,7 +707,7 @@ var Roster = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets an array of all the groups in the roster
|
* Gets an array of all the groups in the roster
|
||||||
* @public
|
* @public
|
||||||
* @param {type} name
|
* @param {type} name
|
||||||
|
@ -945,7 +948,7 @@ var Roster = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets all the buddies in our roster
|
* Gets all the buddies in our roster
|
||||||
* @public
|
* @public
|
||||||
* @return {object}
|
* @return {object}
|
||||||
|
|
|
@ -20,7 +20,7 @@ var RosterX = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Opens the rosterx tools
|
* Opens the rosterx tools
|
||||||
* @public
|
* @public
|
||||||
* @param {string} data
|
* @param {string} data
|
||||||
|
@ -238,7 +238,7 @@ var RosterX = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Plugin launcher
|
* Plugin launcher
|
||||||
* @public
|
* @public
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
|
|
|
@ -24,7 +24,7 @@ var Search = (function () {
|
||||||
self.search_filtered = false;
|
self.search_filtered = false;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Searches in the user's buddy list
|
* Searches in the user's buddy list
|
||||||
* @public
|
* @public
|
||||||
* @param {string} query
|
* @param {string} query
|
||||||
|
|
|
@ -20,7 +20,7 @@ var Smileys = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generates the correct HTML code for an emoticon insertion tool
|
* Generates the correct HTML code for an emoticon insertion tool
|
||||||
* @public
|
* @public
|
||||||
* @param {string} smiley
|
* @param {string} smiley
|
||||||
|
|
|
@ -20,7 +20,7 @@ var Talk = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates the talkpage events
|
* Creates the talkpage events
|
||||||
* @public
|
* @public
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
|
|
|
@ -20,7 +20,7 @@ var Tooltip = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a tooltip code
|
* Creates a tooltip code
|
||||||
* @public
|
* @public
|
||||||
* @param {string} xid
|
* @param {string} xid
|
||||||
|
|
|
@ -20,7 +20,7 @@ var UserInfos = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Opens the user-infos popup
|
* Opens the user-infos popup
|
||||||
* @public
|
* @public
|
||||||
* @param {string} xid
|
* @param {string} xid
|
||||||
|
@ -263,7 +263,7 @@ var UserInfos = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Displays the buddy comments
|
* Displays the buddy comments
|
||||||
* @public
|
* @public
|
||||||
* @param {string} xid
|
* @param {string} xid
|
||||||
|
@ -463,7 +463,7 @@ var UserInfos = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sends the buddy comments
|
* Sends the buddy comments
|
||||||
* @public
|
* @public
|
||||||
* @return {boolean}
|
* @return {boolean}
|
||||||
|
|
|
@ -85,7 +85,7 @@ var Utils = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Truncates a string
|
* Truncates a string
|
||||||
* @public
|
* @public
|
||||||
* @param {string} string
|
* @param {string} string
|
||||||
|
@ -181,7 +181,7 @@ var Utils = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if this is a private chat user
|
* Checks if this is a private chat user
|
||||||
* @public
|
* @public
|
||||||
* @param {string} xid
|
* @param {string} xid
|
||||||
|
@ -303,7 +303,7 @@ var Utils = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the password of the user
|
* Gets the password of the user
|
||||||
* @public
|
* @public
|
||||||
* @return {string}
|
* @return {string}
|
||||||
|
@ -321,22 +321,27 @@ 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
|
* @public
|
||||||
* @param {string} hash
|
* @param {string} hash
|
||||||
* @param {string} nick
|
* @param {string} nick
|
||||||
|
* @param {string} message
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
*/
|
*/
|
||||||
self.quoteMyNick = function(hash, nick) {
|
self.quoteMyNick = function(hash, nick, message) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$(document).oneTime(10, function() {
|
$(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) {
|
} catch(e) {
|
||||||
Console.error('Utils.quoteMyNick', e);
|
Console.error('Utils.quoteMyNick', e);
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -551,7 +556,7 @@ var Utils = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes a value from an array
|
* Removes a value from an array
|
||||||
* @public
|
* @public
|
||||||
* @param {object} array
|
* @param {object} array
|
||||||
|
|
|
@ -20,7 +20,7 @@ var vCard = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Opens the vCard popup
|
* Opens the vCard popup
|
||||||
* @public
|
* @public
|
||||||
* @return {boolean}
|
* @return {boolean}
|
||||||
|
@ -294,7 +294,7 @@ var vCard = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deletes the encoded avatar of an user
|
* Deletes the encoded avatar of an user
|
||||||
* @public
|
* @public
|
||||||
* @return {boolean}
|
* @return {boolean}
|
||||||
|
@ -428,7 +428,7 @@ var vCard = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles a vCard stanza
|
* Handles a vCard stanza
|
||||||
* @public
|
* @public
|
||||||
* @param {object} iq
|
* @param {object} iq
|
||||||
|
|
|
@ -24,7 +24,7 @@ var Welcome = (function () {
|
||||||
self.is_done = false;
|
self.is_done = false;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Opens the welcome tools
|
* Opens the welcome tools
|
||||||
* @public
|
* @public
|
||||||
* @return {undefined}
|
* @return {undefined}
|
||||||
|
@ -324,7 +324,7 @@ var Welcome = (function () {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Goes to the next welcome step
|
* Goes to the next welcome step
|
||||||
* @public
|
* @public
|
||||||
* @return {boolean}
|
* @return {boolean}
|
||||||
|
|
|
@ -20,7 +20,7 @@ var XMPPLinks = (function () {
|
||||||
var self = {};
|
var self = {};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Does an action with the provided XMPP link
|
* Does an action with the provided XMPP link
|
||||||
* @public
|
* @public
|
||||||
* @param {string} link
|
* @param {string} link
|
||||||
|
|
|
@ -11,19 +11,19 @@ Author: Valérian Saliou
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#adhoc .content {
|
#adhoc .content {
|
||||||
padding: 10px 0 10px 0;
|
padding: 10px 0 10px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#adhoc .adhoc-head {
|
#adhoc .adhoc-head {
|
||||||
background-color: #f1f6fd;
|
background-color: #f1f6fd;
|
||||||
border: 1px #9dc4fc solid;
|
border: 1px #9dc4fc solid;
|
||||||
width: 598px;
|
width: 598px;
|
||||||
height: 18px;
|
height: 18px;
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
margin: 0 10px 12px 10px;
|
margin: 0 10px 12px 10px;
|
||||||
padding: 6px 10px;
|
padding: 6px 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#adhoc .one-actions .one-button {
|
#adhoc .one-actions .one-button {
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
|
@ -11,19 +11,19 @@ Author: Valérian Saliou
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#top-content {
|
#top-content {
|
||||||
min-width: 500px !important;
|
min-width: 500px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#main-content {
|
#main-content {
|
||||||
min-width: 490px !important;
|
min-width: 490px !important;
|
||||||
min-height: 450px !important;
|
min-height: 450px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#left-content {
|
#left-content {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#right-content {
|
#right-content {
|
||||||
left: 0 !important;
|
left: 0 !important;
|
||||||
right: 0 !important;
|
right: 0 !important;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,36 +11,36 @@ Author: Valérian Saliou
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#board .one-board {
|
#board .one-board {
|
||||||
display: none;
|
display: none;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
height: 20px;
|
height: 20px;
|
||||||
z-index: 10000;
|
z-index: 10000;
|
||||||
font-size: 0.92em;
|
font-size: 0.92em;
|
||||||
padding: 6px 8px 5px 8px;
|
padding: 6px 8px 5px 8px;
|
||||||
-moz-box-shadow: 0 0 8px #5c5c5c;
|
-moz-box-shadow: 0 0 8px #5c5c5c;
|
||||||
-webkit-box-shadow: 0 0 8px #5c5c5c;
|
-webkit-box-shadow: 0 0 8px #5c5c5c;
|
||||||
box-shadow: 0 0 8px #5c5c5c;
|
box-shadow: 0 0 8px #5c5c5c;
|
||||||
}
|
}
|
||||||
|
|
||||||
#board .one-board:hover {
|
#board .one-board:hover {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
#board .one-board.visible {
|
#board .one-board.visible {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
#board .one-board.error {
|
#board .one-board.error {
|
||||||
background-color: rgb(241,160,160);
|
background-color: rgb(241,160,160);
|
||||||
background-color: rgba(241,160,160,0.9);
|
background-color: rgba(241,160,160,0.9);
|
||||||
color: #420c0c;
|
color: #420c0c;
|
||||||
}
|
}
|
||||||
|
|
||||||
#board .one-board.info {
|
#board .one-board.info {
|
||||||
background-color: rgb(248,246,186);
|
background-color: rgb(248,246,186);
|
||||||
background-color: rgba(248,246,186,0.9);
|
background-color: rgba(248,246,186,0.9);
|
||||||
color: #2f2a02;
|
color: #2f2a02;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,636 +11,636 @@ Author: Valérian Saliou
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#channel .top div.update {
|
#channel .top div.update {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 12px;
|
top: 12px;
|
||||||
left: 115px;
|
left: 115px;
|
||||||
right: 15px;
|
right: 15px;
|
||||||
bottom: 15px;
|
bottom: 15px;
|
||||||
-moz-border-radius: 20px;
|
-moz-border-radius: 20px;
|
||||||
-webkit-border-radius: 20px;
|
-webkit-border-radius: 20px;
|
||||||
border-radius: 20px;
|
border-radius: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #channel .top div.update {
|
html[dir="rtl"] #channel .top div.update {
|
||||||
right: 115px;
|
right: 115px;
|
||||||
left: 15px;
|
left: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .top p {
|
#channel .top p {
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .top h2 {
|
#channel .top h2 {
|
||||||
font-size: 1.5em;
|
font-size: 1.5em;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
color: #232323;
|
color: #232323;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .top a {
|
#channel .top a {
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
color: #232323;
|
color: #232323;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .top.individual div.update {
|
#channel .top.individual div.update {
|
||||||
right: 36px;
|
right: 36px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .top.individual div.shortcuts,
|
#channel .top.individual div.shortcuts,
|
||||||
#userinfos .main-infos div.shortcuts {
|
#userinfos .main-infos div.shortcuts {
|
||||||
width: 16px;
|
width: 16px;
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .top.individual div.shortcuts {
|
#channel .top.individual div.shortcuts {
|
||||||
margin: 2px 5px 0 0;
|
margin: 2px 5px 0 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .top.individual div.shortcuts a,
|
#channel .top.individual div.shortcuts a,
|
||||||
#userinfos .main-infos div.shortcuts a {
|
#userinfos .main-infos div.shortcuts a {
|
||||||
height: 16px;
|
height: 16px;
|
||||||
width: 16px;
|
width: 16px;
|
||||||
margin-bottom: 4px;
|
margin-bottom: 4px;
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .top.individual div.shortcuts a.message,
|
#channel .top.individual div.shortcuts a.message,
|
||||||
#userinfos .main-infos a.message {
|
#userinfos .main-infos a.message {
|
||||||
background-position: 0 -1717px;
|
background-position: 0 -1717px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .top.individual div.shortcuts a.chat,
|
#channel .top.individual div.shortcuts a.chat,
|
||||||
#userinfos .main-infos a.chat {
|
#userinfos .main-infos a.chat {
|
||||||
background-position: 0 -1737px;
|
background-position: 0 -1737px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .top.individual div.shortcuts a.command,
|
#channel .top.individual div.shortcuts a.command,
|
||||||
#userinfos .main-infos a.command {
|
#userinfos .main-infos a.command {
|
||||||
background-position: 0 -1758px;
|
background-position: 0 -1758px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .microblog-body {
|
#channel .microblog-body {
|
||||||
height: 20px;
|
height: 20px;
|
||||||
margin-right: 50px;
|
margin-right: 50px;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #channel .microblog-body {
|
html[dir="rtl"] #channel .microblog-body {
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
margin-left: 50px;
|
margin-left: 50px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .microblog-body input {
|
#channel .microblog-body input {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
padding: 8px;
|
padding: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-microblog-icon {
|
#channel .one-microblog-icon {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 38px;
|
top: 38px;
|
||||||
right: 0;
|
right: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #channel .one-microblog-icon {
|
html[dir="rtl"] #channel .one-microblog-icon {
|
||||||
left: 0;
|
left: 0;
|
||||||
right: auto;
|
right: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel div.update .one-microblog-icon,
|
#channel div.update .one-microblog-icon,
|
||||||
#channel div.update .postit {
|
#channel div.update .postit {
|
||||||
width: 16px;
|
width: 16px;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel div.update .attach {
|
#channel div.update .attach {
|
||||||
background-position: 0 -79px;
|
background-position: 0 -79px;
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#attach {
|
#attach {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
width: 263px;
|
width: 263px;
|
||||||
margin-left: -227px;
|
margin-left: -227px;
|
||||||
color: white;
|
color: white;
|
||||||
font-size: 0.85em;
|
font-size: 0.85em;
|
||||||
z-index: 9998;
|
z-index: 9998;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#attach p {
|
#attach p {
|
||||||
margin-bottom: 6px !important;
|
margin-bottom: 6px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#attach input[type="submit"] {
|
#attach input[type="submit"] {
|
||||||
margin: 8px 0 6px 0;
|
margin: 8px 0 6px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#attach .wait {
|
#attach .wait {
|
||||||
float: right;
|
float: right;
|
||||||
margin: 7px 5px;
|
margin: 7px 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#attach div.one-file {
|
#attach div.one-file {
|
||||||
height: 16px;
|
height: 16px;
|
||||||
margin-top: 2px;
|
margin-top: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#attach div.one-file a.link {
|
#attach div.one-file a.link {
|
||||||
color: white;
|
color: white;
|
||||||
width: 215px;
|
width: 215px;
|
||||||
height: 14px;
|
height: 14px;
|
||||||
margin-left: 2px;
|
margin-left: 2px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #attach div.one-file a.link {
|
html[dir="rtl"] #attach div.one-file a.link {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
margin-right: 2px;
|
margin-right: 2px;
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
#attach div.one-file a.remove {
|
#attach div.one-file a.remove {
|
||||||
width: 16px;
|
width: 16px;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #attach div.one-file a.remove {
|
html[dir="rtl"] #attach div.one-file a.remove {
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
.attach-subarrow {
|
.attach-subarrow {
|
||||||
background-position: 0 -241px;
|
background-position: 0 -241px;
|
||||||
opacity: 0.8;
|
opacity: 0.8;
|
||||||
height: 10px;
|
height: 10px;
|
||||||
width: 18px;
|
width: 18px;
|
||||||
margin-left: 226px;
|
margin-left: 226px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.attach-subitem {
|
.attach-subitem {
|
||||||
background-color: rgb(0,0,0);
|
background-color: rgb(0,0,0);
|
||||||
background-color: rgba(0,0,0,0.8);
|
background-color: rgba(0,0,0,0.8);
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
text-shadow: 0 1px 1px black;
|
text-shadow: 0 1px 1px black;
|
||||||
-moz-border-radius: 5px;
|
-moz-border-radius: 5px;
|
||||||
-webkit-border-radius: 5px;
|
-webkit-border-radius: 5px;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] .attach-subitem {
|
html[dir="rtl"] .attach-subitem {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 238px;
|
left: 238px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.attach-p {
|
.attach-p {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-update {
|
#channel .one-update {
|
||||||
margin-bottom: 12px;
|
margin-bottom: 12px;
|
||||||
padding: 6px 6px 8px 6px;
|
padding: 6px 6px 8px 6px;
|
||||||
border-bottom: 1px dotted #d0d0d0;
|
border-bottom: 1px dotted #d0d0d0;
|
||||||
min-height: 50px;
|
min-height: 50px;
|
||||||
color: black;
|
color: black;
|
||||||
position: relative;
|
position: relative;
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-update .avatar-container {
|
#channel .one-update .avatar-container {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
margin-right: 16px;
|
margin-right: 16px;
|
||||||
float: left;
|
float: left;
|
||||||
height: 50px;
|
height: 50px;
|
||||||
width: 50px;
|
width: 50px;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #channel .one-update .avatar-container {
|
html[dir="rtl"] #channel .one-update .avatar-container {
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
margin-left: 16px;
|
margin-left: 16px;
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-update .avatar-container:hover {
|
#channel .one-update .avatar-container:hover {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-update img.avatar {
|
#channel .one-update img.avatar {
|
||||||
max-height: 50px;
|
max-height: 50px;
|
||||||
max-width: 50px;
|
max-width: 50px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-update div.body {
|
#channel .one-update div.body {
|
||||||
line-height: 1.4;
|
line-height: 1.4;
|
||||||
margin-left: 65px;
|
margin-left: 65px;
|
||||||
opacity: 0.8;
|
opacity: 0.8;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-update:hover div.body {
|
#channel .one-update:hover div.body {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-update a.repeat {
|
#channel .one-update a.repeat {
|
||||||
background-position: 0 -1681px;
|
background-position: 0 -1681px;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
width: 16px;
|
width: 16px;
|
||||||
margin-right: 4px;
|
margin-right: 4px;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-update span a {
|
#channel .one-update span a {
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-update p {
|
#channel .one-update p {
|
||||||
display: block;
|
display: block;
|
||||||
margin: 0 12px 5px 0;
|
margin: 0 12px 5px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #channel .one-update p {
|
html[dir="rtl"] #channel .one-update p {
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
margin-left: 12px;
|
margin-left: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-update p b.name:hover {
|
#channel .one-update p b.name:hover {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #channel .one-update p b.name {
|
html[dir="rtl"] #channel .one-update p b.name {
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-update p.infos {
|
#channel .one-update p.infos {
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-update p.infos a.geoloc {
|
#channel .one-update p.infos a.geoloc {
|
||||||
background-position: 0 -1778px;
|
background-position: 0 -1778px;
|
||||||
color: #363636;
|
color: #363636;
|
||||||
margin-left: 18px;
|
margin-left: 18px;
|
||||||
padding-left: 14px;
|
padding-left: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #channel .one-update p.infos a.geoloc {
|
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:hover,
|
||||||
#channel .one-update p.infos a.geoloc:focus,
|
#channel .one-update p.infos a.geoloc:focus,
|
||||||
#channel .one-update p.infos a.geoloc:active {
|
#channel .one-update p.infos a.geoloc:active {
|
||||||
color: #141414;
|
color: #141414;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-update p.file {
|
#channel .one-update p.file {
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
margin: 6px 0 5px 10px;
|
margin: 6px 0 5px 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-update p.file a.link,
|
#channel .one-update p.file a.link,
|
||||||
#inbox .inbox-new-file a.file {
|
#inbox .inbox-new-file a.file {
|
||||||
min-height: 16px;
|
min-height: 16px;
|
||||||
padding-left: 22px;
|
padding-left: 22px;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-update p.file a.link {
|
#channel .one-update p.file a.link {
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel p.file a,
|
#channel p.file a,
|
||||||
#inbox .inbox-new-file a.file {
|
#inbox .inbox-new-file a.file {
|
||||||
background-position: 0 -988px;
|
background-position: 0 -988px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel p.file a.audio,
|
#channel p.file a.audio,
|
||||||
#inbox .inbox-new-file a.file.audio {
|
#inbox .inbox-new-file a.file.audio {
|
||||||
background-position: 0 -899px;
|
background-position: 0 -899px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel p.file a.image,
|
#channel p.file a.image,
|
||||||
#inbox .inbox-new-file a.file.image {
|
#inbox .inbox-new-file a.file.image {
|
||||||
background-position: 0 -917px;
|
background-position: 0 -917px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel p.file a.video,
|
#channel p.file a.video,
|
||||||
#inbox .inbox-new-file a.file.video {
|
#inbox .inbox-new-file a.file.video {
|
||||||
background-position: 0 -935px;
|
background-position: 0 -935px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel p.file a.document,
|
#channel p.file a.document,
|
||||||
#inbox .inbox-new-file a.file.document {
|
#inbox .inbox-new-file a.file.document {
|
||||||
background-position: 0 -953px;
|
background-position: 0 -953px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel p.file a.package,
|
#channel p.file a.package,
|
||||||
#inbox .inbox-new-file a.file.package {
|
#inbox .inbox-new-file a.file.package {
|
||||||
background-position: 0 -971px;
|
background-position: 0 -971px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-update p.file a.thumb img {
|
#channel .one-update p.file a.thumb img {
|
||||||
border: 1px solid #a2a2a2;
|
border: 1px solid #a2a2a2;
|
||||||
max-width: 140px;
|
max-width: 140px;
|
||||||
max-height: 105px;
|
max-height: 105px;
|
||||||
margin: 4px 10px 2px 0;
|
margin: 4px 10px 2px 0;
|
||||||
padding: 1px;
|
padding: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-update p.file a.thumb img:hover {
|
#channel .one-update p.file a.thumb img:hover {
|
||||||
border-color: #464646;
|
border-color: #464646;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-update div.comments,
|
#channel .one-update div.comments,
|
||||||
.popup.large div.comments {
|
.popup.large div.comments {
|
||||||
width: 410px;
|
width: 410px;
|
||||||
margin: 2px 0 2px 76px;
|
margin: 2px 0 2px 76px;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #channel .one-update div.comments {
|
html[dir="rtl"] #channel .one-update div.comments {
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
margin-right: 76px;
|
margin-right: 76px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-update div.comments div.arrow,
|
#channel .one-update div.comments div.arrow,
|
||||||
.popup.large div.comments div.arrow {
|
.popup.large div.comments div.arrow {
|
||||||
background-position: 0 -1702px;
|
background-position: 0 -1702px;
|
||||||
width: 20px;
|
width: 20px;
|
||||||
height: 8px;
|
height: 8px;
|
||||||
margin-left: 20px;
|
margin-left: 20px;
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #channel .one-update div.comments div.arrow,
|
html[dir="rtl"] #channel .one-update div.comments div.arrow,
|
||||||
html[dir="rtl"] .popup.large div.comments div.arrow {
|
html[dir="rtl"] .popup.large div.comments div.arrow {
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
margin-right: 20px;
|
margin-right: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-update div.comments div.comments-content,
|
#channel .one-update div.comments div.comments-content,
|
||||||
.popup.large div.comments div.comments-content {
|
.popup.large div.comments div.comments-content {
|
||||||
background-color: #e5ebec;
|
background-color: #e5ebec;
|
||||||
color: black;
|
color: black;
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
text-shadow: 0 1px 0 white;
|
text-shadow: 0 1px 0 white;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-update div.comments input,
|
#channel .one-update div.comments input,
|
||||||
.popup.large div.comments input {
|
.popup.large div.comments input {
|
||||||
width: 356px;
|
width: 356px;
|
||||||
margin: 6px 0;
|
margin: 6px 0;
|
||||||
padding: 4px 5px;
|
padding: 4px 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-update div.comments span.icon,
|
#channel .one-update div.comments span.icon,
|
||||||
.popup.large div.comments span.icon {
|
.popup.large div.comments span.icon {
|
||||||
background-position: 0 -1082px;
|
background-position: 0 -1082px;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
width: 16px;
|
width: 16px;
|
||||||
margin: 10px;
|
margin: 10px;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #channel .one-update div.comments span.icon,
|
html[dir="rtl"] #channel .one-update div.comments span.icon,
|
||||||
html[dir="rtl"] .popup.large 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,
|
#channel .one-update div.comments .one-comment.loading span.icon,
|
||||||
.popup.large 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"] #channel .one-update div.comments .one-comment.loading span.icon,
|
||||||
html[dir="rtl"] .popup.large 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,
|
#channel .one-update div.comments .one-comment,
|
||||||
.popup.large div.comments .one-comment {
|
.popup.large div.comments .one-comment {
|
||||||
border-bottom: 1px solid #f4f4f4;
|
border-bottom: 1px solid #f4f4f4;
|
||||||
padding: 4px 8px 0 8px;
|
padding: 4px 8px 0 8px;
|
||||||
position: relative;
|
position: relative;
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-update div.comments .one-comment.compose,
|
#channel .one-update div.comments .one-comment.compose,
|
||||||
.popup.large div.comments .one-comment.compose {
|
.popup.large div.comments .one-comment.compose {
|
||||||
border-bottom: 2px solid #f4f4f4;
|
border-bottom: 2px solid #f4f4f4;
|
||||||
height: 36px;
|
height: 36px;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-update div.comments .one-comment.new,
|
#channel .one-update div.comments .one-comment.new,
|
||||||
.popup.large div.comments .one-comment.new {
|
.popup.large div.comments .one-comment.new {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-update div.comments a.one-comment,
|
#channel .one-update div.comments a.one-comment,
|
||||||
.popup.large 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:hover,
|
||||||
#channel .one-update div.comments a.one-comment:focus,
|
#channel .one-update div.comments a.one-comment:focus,
|
||||||
.popup.large div.comments a.one-comment:hover,
|
.popup.large div.comments a.one-comment:hover,
|
||||||
.popup.large div.comments a.one-comment:focus {
|
.popup.large div.comments a.one-comment:focus {
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-update div.comments .one-comment.loading,
|
#channel .one-update div.comments .one-comment.loading,
|
||||||
.popup.large 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,
|
#channel .one-update div.comments .one-comment div.marker,
|
||||||
.popup.large div.comments .one-comment div.marker {
|
.popup.large div.comments .one-comment div.marker {
|
||||||
background-color: #6d8387;
|
background-color: #6d8387;
|
||||||
width: 2px;
|
width: 2px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-update div.comments .one-comment .avatar-container,
|
#channel .one-update div.comments .one-comment .avatar-container,
|
||||||
.popup.large div.comments .one-comment .avatar-container {
|
.popup.large div.comments .one-comment .avatar-container {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
width: 30px;
|
width: 30px;
|
||||||
height: 30px;
|
height: 30px;
|
||||||
margin: 2px 8px 0 0;
|
margin: 2px 8px 0 0;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #channel .one-update div.comments .one-comment .avatar-container,
|
html[dir="rtl"] #channel .one-update div.comments .one-comment .avatar-container,
|
||||||
html[dir="rtl"] .popup.large div.comments .one-comment .avatar-container {
|
html[dir="rtl"] .popup.large div.comments .one-comment .avatar-container {
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-update div.comments .one-comment .avatar-container:hover,
|
#channel .one-update div.comments .one-comment .avatar-container:hover,
|
||||||
.popup.large 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,
|
#channel .one-update div.comments .one-comment img.avatar,
|
||||||
.popup.large div.comments .one-comment img.avatar {
|
.popup.large div.comments .one-comment img.avatar {
|
||||||
max-height: 30px;
|
max-height: 30px;
|
||||||
max-width: 30px;
|
max-width: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-update div.comments .one-comment .comment-container,
|
#channel .one-update div.comments .one-comment .comment-container,
|
||||||
.popup.large 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,
|
#channel .one-update div.comments .one-comment a.name,
|
||||||
.popup.large div.comments .one-comment a.name {
|
.popup.large div.comments .one-comment a.name {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
font-size: 0.95em;
|
font-size: 0.95em;
|
||||||
padding-bottom: 2px;
|
padding-bottom: 2px;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #channel .one-update div.comments .one-comment a.name,
|
html[dir="rtl"] #channel .one-update div.comments .one-comment a.name,
|
||||||
html[dir="rtl"] .popup.large 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:hover,
|
||||||
#channel .one-update div.comments .one-comment a.name:focus,
|
#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:hover,
|
||||||
.popup.large div.comments .one-comment a.name:focus {
|
.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 span.date,
|
||||||
#channel .one-update div.comments .one-comment a.remove,
|
#channel .one-update div.comments .one-comment a.remove,
|
||||||
.popup.large div.comments .one-comment span.date,
|
.popup.large div.comments .one-comment span.date,
|
||||||
.popup.large div.comments .one-comment a.remove {
|
.popup.large div.comments .one-comment a.remove {
|
||||||
font-size: 0.85em;
|
font-size: 0.85em;
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #channel .one-update div.comments .one-comment span.date,
|
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"] #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 span.date,
|
||||||
html[dir="rtl"] .popup.large div.comments .one-comment a.remove {
|
html[dir="rtl"] .popup.large div.comments .one-comment a.remove {
|
||||||
margin-left: 2px;
|
margin-left: 2px;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-update div.comments .one-comment.me:hover span.date,
|
#channel .one-update div.comments .one-comment.me:hover span.date,
|
||||||
.popup.large 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,
|
#channel .one-update div.comments .one-comment.me a.remove,
|
||||||
.popup.large 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,
|
#channel .one-update div.comments .one-comment.me:hover a.remove,
|
||||||
.popup.large 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,
|
#channel .one-update div.comments .one-comment p.body,
|
||||||
.popup.large div.comments .one-comment p.body {
|
.popup.large div.comments .one-comment p.body {
|
||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel a.more {
|
#channel a.more {
|
||||||
background-position: 0 -334px;
|
background-position: 0 -334px;
|
||||||
color: black;
|
color: black;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
margin: -2px 0 14px 4px;
|
margin: -2px 0 14px 4px;
|
||||||
padding-left: 20px;
|
padding-left: 20px;
|
||||||
display: block;
|
display: block;
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel a.more:hover,
|
#channel a.more:hover,
|
||||||
#channel a.more:focus {
|
#channel a.more:focus {
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel a.mbtool {
|
#channel a.mbtool {
|
||||||
width: 11px;
|
width: 11px;
|
||||||
height: 11px;
|
height: 11px;
|
||||||
display: none;
|
display: none;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 0;
|
right: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #channel a.mbtool {
|
html[dir="rtl"] #channel a.mbtool {
|
||||||
right: auto;
|
right: auto;
|
||||||
left: 0;
|
left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .one-update:hover a.mbtool {
|
#channel .one-update:hover a.mbtool {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel a.mbtool:hover,
|
#channel a.mbtool:hover,
|
||||||
#channel a.mbtool:focus {
|
#channel a.mbtool:focus {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel a.mbtool.profile {
|
#channel a.mbtool.profile {
|
||||||
background-position: -1px -1333px;
|
background-position: -1px -1333px;
|
||||||
top: 24px;
|
top: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel a.mbtool.repost {
|
#channel a.mbtool.repost {
|
||||||
background-position: -1px -1354px;
|
background-position: -1px -1354px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel a.mbtool.remove {
|
#channel a.mbtool.remove {
|
||||||
background-position: -1px -1312px;
|
background-position: -1px -1312px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel a.mbtool.repost,
|
#channel a.mbtool.repost,
|
||||||
#channel a.mbtool.remove {
|
#channel a.mbtool.remove {
|
||||||
top: 6px;
|
top: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .footer {
|
#channel .footer {
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
-moz-border-radius-bottomleft: 4px;
|
-moz-border-radius-bottomleft: 4px;
|
||||||
-moz-border-radius-bottomright: 4px;
|
-moz-border-radius-bottomright: 4px;
|
||||||
-webkit-border-bottom-left-radius: 4px;
|
-webkit-border-bottom-left-radius: 4px;
|
||||||
-webkit-border-bottom-right-radius: 4px;
|
-webkit-border-bottom-right-radius: 4px;
|
||||||
border-bottom-left-radius: 4px;
|
border-bottom-left-radius: 4px;
|
||||||
border-bottom-right-radius: 4px;
|
border-bottom-right-radius: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .footer div {
|
#channel .footer div {
|
||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
padding-left: 24px;
|
padding-left: 24px;
|
||||||
min-height: 16px;
|
min-height: 16px;
|
||||||
font-size: 0.85em;
|
font-size: 0.85em;
|
||||||
width: auto !important;
|
width: auto !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #channel .footer div {
|
html[dir="rtl"] #channel .footer div {
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .footer .sync {
|
#channel .footer .sync {
|
||||||
background-position: 0 -804px;
|
background-position: 0 -804px;
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#channel .footer .unsync {
|
#channel .footer .unsync {
|
||||||
background-position: 0 -830px;
|
background-position: 0 -830px;
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,5 +11,5 @@ Author: Valérian Saliou
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#directory .content {
|
#directory .content {
|
||||||
padding: 10px 0 10px 0;
|
padding: 10px 0 10px 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,68 +11,68 @@ Author: Valérian Saliou
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#discovery .content {
|
#discovery .content {
|
||||||
padding: 10px 0 10px 0;
|
padding: 10px 0 10px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#discovery .content p {
|
#discovery .content p {
|
||||||
margin: 5px 10px 5px 10px;
|
margin: 5px 10px 5px 10px;
|
||||||
text-align: justify;
|
text-align: justify;
|
||||||
font-size: 0.85em;
|
font-size: 0.85em;
|
||||||
}
|
}
|
||||||
|
|
||||||
#discovery .discovery-head,
|
#discovery .discovery-head,
|
||||||
#directory .directory-head,
|
#directory .directory-head,
|
||||||
#rosterx .rosterx-head,
|
#rosterx .rosterx-head,
|
||||||
#privacy .privacy-head {
|
#privacy .privacy-head {
|
||||||
width: 606px;
|
width: 606px;
|
||||||
height: 24px;
|
height: 24px;
|
||||||
margin: 0 10px 10px 10px;
|
margin: 0 10px 10px 10px;
|
||||||
padding: 6px;
|
padding: 6px;
|
||||||
background: #f1f6fd;
|
background: #f1f6fd;
|
||||||
border: 1px #9dc4fc solid;
|
border: 1px #9dc4fc solid;
|
||||||
}
|
}
|
||||||
|
|
||||||
#discovery .disco-server-text,
|
#discovery .disco-server-text,
|
||||||
#directory .directory-server-text {
|
#directory .directory-server-text {
|
||||||
float: left;
|
float: left;
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
margin: 3px;
|
margin: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #discovery .disco-server-text,
|
html[dir="rtl"] #discovery .disco-server-text,
|
||||||
html[dir="rtl"] #directory .directory-server-text {
|
html[dir="rtl"] #directory .directory-server-text {
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
#discovery .disco-server-input,
|
#discovery .disco-server-input,
|
||||||
#directory .directory-server-input {
|
#directory .directory-server-input {
|
||||||
width: 200px;
|
width: 200px;
|
||||||
height: 18px;
|
height: 18px;
|
||||||
float: right;
|
float: right;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
padding: 2px;
|
padding: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #discovery .disco-server-input,
|
html[dir="rtl"] #discovery .disco-server-input,
|
||||||
html[dir="rtl"] #directory .directory-server-input {
|
html[dir="rtl"] #directory .directory-server-input {
|
||||||
margin-right: 0;
|
margin-right: 0;
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
#discovery .disco-category {
|
#discovery .disco-category {
|
||||||
display: none;
|
display: none;
|
||||||
margin-bottom: 22px;
|
margin-bottom: 22px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#discovery .disco-category-title {
|
#discovery .disco-category-title {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
#discovery .one-actions .one-button {
|
#discovery .one-actions .one-button {
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #discovery .one-actions .one-button {
|
html[dir="rtl"] #discovery .one-actions .one-button {
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
|
@ -11,141 +11,141 @@ Author: Valérian Saliou
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#favorites .content {
|
#favorites .content {
|
||||||
padding: 10px 0 10px 0;
|
padding: 10px 0 10px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#favorites .fedit-head-select {
|
#favorites .fedit-head-select {
|
||||||
min-width: 190px;
|
min-width: 190px;
|
||||||
max-width: 210px;
|
max-width: 210px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#favorites .switch-fav {
|
#favorites .switch-fav {
|
||||||
margin: 0 10px 0 10px;
|
margin: 0 10px 0 10px;
|
||||||
width: 200px;
|
width: 200px;
|
||||||
height: 355px;
|
height: 355px;
|
||||||
border-right: 1px #c0c0c0 dotted;
|
border-right: 1px #c0c0c0 dotted;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
#favorites .room-switcher {
|
#favorites .room-switcher {
|
||||||
width: 188px;
|
width: 188px;
|
||||||
height: 18px;
|
height: 18px;
|
||||||
border-bottom: 1px #9dc4fc solid;
|
border-bottom: 1px #9dc4fc solid;
|
||||||
float: left;
|
float: left;
|
||||||
padding: 10px 6px;
|
padding: 10px 6px;
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
}
|
}
|
||||||
|
|
||||||
#favorites .room-switcher:hover {
|
#favorites .room-switcher:hover {
|
||||||
background-color: #e9f1fd;
|
background-color: #e9f1fd;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
#favorites .room-switcher:active {
|
#favorites .room-switcher:active {
|
||||||
background-color: #f1f6fd;
|
background-color: #f1f6fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
#favorites .switch-fav .icon {
|
#favorites .switch-fav .icon {
|
||||||
float: left;
|
float: left;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
width: 16px;
|
width: 16px;
|
||||||
margin: 0 8px 0 0;
|
margin: 0 8px 0 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#favorites .switch-fav .room-list .list-icon {
|
#favorites .switch-fav .room-list .list-icon {
|
||||||
background-position: 0 -855px;
|
background-position: 0 -855px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#favorites .switch-fav .room-search .search-icon {
|
#favorites .switch-fav .room-search .search-icon {
|
||||||
background-position: 0 -876px;
|
background-position: 0 -876px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#favorites .static-fav {
|
#favorites .static-fav {
|
||||||
width: 385px;
|
width: 385px;
|
||||||
height: 335px;
|
height: 335px;
|
||||||
margin: 0 10px 0 0;
|
margin: 0 10px 0 0;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
#favorites .favorites-search {
|
#favorites .favorites-search {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#favorites .static-fav-head {
|
#favorites .static-fav-head {
|
||||||
width: 393px;
|
width: 393px;
|
||||||
margin: -10px;
|
margin: -10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#favorites .static-fav-results {
|
#favorites .static-fav-results {
|
||||||
width: 406px;
|
width: 406px;
|
||||||
height: 314px;
|
height: 314px;
|
||||||
margin: 10px -10px -10px -10px;
|
margin: 10px -10px -10px -10px;
|
||||||
padding: 6px 0 0 0;
|
padding: 6px 0 0 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#favorites .fedit-line {
|
#favorites .fedit-line {
|
||||||
height: 30px;
|
height: 30px;
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
padding: 10px 0 4px 4px;
|
padding: 10px 0 4px 4px;
|
||||||
border-bottom: 1px #9dc4fc solid;
|
border-bottom: 1px #9dc4fc solid;
|
||||||
}
|
}
|
||||||
|
|
||||||
#favorites .fedit-line:hover {
|
#favorites .fedit-line:hover {
|
||||||
background: #e9f1fd;
|
background: #e9f1fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
#favorites label {
|
#favorites label {
|
||||||
width: 140px;
|
width: 140px;
|
||||||
margin-top: 3px;
|
margin-top: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#favorites input {
|
#favorites input {
|
||||||
height: 18px;
|
height: 18px;
|
||||||
width: 186px;
|
width: 186px;
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
padding: 2px;
|
padding: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#favorites .fedit-select {
|
#favorites .fedit-select {
|
||||||
min-width: 160px;
|
min-width: 160px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#favorites .fedit-actions {
|
#favorites .fedit-actions {
|
||||||
margin: 10px 0 0;
|
margin: 10px 0 0;
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
#favorites input[type="checkbox"] {
|
#favorites input[type="checkbox"] {
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
width: auto;
|
width: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
#favorites .fedit-terminate {
|
#favorites .fedit-terminate {
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
#favorites .fedit-add {
|
#favorites .fedit-add {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
#favorites .fedit-edit {
|
#favorites .fedit-edit {
|
||||||
background-position: 2px -1240px;
|
background-position: 2px -1240px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#favorites .fedit-remove {
|
#favorites .fedit-remove {
|
||||||
margin: 0 8px 0 0;
|
margin: 0 8px 0 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#favorites .add,
|
#favorites .add,
|
||||||
.popup .results .one-button.one-add {
|
.popup .results .one-button.one-add {
|
||||||
background-position: 3px -1177px;
|
background-position: 3px -1177px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#favorites .remove,
|
#favorites .remove,
|
||||||
#inbox .remove {
|
#inbox .remove {
|
||||||
background-position: 3px -1196px;
|
background-position: 3px -1196px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#favorites .join,
|
#favorites .join,
|
||||||
|
@ -153,32 +153,32 @@ Author: Valérian Saliou
|
||||||
#inbox .send,
|
#inbox .send,
|
||||||
.popup .results .one-button.one-chat,
|
.popup .results .one-button.one-chat,
|
||||||
.popup .results a.one-profile {
|
.popup .results a.one-profile {
|
||||||
background-position: 3px -124px;
|
background-position: 3px -124px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#favorites .one-button,
|
#favorites .one-button,
|
||||||
#inbox .one-button,
|
#inbox .one-button,
|
||||||
.popup .results .one-button {
|
.popup .results .one-button {
|
||||||
padding-left: 20px !important;
|
padding-left: 20px !important;
|
||||||
font-size: 0.98em;
|
font-size: 0.98em;
|
||||||
}
|
}
|
||||||
|
|
||||||
#favorites .fsearch-results {
|
#favorites .fsearch-results {
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
#favorites .room-name {
|
#favorites .room-name {
|
||||||
margin: 4px 2px 5px;
|
margin: 4px 2px 5px;
|
||||||
max-width: 210px;
|
max-width: 210px;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #favorites .room-name {
|
html[dir="rtl"] #favorites .room-name {
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
#favorites .fsearch-noresults {
|
#favorites .fsearch-noresults {
|
||||||
display: none;
|
display: none;
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,41 +11,41 @@ Author: Valérian Saliou
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'PT Sans';
|
font-family: 'PT Sans';
|
||||||
src: url('../fonts/eot/ptsans.eot');
|
src: url('../fonts/eot/ptsans.eot');
|
||||||
src: url('../fonts/eot/ptsans.eot?#iefix') format('embedded-opentype'),
|
src: url('../fonts/eot/ptsans.eot?#iefix') format('embedded-opentype'),
|
||||||
url('../fonts/woff/ptsans.woff') format('woff'),
|
url('../fonts/woff/ptsans.woff') format('woff'),
|
||||||
url('../fonts/ttf/ptsans.ttf') format('truetype'),
|
url('../fonts/ttf/ptsans.ttf') format('truetype'),
|
||||||
url('../fonts/svg/ptsans.svg#pt_sansregular') format('svg');
|
url('../fonts/svg/ptsans.svg#pt_sansregular') format('svg');
|
||||||
}
|
}
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'PT Sans';
|
font-family: 'PT Sans';
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
src: url('../fonts/eot/ptsansitalic.eot');
|
src: url('../fonts/eot/ptsansitalic.eot');
|
||||||
src: url('../fonts/eot/ptsansitalic.eot?#iefix') format('embedded-opentype'),
|
src: url('../fonts/eot/ptsansitalic.eot?#iefix') format('embedded-opentype'),
|
||||||
url('../fonts/woff/ptsansitalic.woff') format('woff'),
|
url('../fonts/woff/ptsansitalic.woff') format('woff'),
|
||||||
url('../fonts/ttf/ptsansitalic.ttf') format('truetype'),
|
url('../fonts/ttf/ptsansitalic.ttf') format('truetype'),
|
||||||
url('../fonts/svg/ptsansitalic.svg#pt_sansitalic') format('svg');
|
url('../fonts/svg/ptsansitalic.svg#pt_sansitalic') format('svg');
|
||||||
}
|
}
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'PT Sans';
|
font-family: 'PT Sans';
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
src: url('../fonts/eot/ptsansbold.eot');
|
src: url('../fonts/eot/ptsansbold.eot');
|
||||||
src: url('../fonts/eot/ptsansbold.eot?#iefix') format('embedded-opentype'),
|
src: url('../fonts/eot/ptsansbold.eot?#iefix') format('embedded-opentype'),
|
||||||
url('../fonts/woff/ptsansbold.woff') format('woff'),
|
url('../fonts/woff/ptsansbold.woff') format('woff'),
|
||||||
url('../fonts/ttf/ptsansbold.ttf') format('truetype'),
|
url('../fonts/ttf/ptsansbold.ttf') format('truetype'),
|
||||||
url('../fonts/svg/ptsansbold.svg#pt_sansbold') format('svg');
|
url('../fonts/svg/ptsansbold.svg#pt_sansbold') format('svg');
|
||||||
}
|
}
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'PT Sans';
|
font-family: 'PT Sans';
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
src: url('../fonts/eot/ptsansbolditalic.eot');
|
src: url('../fonts/eot/ptsansbolditalic.eot');
|
||||||
src: url('../fonts/eot/ptsansbolditalic.eot?#iefix') format('embedded-opentype'),
|
src: url('../fonts/eot/ptsansbolditalic.eot?#iefix') format('embedded-opentype'),
|
||||||
url('../fonts/woff/ptsansbolditalic.woff') format('woff'),
|
url('../fonts/woff/ptsansbolditalic.woff') format('woff'),
|
||||||
url('../fonts/ttf/ptsansbolditalic.ttf') format('truetype'),
|
url('../fonts/ttf/ptsansbolditalic.ttf') format('truetype'),
|
||||||
url('../fonts/svg/ptsansbolditalic.svg#pt_sansbold_italic') format('svg');
|
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 */
|
/* Fix custom fonts */
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'PT Sans';
|
font-family: 'PT Sans';
|
||||||
src: url(../fonts/eot/ptsans.eot);
|
src: url(../fonts/eot/ptsans.eot);
|
||||||
}
|
}
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'PT Sans';
|
font-family: 'PT Sans';
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
src: url(../fonts/eot/ptsansitalic.eot);
|
src: url(../fonts/eot/ptsansitalic.eot);
|
||||||
}
|
}
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'PT Sans';
|
font-family: 'PT Sans';
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
src: url(../fonts/eot/ptsansbold.eot);
|
src: url(../fonts/eot/ptsansbold.eot);
|
||||||
}
|
}
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'PT Sans';
|
font-family: 'PT Sans';
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
src: url(../fonts/eot/ptsansbolditalic.eot);
|
src: url(../fonts/eot/ptsansbolditalic.eot);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* rgba(255,255,255,0.9) */
|
/* rgba(255,255,255,0.9) */
|
||||||
.search ul {
|
.search ul {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#edffffff,endColorstr=#edffffff);
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#edffffff,endColorstr=#edffffff);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* rgba(255,255,255,0.3) */
|
/* rgba(255,255,255,0.3) */
|
||||||
a.finish:active,
|
a.finish:active,
|
||||||
#manager-buttons input:active,
|
#manager-buttons input:active,
|
||||||
#install-buttons input:active {
|
#install-buttons input:active {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#49ffffff,endColorstr=#49ffffff);
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#49ffffff,endColorstr=#49ffffff);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* rgba(255,255,255,0.2) */
|
/* rgba(255,255,255,0.2) */
|
||||||
|
@ -58,15 +58,15 @@ a.finish:focus,
|
||||||
#install-buttons input:hover,
|
#install-buttons input:hover,
|
||||||
#install-buttons input:focus,
|
#install-buttons input:focus,
|
||||||
.notifications-content .one-notification:active {
|
.notifications-content .one-notification:active {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#33ffffff,endColorstr=#33ffffff);
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#33ffffff,endColorstr=#33ffffff);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* rgba(255,255,255,0.14) */
|
/* rgba(255,255,255,0.14) */
|
||||||
#home .corporation .corp_network a:active,
|
#home .corporation .corp_network a:active,
|
||||||
#home .locale .list a:active {
|
#home .locale .list a:active {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#2fffffff,endColorstr=#2fffffff);
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#2fffffff,endColorstr=#2fffffff);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* rgba(255,255,255,0.1) */
|
/* rgba(255,255,255,0.1) */
|
||||||
|
@ -82,44 +82,44 @@ a.finish.disabled:active,
|
||||||
#install-buttons input,
|
#install-buttons input,
|
||||||
.notifications-content .one-notification:hover,
|
.notifications-content .one-notification:hover,
|
||||||
.notifications-content .one-notification:focus {
|
.notifications-content .one-notification:focus {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#20ffffff,endColorstr=#20ffffff);
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#20ffffff,endColorstr=#20ffffff);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* rgba(255,239,104,0.8) */
|
/* rgba(255,239,104,0.8) */
|
||||||
.popup .infos {
|
.popup .infos {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#deffef68,endColorstr=#deffef68);
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#deffef68,endColorstr=#deffef68);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* rgba(225,160,20,0.3) */
|
/* rgba(225,160,20,0.3) */
|
||||||
.search ul li.hovered {
|
.search ul li.hovered {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#46e1a014,endColorstr=#46e1a014);
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#46e1a014,endColorstr=#46e1a014);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* rgba(248,246,186,0.9) */
|
/* rgba(248,246,186,0.9) */
|
||||||
#board .one-board.info {
|
#board .one-board.info {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#edf8f6ba,endColorstr=#edf8f6ba);
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#edf8f6ba,endColorstr=#edf8f6ba);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* rgba(241,160,160,0.9) */
|
/* rgba(241,160,160,0.9) */
|
||||||
#board .one-board.error {
|
#board .one-board.error {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#edf1a0a0,endColorstr=#edf1a0a0);
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#edf1a0a0,endColorstr=#edf1a0a0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* rgba(234,234,234,0.8) */
|
/* rgba(234,234,234,0.8) */
|
||||||
#page-engine .chatstate {
|
#page-engine .chatstate {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#deeaeaea,endColorstr=#deeaeaea);
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#deeaeaea,endColorstr=#deeaeaea);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* rgba(20,20,20,0.6) */
|
/* rgba(20,20,20,0.6) */
|
||||||
#home .notice.simple {
|
#home .notice.simple {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#a0141414,endColorstr=#a0141414);
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#a0141414,endColorstr=#a0141414);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* rgba(20,20,20,0.8) */
|
/* rgba(20,20,20,0.8) */
|
||||||
|
@ -129,29 +129,29 @@ a.finish.disabled:active,
|
||||||
#roster,
|
#roster,
|
||||||
#manager,
|
#manager,
|
||||||
#install {
|
#install {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#de141414,endColorstr=#de141414);
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#de141414,endColorstr=#de141414);
|
||||||
}
|
}
|
||||||
|
|
||||||
#home .main {
|
#home .main {
|
||||||
background: #141414;
|
background: #141414;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* rgba(20,20,20,0.9) */
|
/* rgba(20,20,20,0.9) */
|
||||||
.popup {
|
.popup {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ed141414,endColorstr=#ed141414);
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ed141414,endColorstr=#ed141414);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* rgba(0,0,0,0.2) */
|
/* rgba(0,0,0,0.2) */
|
||||||
#install-top .step {
|
#install-top .step {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#33000000,endColorstr=#33000000);
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#33000000,endColorstr=#33000000);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* rgba(0,0,0,0.6) */
|
/* rgba(0,0,0,0.6) */
|
||||||
.lock {
|
.lock {
|
||||||
background: url(../images/others/lock.png) repeat !important;
|
background: url(../images/others/lock.png) repeat !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* rgba(0,0,0,0.8) */
|
/* rgba(0,0,0,0.8) */
|
||||||
|
@ -160,20 +160,20 @@ a.finish.disabled:active,
|
||||||
.buddy-infos-subitem,
|
.buddy-infos-subitem,
|
||||||
.buddy-conf-subitem,
|
.buddy-conf-subitem,
|
||||||
.tools-content-subitem {
|
.tools-content-subitem {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#de000000,endColorstr=#de000000);
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#de000000,endColorstr=#de000000);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Fix a fieldset padding bug */
|
/* Fix a fieldset padding bug */
|
||||||
legend {
|
legend {
|
||||||
margin-bottom: 5px !important;
|
margin-bottom: 5px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Fix opacity bugs */
|
/* Fix opacity bugs */
|
||||||
#options .forms.in_background fieldset {
|
#options .forms.in_background fieldset {
|
||||||
filter: alpha(opacity = 50) !important;
|
filter: alpha(opacity = 50) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
a.finish.disabled {
|
a.finish.disabled {
|
||||||
filter: alpha(opacity = 20) !important;
|
filter: alpha(opacity = 20) !important;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,90 +11,90 @@ Author: Valérian Saliou
|
||||||
*/
|
*/
|
||||||
|
|
||||||
.body-images {
|
.body-images {
|
||||||
background-image: url(../images/sprites/background.png);
|
background-image: url(../images/sprites/background.png);
|
||||||
background-repeat: repeat;
|
background-repeat: repeat;
|
||||||
background-color: #93c5fa;
|
background-color: #93c5fa;
|
||||||
}
|
}
|
||||||
|
|
||||||
.install-images {
|
.install-images {
|
||||||
background-image: url(../images/sprites/install.png);
|
background-image: url(../images/sprites/install.png);
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
.home-images {
|
.home-images {
|
||||||
background-image: url(../images/sprites/home.png);
|
background-image: url(../images/sprites/home.png);
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
.browsers-images {
|
.browsers-images {
|
||||||
background-image: url(../images/sprites/browsers.png);
|
background-image: url(../images/sprites/browsers.png);
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
.buttons-images {
|
.buttons-images {
|
||||||
background-image: url(../images/sprites/buttons.png);
|
background-image: url(../images/sprites/buttons.png);
|
||||||
background-repeat: repeat-x;
|
background-repeat: repeat-x;
|
||||||
}
|
}
|
||||||
|
|
||||||
.talk-images {
|
.talk-images {
|
||||||
background-image: url(../images/sprites/talk.png);
|
background-image: url(../images/sprites/talk.png);
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
.smileys-images {
|
.smileys-images {
|
||||||
background-image: url(../images/sprites/smileys.png);
|
background-image: url(../images/sprites/smileys.png);
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
.welcome-images {
|
.welcome-images {
|
||||||
background-image: url(../images/sprites/welcome.png);
|
background-image: url(../images/sprites/welcome.png);
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
.me-images {
|
.me-images {
|
||||||
background-image: url(../images/sprites/me.png);
|
background-image: url(../images/sprites/me.png);
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
.jingle-images {
|
.jingle-images {
|
||||||
background-image: url(../images/sprites/jingle.png);
|
background-image: url(../images/sprites/jingle.png);
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
.manager-images {
|
.manager-images {
|
||||||
background-image: url(../images/sprites/manager.png);
|
background-image: url(../images/sprites/manager.png);
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mobile-images {
|
.mobile-images {
|
||||||
background-image: url(../images/sprites/mobile.png);
|
background-image: url(../images/sprites/mobile.png);
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
.wait-small {
|
.wait-small {
|
||||||
background-image: url(../images/wait/wait-small.gif);
|
background-image: url(../images/wait/wait-small.gif);
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
width: 16px;
|
width: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.wait-medium {
|
.wait-medium {
|
||||||
background-image: url(../images/wait/wait-medium.png);
|
background-image: url(../images/wait/wait-medium.png);
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
height: 24px;
|
height: 24px;
|
||||||
width: 24px;
|
width: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.wait-big {
|
.wait-big {
|
||||||
background-image: url(../images/wait/wait-big.gif);
|
background-image: url(../images/wait/wait-big.gif);
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
height: 30px;
|
height: 30px;
|
||||||
width: 30px;
|
width: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.wait-typing {
|
.wait-typing {
|
||||||
background-image: url(../images/wait/wait-typing.gif);
|
background-image: url(../images/wait/wait-typing.gif);
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
height: 4px;
|
height: 4px;
|
||||||
width: 16px;
|
width: 16px;
|
||||||
}
|
}
|
|
@ -11,234 +11,234 @@ Author: Valérian Saliou
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#inbox .content {
|
#inbox .content {
|
||||||
padding: 10px 0 10px 0;
|
padding: 10px 0 10px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .content p {
|
#inbox .content p {
|
||||||
margin: 3px 10px;
|
margin: 3px 10px;
|
||||||
text-align: justify;
|
text-align: justify;
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .inbox-results {
|
#inbox .inbox-results {
|
||||||
height: 310px;
|
height: 310px;
|
||||||
width: 620px;
|
width: 620px;
|
||||||
margin: -5px 0 0 10px;
|
margin: -5px 0 0 10px;
|
||||||
padding: 6px 0 0 0;
|
padding: 6px 0 0 0;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #inbox .inbox-results {
|
html[dir="rtl"] #inbox .inbox-results {
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .message-unread {
|
#inbox .message-unread {
|
||||||
background-color: #E9F1FD;
|
background-color: #E9F1FD;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .one-message {
|
#inbox .one-message {
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
border-bottom: 1px #b2c7cb solid;
|
border-bottom: 1px #b2c7cb solid;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .message-head {
|
#inbox .message-head {
|
||||||
padding: 6px 0 7px 4px;
|
padding: 6px 0 7px 4px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .message-head:hover {
|
#inbox .message-head:hover {
|
||||||
background-color: #e9f1fd;
|
background-color: #e9f1fd;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .message-head:active {
|
#inbox .message-head:active {
|
||||||
background-color: #f1f6fd;
|
background-color: #f1f6fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .one-message.message-reading,
|
#inbox .one-message.message-reading,
|
||||||
#inbox .one-message.message-reading .message-head {
|
#inbox .one-message.message-reading .message-head {
|
||||||
background-color: #f1f6fd;
|
background-color: #f1f6fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #inbox .one-message a.one-button {
|
html[dir="rtl"] #inbox .one-message a.one-button {
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .avatar-container {
|
#inbox .avatar-container {
|
||||||
float: left;
|
float: left;
|
||||||
width: 40px;
|
width: 40px;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
margin-right: 7px;
|
margin-right: 7px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #inbox .avatar-container {
|
html[dir="rtl"] #inbox .avatar-container {
|
||||||
margin-left: 7px;
|
margin-left: 7px;
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .avatar {
|
#inbox .avatar {
|
||||||
max-width: 40px;
|
max-width: 40px;
|
||||||
max-height: 40px;
|
max-height: 40px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .message-jid,
|
#inbox .message-jid,
|
||||||
#inbox .message-subject {
|
#inbox .message-subject {
|
||||||
float: left;
|
float: left;
|
||||||
margin: 0 2px;
|
margin: 0 2px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #inbox .message-jid,
|
html[dir="rtl"] #inbox .message-jid,
|
||||||
html[dir="rtl"] #inbox .message-subject {
|
html[dir="rtl"] #inbox .message-subject {
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .message-jid {
|
#inbox .message-jid {
|
||||||
width: 165px;
|
width: 165px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .message-subject {
|
#inbox .message-subject {
|
||||||
width: 355px;
|
width: 355px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .message-truncated {
|
#inbox .message-truncated {
|
||||||
color: #42646b;
|
color: #42646b;
|
||||||
font-size: 0.8em;
|
font-size: 0.8em;
|
||||||
margin: 23px 0 0 49px;
|
margin: 23px 0 0 49px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .message-body {
|
#inbox .message-body {
|
||||||
padding: 8px 5px 5px 5px;
|
padding: 8px 5px 5px 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .message-body a {
|
#inbox .message-body a {
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .message-meta {
|
#inbox .message-meta {
|
||||||
margin-top: 6px;
|
margin-top: 6px;
|
||||||
padding: 3px 4px;
|
padding: 3px 4px;
|
||||||
border-top: 1px #b2c7cb dotted;
|
border-top: 1px #b2c7cb dotted;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .message-meta span.date {
|
#inbox .message-meta span.date {
|
||||||
color: #28474e;
|
color: #28474e;
|
||||||
font-size: 0.8em;
|
font-size: 0.8em;
|
||||||
margin: 10px 0 0 4px;
|
margin: 10px 0 0 4px;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .message-meta a {
|
#inbox .message-meta a {
|
||||||
font-size: 0.98em;
|
font-size: 0.98em;
|
||||||
margin: 5px;
|
margin: 5px;
|
||||||
float: right;
|
float: right;
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .inbox-noresults {
|
#inbox .inbox-noresults {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .a-show-messages {
|
#inbox .a-show-messages {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .inbox-new {
|
#inbox .inbox-new {
|
||||||
display: none;
|
display: none;
|
||||||
height: 300px;
|
height: 300px;
|
||||||
width: 620px;
|
width: 620px;
|
||||||
margin: -5px 0 0 10px;
|
margin: -5px 0 0 10px;
|
||||||
padding: 16px 0 0 0;
|
padding: 16px 0 0 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .inbox-new-block {
|
#inbox .inbox-new-block {
|
||||||
border-top: 1px #686868 dotted;
|
border-top: 1px #686868 dotted;
|
||||||
padding-top: 9px;
|
padding-top: 9px;
|
||||||
min-height: 32px;
|
min-height: 32px;
|
||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .inbox-new-text {
|
#inbox .inbox-new-text {
|
||||||
float: left;
|
float: left;
|
||||||
width: 100px;
|
width: 100px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .inbox-new-textarea {
|
#inbox .inbox-new-textarea {
|
||||||
width: 460px;
|
width: 460px;
|
||||||
height: 109px;
|
height: 109px;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .inbox-new input {
|
#inbox .inbox-new input {
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #inbox .inbox-new-text,
|
html[dir="rtl"] #inbox .inbox-new-text,
|
||||||
html[dir="rtl"] #inbox .inbox-new-textarea,
|
html[dir="rtl"] #inbox .inbox-new-textarea,
|
||||||
html[dir="rtl"] #inbox .inbox-new input {
|
html[dir="rtl"] #inbox .inbox-new input {
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #inbox .inbox-new-text {
|
html[dir="rtl"] #inbox .inbox-new-text {
|
||||||
margin-right: 20px;
|
margin-right: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #inbox .inbox-new input {
|
html[dir="rtl"] #inbox .inbox-new input {
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .inbox-new-to ul {
|
#inbox .inbox-new-to ul {
|
||||||
width: 264px;
|
width: 264px;
|
||||||
max-height: 168px;
|
max-height: 168px;
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
left: 120px;
|
left: 120px;
|
||||||
top: 31px;
|
top: 31px;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #inbox .inbox-new-to ul {
|
html[dir="rtl"] #inbox .inbox-new-to ul {
|
||||||
left: auto;
|
left: auto;
|
||||||
right: 130px;
|
right: 130px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .inbox-new-to-input {
|
#inbox .inbox-new-to-input {
|
||||||
width: 260px;
|
width: 260px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .inbox-new-subject-input {
|
#inbox .inbox-new-subject-input {
|
||||||
width: 380px;
|
width: 380px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .inbox-new-file a {
|
#inbox .inbox-new-file a {
|
||||||
display: block;
|
display: block;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .inbox-new-file a.file {
|
#inbox .inbox-new-file a.file {
|
||||||
font-size: 0.85em;
|
font-size: 0.85em;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
max-width: 320px;
|
max-width: 320px;
|
||||||
margin: 3px 0 15px 013px;
|
margin: 3px 0 15px 013px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .inbox-new-file a.one-button {
|
#inbox .inbox-new-file a.one-button {
|
||||||
font-size: 0.85em;
|
font-size: 0.85em;
|
||||||
margin: -2px 0 0 25px;
|
margin: -2px 0 0 25px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inbox .inbox-new-send a {
|
#inbox .inbox-new-send a {
|
||||||
font-size: 0.85em;
|
font-size: 0.85em;
|
||||||
float: right;
|
float: right;
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #inbox .inbox-new-send a {
|
html[dir="rtl"] #inbox .inbox-new-send a {
|
||||||
margin-right: 18px;
|
margin-right: 18px;
|
||||||
}
|
}
|
|
@ -11,294 +11,294 @@ Author: Valérian Saliou
|
||||||
*/
|
*/
|
||||||
|
|
||||||
body {
|
body {
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install {
|
#install {
|
||||||
background-color: rgb(20,20,20);
|
background-color: rgb(20,20,20);
|
||||||
background-color: rgba(20,20,20,0.85);
|
background-color: rgba(20,20,20,0.85);
|
||||||
width: 800px;
|
width: 800px;
|
||||||
margin: 35px auto;
|
margin: 35px auto;
|
||||||
padding-bottom: 17px;
|
padding-bottom: 17px;
|
||||||
-moz-border-radius: 6px;
|
-moz-border-radius: 6px;
|
||||||
-webkit-border-radius: 6px;
|
-webkit-border-radius: 6px;
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
-moz-box-shadow: 0 0 35px #5c5c5c;
|
-moz-box-shadow: 0 0 35px #5c5c5c;
|
||||||
-webkit-box-shadow: 0 0 35px #5c5c5c;
|
-webkit-box-shadow: 0 0 35px #5c5c5c;
|
||||||
box-shadow: 0 0 35px #5c5c5c;
|
box-shadow: 0 0 35px #5c5c5c;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install a {
|
#install a {
|
||||||
color: black;
|
color: black;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install .clear {
|
#install .clear {
|
||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install fieldset {
|
#install fieldset {
|
||||||
border: 1px solid black;
|
border: 1px solid black;
|
||||||
margin: 22px 0 15px 0;
|
margin: 22px 0 15px 0;
|
||||||
padding: 7px 2px 5px 2px;
|
padding: 7px 2px 5px 2px;
|
||||||
-moz-border-radius: 3px;
|
-moz-border-radius: 3px;
|
||||||
-webkit-border-radius: 3px;
|
-webkit-border-radius: 3px;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install legend {
|
#install legend {
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
margin: 0 0 0 15px;
|
margin: 0 0 0 15px;
|
||||||
padding: 0 2px;
|
padding: 0 2px;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install label {
|
#install label {
|
||||||
width: 200px;
|
width: 200px;
|
||||||
display: block;
|
display: block;
|
||||||
float: left;
|
float: left;
|
||||||
clear: both;
|
clear: both;
|
||||||
margin: 0 0 9px 12px;
|
margin: 0 0 9px 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #install label {
|
html[dir="rtl"] #install label {
|
||||||
margin-right: 12px;
|
margin-right: 12px;
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install input,
|
#install input,
|
||||||
#install select {
|
#install select {
|
||||||
float: left;
|
float: left;
|
||||||
margin-bottom: 5px;
|
margin-bottom: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #install input,
|
html[dir="rtl"] #install input,
|
||||||
html[dir="rtl"] #install select {
|
html[dir="rtl"] #install select {
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install input[type="text"],
|
#install input[type="text"],
|
||||||
#install input[type="url"],
|
#install input[type="url"],
|
||||||
#install input[type="password"] {
|
#install input[type="password"] {
|
||||||
margin-top: -2px;
|
margin-top: -2px;
|
||||||
padding: 3px;
|
padding: 3px;
|
||||||
font-size: 0.95em;
|
font-size: 0.95em;
|
||||||
min-width: 220px;
|
min-width: 220px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install input.icon {
|
#install input.icon {
|
||||||
padding-left: 24px;
|
padding-left: 24px;
|
||||||
min-width: 199px;
|
min-width: 199px;
|
||||||
max-height: 18px;
|
max-height: 18px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install input.icon#user_name {
|
#install input.icon#user_name {
|
||||||
background-position: 4px -204px;
|
background-position: 4px -204px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install input.icon#user_password {
|
#install input.icon#user_password {
|
||||||
background-position: 4px -226px;
|
background-position: 4px -226px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install input.icon#user_repassword {
|
#install input.icon#user_repassword {
|
||||||
background-position: 4px -248px;
|
background-position: 4px -248px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install-top {
|
#install-top {
|
||||||
padding: 30px 45px;
|
padding: 30px 45px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install-top .logo {
|
#install-top .logo {
|
||||||
background-position: 0 0;
|
background-position: 0 0;
|
||||||
min-width: 88px;
|
min-width: 88px;
|
||||||
height: 36px;
|
height: 36px;
|
||||||
padding: 32px 0 0 66px;
|
padding: 32px 0 0 66px;
|
||||||
font-size: 32px;
|
font-size: 32px;
|
||||||
color: white;
|
color: white;
|
||||||
text-transform: lowercase;
|
text-transform: lowercase;
|
||||||
float: left;
|
float: left;
|
||||||
text-shadow: 0 1px 1px black;
|
text-shadow: 0 1px 1px black;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install-top .step {
|
#install-top .step {
|
||||||
background-color: rgb(0,0,0);
|
background-color: rgb(0,0,0);
|
||||||
background-color: rgba(0,0,0,0.2);
|
background-color: rgba(0,0,0,0.2);
|
||||||
border: 2px solid white;
|
border: 2px solid white;
|
||||||
padding: 6px 21px;
|
padding: 6px 21px;
|
||||||
font-size: 2.7em;
|
font-size: 2.7em;
|
||||||
text-shadow: 0 1px 1px black;
|
text-shadow: 0 1px 1px black;
|
||||||
float: right;
|
float: right;
|
||||||
-moz-border-radius: 40px;
|
-moz-border-radius: 40px;
|
||||||
-webkit-border-radius: 40px;
|
-webkit-border-radius: 40px;
|
||||||
border-radius: 40px;
|
border-radius: 40px;
|
||||||
-moz-box-shadow: 0 0 10px #202020;
|
-moz-box-shadow: 0 0 10px #202020;
|
||||||
-webkit-box-shadow: 0 0 10px #202020;
|
-webkit-box-shadow: 0 0 10px #202020;
|
||||||
box-shadow: 0 0 10px #202020;
|
box-shadow: 0 0 10px #202020;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install-top .step span {
|
#install-top .step span {
|
||||||
font-size: 0.6em;
|
font-size: 0.6em;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install-content {
|
#install-content {
|
||||||
background: #e4eef9;
|
background: #e4eef9;
|
||||||
background: -moz-linear-gradient(top, #e4eef9, #d0e5fa);
|
background: -moz-linear-gradient(top, #e4eef9, #d0e5fa);
|
||||||
background: -webkit-gradient(linear, left top, left bottom, from(#e4eef9), to(#d0e5fa));
|
background: -webkit-gradient(linear, left top, left bottom, from(#e4eef9), to(#d0e5fa));
|
||||||
background: -webkit-linear-gradient(top, #e4eef9 0%, #d0e5fa 100%);
|
background: -webkit-linear-gradient(top, #e4eef9 0%, #d0e5fa 100%);
|
||||||
background: -o-linear-gradient(top, #e4eef9 0%, #d0e5fa 100%);
|
background: -o-linear-gradient(top, #e4eef9 0%, #d0e5fa 100%);
|
||||||
color: black;
|
color: black;
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
margin: 0 10px;
|
margin: 0 10px;
|
||||||
padding: 20px 24px;
|
padding: 20px 24px;
|
||||||
min-height: 260px;
|
min-height: 260px;
|
||||||
clear: both;
|
clear: both;
|
||||||
right: 10px;
|
right: 10px;
|
||||||
-moz-border-radius: 3px;
|
-moz-border-radius: 3px;
|
||||||
-webkit-border-radius: 3px;
|
-webkit-border-radius: 3px;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
-moz-box-shadow: 0 0 20px #202020;
|
-moz-box-shadow: 0 0 20px #202020;
|
||||||
-webkit-box-shadow: 0 0 20px #202020;
|
-webkit-box-shadow: 0 0 20px #202020;
|
||||||
box-shadow: 0 0 20px #202020;
|
box-shadow: 0 0 20px #202020;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install-content h3 {
|
#install-content h3 {
|
||||||
padding-left: 24px;
|
padding-left: 24px;
|
||||||
margin-bottom: 15px;
|
margin-bottom: 15px;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #install-content h3 {
|
html[dir="rtl"] #install-content h3 {
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install-content h3.start {
|
#install-content h3.start {
|
||||||
background-position: 0 -73px;
|
background-position: 0 -73px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install-content h3.storage {
|
#install-content h3.storage {
|
||||||
background-position: 0 -95px;
|
background-position: 0 -95px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install-content h3.account {
|
#install-content h3.account {
|
||||||
background-position: 0 -117px;
|
background-position: 0 -117px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install-content h3.main {
|
#install-content h3.main {
|
||||||
background-position: 0 -139px;
|
background-position: 0 -139px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install-content h3.hosts {
|
#install-content h3.hosts {
|
||||||
background-position: 0 -161px;
|
background-position: 0 -161px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install-content h3.services {
|
#install-content h3.services {
|
||||||
background-position: 0 -183px;
|
background-position: 0 -183px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install-content p {
|
#install-content p {
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install-content .info {
|
#install-content .info {
|
||||||
color: black;
|
color: black;
|
||||||
border-width: 1px;
|
border-width: 1px;
|
||||||
border-style: dashed;
|
border-style: dashed;
|
||||||
padding: 6px 8px;
|
padding: 6px 8px;
|
||||||
display: block;
|
display: block;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install-content .info.smallspace {
|
#install-content .info.smallspace {
|
||||||
margin: 14px 0 10px 0;
|
margin: 14px 0 10px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install-content .info.bigspace {
|
#install-content .info.bigspace {
|
||||||
margin: 35px 0 20px 0;
|
margin: 35px 0 20px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install-content .info.first {
|
#install-content .info.first {
|
||||||
margin-top: 28px;
|
margin-top: 28px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install-content .info.last {
|
#install-content .info.last {
|
||||||
margin-bottom: 28px;
|
margin-bottom: 28px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install-content .info.neutral {
|
#install-content .info.neutral {
|
||||||
background-color: #f0f19d;
|
background-color: #f0f19d;
|
||||||
border-color: #b3ad4f;
|
border-color: #b3ad4f;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install-content a.info.neutral:hover,
|
#install-content a.info.neutral:hover,
|
||||||
#install-content a.info.neutral:focus {
|
#install-content a.info.neutral:focus {
|
||||||
background-color: #eced96;
|
background-color: #eced96;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install-content a.info.neutral:active {
|
#install-content a.info.neutral:active {
|
||||||
background-color: #e9ea93;
|
background-color: #e9ea93;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install-content .info.success {
|
#install-content .info.success {
|
||||||
background-color: #a8dca9;
|
background-color: #a8dca9;
|
||||||
border-color: #5e9f5f;
|
border-color: #5e9f5f;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install-content a.info.success:hover,
|
#install-content a.info.success:hover,
|
||||||
#install-content a.info.success:focus {
|
#install-content a.info.success:focus {
|
||||||
background-color: #a0d5a1;
|
background-color: #a0d5a1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install-content a.info.success:active {
|
#install-content a.info.success:active {
|
||||||
background-color: #9ad09b;
|
background-color: #9ad09b;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install-content .info.fail {
|
#install-content .info.fail {
|
||||||
background-color: #f19d9d;
|
background-color: #f19d9d;
|
||||||
border-color: #b34f4f;
|
border-color: #b34f4f;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install-content ol {
|
#install-content ol {
|
||||||
margin: 20px 30px;
|
margin: 20px 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install-content ol li {
|
#install-content ol li {
|
||||||
margin-bottom: 1px;
|
margin-bottom: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install-buttons {
|
#install-buttons {
|
||||||
margin-top: 22px;
|
margin-top: 22px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install-buttons input {
|
#install-buttons input {
|
||||||
border: 1px solid white;
|
border: 1px solid white;
|
||||||
background-color: rgb(255,255,255);
|
background-color: rgb(255,255,255);
|
||||||
background-color: rgba(255,255,255,0.1);
|
background-color: rgba(255,255,255,0.1);
|
||||||
color: white;
|
color: white;
|
||||||
padding: 4px 8px;
|
padding: 4px 8px;
|
||||||
margin-right: 20px;
|
margin-right: 20px;
|
||||||
text-shadow: 0 1px 1px black;
|
text-shadow: 0 1px 1px black;
|
||||||
float: right;
|
float: right;
|
||||||
-moz-border-radius: 3px;
|
-moz-border-radius: 3px;
|
||||||
-webkit-border-radius: 3px;
|
-webkit-border-radius: 3px;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
-moz-box-shadow: 0 0 5px #202020;
|
-moz-box-shadow: 0 0 5px #202020;
|
||||||
-webkit-box-shadow: 0 0 5px #202020;
|
-webkit-box-shadow: 0 0 5px #202020;
|
||||||
box-shadow: 0 0 5px #202020;
|
box-shadow: 0 0 5px #202020;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install-buttons input:hover,
|
#install-buttons input:hover,
|
||||||
#install-buttons input:focus {
|
#install-buttons input:focus {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
background-color: rgb(255,255,255);
|
background-color: rgb(255,255,255);
|
||||||
background-color: rgba(255,255,255,0.2);
|
background-color: rgba(255,255,255,0.2);
|
||||||
-moz-box-shadow: 0 0 15px #202020;
|
-moz-box-shadow: 0 0 15px #202020;
|
||||||
-webkit-box-shadow: 0 0 15px #202020;
|
-webkit-box-shadow: 0 0 15px #202020;
|
||||||
box-shadow: 0 0 15px #202020;
|
box-shadow: 0 0 15px #202020;
|
||||||
}
|
}
|
||||||
|
|
||||||
#install-buttons input:active {
|
#install-buttons input:active {
|
||||||
background-color: rgb(255,255,255);
|
background-color: rgb(255,255,255);
|
||||||
background-color: rgba(255,255,255,0.3);
|
background-color: rgba(255,255,255,0.3);
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,27 +11,27 @@ Author: Valérian Saliou
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#integratebox .top {
|
#integratebox .top {
|
||||||
height: 40px;
|
height: 40px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#integratebox .content {
|
#integratebox .content {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
height: 385px;
|
height: 385px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#integratebox .one-media img {
|
#integratebox .one-media img {
|
||||||
max-height: 385px;
|
max-height: 385px;
|
||||||
max-width: 640px;
|
max-width: 640px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#integratebox .one-media a img {
|
#integratebox .one-media a img {
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#integratebox .one-media audio {
|
#integratebox .one-media audio {
|
||||||
margin-top: 170px;
|
margin-top: 170px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#integratebox .bottom {
|
#integratebox .bottom {
|
||||||
left: 10px;
|
left: 10px;
|
||||||
}
|
}
|
|
@ -16,32 +16,32 @@ Author: Camaran
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#addToHomeScreen {
|
#addToHomeScreen {
|
||||||
z-index:9999;
|
z-index:9999;
|
||||||
-webkit-user-select:none;
|
-webkit-user-select:none;
|
||||||
user-select:none;
|
user-select:none;
|
||||||
-webkit-box-sizing:border-box;
|
-webkit-box-sizing:border-box;
|
||||||
box-sizing:border-box;
|
box-sizing:border-box;
|
||||||
-webkit-touch-callout:none;
|
-webkit-touch-callout:none;
|
||||||
touch-callout:none;
|
touch-callout:none;
|
||||||
width:240px;
|
width:240px;
|
||||||
font-size:15px;
|
font-size:15px;
|
||||||
padding:12px 14px;
|
padding:12px 14px;
|
||||||
text-align:left;
|
text-align:left;
|
||||||
font-family:helvetica;
|
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));
|
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;
|
border:1px solid #505050;
|
||||||
-webkit-border-radius:8px;
|
-webkit-border-radius:8px;
|
||||||
-webkit-background-clip:padding-box;
|
-webkit-background-clip:padding-box;
|
||||||
color:#333;
|
color:#333;
|
||||||
text-shadow:0 1px 0 rgba(255,255,255,0.75);
|
text-shadow:0 1px 0 rgba(255,255,255,0.75);
|
||||||
line-height:130%;
|
line-height:130%;
|
||||||
-webkit-box-shadow:0 0 4px rgba(0,0,0,0.5);
|
-webkit-box-shadow:0 0 4px rgba(0,0,0,0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
#addToHomeScreen.addToHomeIpad {
|
#addToHomeScreen.addToHomeIpad {
|
||||||
width:268px;
|
width:268px;
|
||||||
font-size:18px;
|
font-size:18px;
|
||||||
padding:14px;
|
padding:14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -50,13 +50,13 @@ Author: Camaran
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#addToHomeScreen.addToHomeWide {
|
#addToHomeScreen.addToHomeWide {
|
||||||
width:296px;
|
width:296px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#addToHomeScreen.addToHomeIpad.addToHomeWide {
|
#addToHomeScreen.addToHomeIpad.addToHomeWide {
|
||||||
width:320px;
|
width:320px;
|
||||||
font-size:18px;
|
font-size:18px;
|
||||||
padding:14px;
|
padding:14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -65,17 +65,17 @@ Author: Camaran
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#addToHomeScreen .addToHomeArrow {
|
#addToHomeScreen .addToHomeArrow {
|
||||||
position:absolute;
|
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));
|
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-width:0 1px 1px 0;
|
||||||
border-style:solid;
|
border-style:solid;
|
||||||
border-color:#505050;
|
border-color:#505050;
|
||||||
width:16px; height:16px;
|
width:16px; height:16px;
|
||||||
-webkit-transform:rotateZ(45deg);
|
-webkit-transform:rotateZ(45deg);
|
||||||
bottom:-9px; left:50%;
|
bottom:-9px; left:50%;
|
||||||
margin-left:-8px;
|
margin-left:-8px;
|
||||||
-webkit-box-shadow:inset -1px -1px 0 #a9a9a9;
|
-webkit-box-shadow:inset -1px -1px 0 #a9a9a9;
|
||||||
-webkit-border-bottom-right-radius:2px;
|
-webkit-border-bottom-right-radius:2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -85,10 +85,10 @@ Author: Camaran
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#addToHomeScreen.addToHomeIpad .addToHomeArrow {
|
#addToHomeScreen.addToHomeIpad .addToHomeArrow {
|
||||||
-webkit-transform:rotateZ(-135deg);
|
-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));
|
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;
|
-webkit-box-shadow:inset -1px -1px 0 #fff;
|
||||||
top:-9px; bottom:auto; left:50%;
|
top:-9px; bottom:auto; left:50%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -98,19 +98,19 @@ Author: Camaran
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#addToHomeScreen .addToHomeClose {
|
#addToHomeScreen .addToHomeClose {
|
||||||
-webkit-box-sizing:border-box;
|
-webkit-box-sizing:border-box;
|
||||||
position:absolute;
|
position:absolute;
|
||||||
right:4px;
|
right:4px;
|
||||||
top:4px;
|
top:4px;
|
||||||
width:18px;
|
width:18px;
|
||||||
height:18px; line-height:14px;
|
height:18px; line-height:14px;
|
||||||
text-align:center;
|
text-align:center;
|
||||||
text-indent:1px;
|
text-indent:1px;
|
||||||
-webkit-border-radius:9px;
|
-webkit-border-radius:9px;
|
||||||
background:rgba(0,0,0,0.12);
|
background:rgba(0,0,0,0.12);
|
||||||
color:#707070;
|
color:#707070;
|
||||||
-webkit-box-shadow:0 1px 0 #fff;
|
-webkit-box-shadow:0 1px 0 #fff;
|
||||||
font-size:16px;
|
font-size:16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -120,8 +120,8 @@ Author: Camaran
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#addToHomeScreen .addToHomePlus {
|
#addToHomeScreen .addToHomePlus {
|
||||||
font-weight:bold;
|
font-weight:bold;
|
||||||
font-size:1.3em;
|
font-size:1.3em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -131,20 +131,20 @@ Author: Camaran
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#addToHomeScreen .addToHomeShare {
|
#addToHomeScreen .addToHomeShare {
|
||||||
display:inline-block;
|
display:inline-block;
|
||||||
width:18px;
|
width:18px;
|
||||||
height:15px;
|
height:15px;
|
||||||
background-repeat:no-repeat;
|
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-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;
|
background-size:18px 15px;
|
||||||
text-indent:-9999em;
|
text-indent:-9999em;
|
||||||
overflow:hidden;
|
overflow:hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
#addToHomeScreen .addToHomeShare.addToHomeShareOS7 {
|
#addToHomeScreen .addToHomeShare.addToHomeShareOS7 {
|
||||||
width:11px;
|
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-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;
|
background-size:11px 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -153,20 +153,20 @@ Author: Camaran
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#addToHomeScreen .addToHomeTouchIcon {
|
#addToHomeScreen .addToHomeTouchIcon {
|
||||||
display:block;
|
display:block;
|
||||||
float:left;
|
float:left;
|
||||||
-webkit-border-radius:6px;
|
-webkit-border-radius:6px;
|
||||||
border-radius:6px;
|
border-radius:6px;
|
||||||
-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.5),
|
-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.5),
|
||||||
inset 0 0 2px rgba(255,255,255,0.9);
|
inset 0 0 2px rgba(255,255,255,0.9);
|
||||||
box-shadow:0 1px 3px rgba(0,0,0,0.5),
|
box-shadow:0 1px 3px rgba(0,0,0,0.5),
|
||||||
inset 0 0 2px rgba(255,255,255,0.9);
|
inset 0 0 2px rgba(255,255,255,0.9);
|
||||||
background-repeat:no-repeat;
|
background-repeat:no-repeat;
|
||||||
width:57px; height:57px;
|
width:57px; height:57px;
|
||||||
-webkit-background-size:57px 57px;
|
-webkit-background-size:57px 57px;
|
||||||
background-size:57px 57px;
|
background-size:57px 57px;
|
||||||
margin:0 12px 0 0;
|
margin:0 12px 0 0;
|
||||||
border:1px solid #333;
|
border:1px solid #333;
|
||||||
-webkit-background-clip:padding-box;
|
-webkit-background-clip:padding-box;
|
||||||
background-clip:padding-box;
|
background-clip:padding-box;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,122 +11,122 @@ Author: Valérian Saliou
|
||||||
*/
|
*/
|
||||||
|
|
||||||
* {
|
* {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
font: normal 14.6px 'PT Sans', sans-serif;
|
font: normal 14.6px 'PT Sans', sans-serif;
|
||||||
text-shadow: 0 0 5px white;
|
text-shadow: 0 0 5px white;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
margin-bottom: 15px;
|
margin-bottom: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
color: black;
|
color: black;
|
||||||
outline-style: none;
|
outline-style: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
a:hover,
|
a:hover,
|
||||||
a:focus {
|
a:focus {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
legend {
|
legend {
|
||||||
color: black;
|
color: black;
|
||||||
}
|
}
|
||||||
|
|
||||||
input,
|
input,
|
||||||
textarea {
|
textarea {
|
||||||
background-color: white;
|
background-color: white;
|
||||||
border: 1px solid #636363;
|
border: 1px solid #636363;
|
||||||
font-size: 0.95em;
|
font-size: 0.95em;
|
||||||
padding: 2px;
|
padding: 2px;
|
||||||
outline-style: none;
|
outline-style: none;
|
||||||
-moz-border-radius: 2px;
|
-moz-border-radius: 2px;
|
||||||
-webkit-border-radius: 2px;
|
-webkit-border-radius: 2px;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
-moz-box-shadow: inset 0 3px 10px #dcdcdc;
|
-moz-box-shadow: inset 0 3px 10px #dcdcdc;
|
||||||
-webkit-box-shadow: inset 0 3px 10px #dcdcdc;
|
-webkit-box-shadow: inset 0 3px 10px #dcdcdc;
|
||||||
box-shadow: inset 0 3px 10px #dcdcdc;
|
box-shadow: inset 0 3px 10px #dcdcdc;
|
||||||
}
|
}
|
||||||
|
|
||||||
textarea {
|
textarea {
|
||||||
font-size: 1.1em;
|
font-size: 1.1em;
|
||||||
resize: none;
|
resize: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
input:focus,
|
input:focus,
|
||||||
input[type="submit"]:hover,
|
input[type="submit"]:hover,
|
||||||
input[type="reset"]:hover,
|
input[type="reset"]:hover,
|
||||||
textarea:focus {
|
textarea:focus {
|
||||||
border: 1px solid #e1a014;
|
border: 1px solid #e1a014;
|
||||||
-moz-box-shadow: inset 0 3px 10px #edd9bc;
|
-moz-box-shadow: inset 0 3px 10px #edd9bc;
|
||||||
-webkit-box-shadow: inset 0 3px 10px #edd9bc;
|
-webkit-box-shadow: inset 0 3px 10px #edd9bc;
|
||||||
box-shadow: inset 0 3px 10px #edd9bc;
|
box-shadow: inset 0 3px 10px #edd9bc;
|
||||||
}
|
}
|
||||||
|
|
||||||
input[type="submit"],
|
input[type="submit"],
|
||||||
input[type="reset"] {
|
input[type="reset"] {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
input[type="submit"]:active,
|
input[type="submit"]:active,
|
||||||
input[type="reset"]:active {
|
input[type="reset"]:active {
|
||||||
-moz-box-shadow: inset 0 3px 15px #e1a753;
|
-moz-box-shadow: inset 0 3px 15px #e1a753;
|
||||||
-webkit-box-shadow: inset 0 3px 15px #e1a753;
|
-webkit-box-shadow: inset 0 3px 15px #e1a753;
|
||||||
box-shadow: inset 0 3px 15px #e1a753;
|
box-shadow: inset 0 3px 15px #e1a753;
|
||||||
}
|
}
|
||||||
|
|
||||||
input[disabled],
|
input[disabled],
|
||||||
textarea[disabled] {
|
textarea[disabled] {
|
||||||
background-color: #f3f3f3;
|
background-color: #f3f3f3;
|
||||||
border: 1px solid #989898;
|
border: 1px solid #989898;
|
||||||
}
|
}
|
||||||
|
|
||||||
input:placeholder {
|
input:placeholder {
|
||||||
color: #78868a !important;
|
color: #78868a !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
input:-moz-placeholder {
|
input:-moz-placeholder {
|
||||||
color: #78868a !important;
|
color: #78868a !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
input::-webkit-input-placeholder {
|
input::-webkit-input-placeholder {
|
||||||
color: #78868a !important;
|
color: #78868a !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
input.placeholder {
|
input.placeholder {
|
||||||
color: #78868a !important;
|
color: #78868a !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
input[type="checkbox"] {
|
input[type="checkbox"] {
|
||||||
margin-top: 2px;
|
margin-top: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
input[type="checkbox"],
|
input[type="checkbox"],
|
||||||
input[type="radio"] {
|
input[type="radio"] {
|
||||||
background: transparent none !important;
|
background: transparent none !important;
|
||||||
border: 0 none !important;
|
border: 0 none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.please-complete,
|
.please-complete,
|
||||||
.please-complete:hover,
|
.please-complete:hover,
|
||||||
.please-complete:focus {
|
.please-complete:focus {
|
||||||
border: 1px #ac2525 solid !important;
|
border: 1px #ac2525 solid !important;
|
||||||
-moz-box-shadow: inset 0 3px 10px #f39c9c !important;
|
-moz-box-shadow: inset 0 3px 10px #f39c9c !important;
|
||||||
-webkit-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;
|
box-shadow: inset 0 3px 10px #f39c9c !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.hidden {
|
.hidden {
|
||||||
display: none !important;
|
display: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.clear {
|
.clear {
|
||||||
clear: both !important;
|
clear: both !important;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,602 +11,602 @@ Author: Valérian Saliou
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#manager {
|
#manager {
|
||||||
background-color: rgb(20,20,20);
|
background-color: rgb(20,20,20);
|
||||||
background-color: rgba(20,20,20,0.85);
|
background-color: rgba(20,20,20,0.85);
|
||||||
width: 945px;
|
width: 945px;
|
||||||
margin: 0 auto 25px;
|
margin: 0 auto 25px;
|
||||||
padding-bottom: 17px;
|
padding-bottom: 17px;
|
||||||
-moz-border-radius-bottomleft: 4px;
|
-moz-border-radius-bottomleft: 4px;
|
||||||
-moz-border-radius-bottomright: 4px;
|
-moz-border-radius-bottomright: 4px;
|
||||||
-webkit-border-bottom-left-radius: 4px;
|
-webkit-border-bottom-left-radius: 4px;
|
||||||
-webkit-border-bottom-right-radius: 4px;
|
-webkit-border-bottom-right-radius: 4px;
|
||||||
border-bottom-left-radius: 4px;
|
border-bottom-left-radius: 4px;
|
||||||
border-bottom-right-radius: 4px;
|
border-bottom-right-radius: 4px;
|
||||||
-moz-box-shadow: 0 0 35px #5c5c5c;
|
-moz-box-shadow: 0 0 35px #5c5c5c;
|
||||||
-webkit-box-shadow: 0 0 35px #5c5c5c;
|
-webkit-box-shadow: 0 0 35px #5c5c5c;
|
||||||
box-shadow: 0 0 35px #5c5c5c;
|
box-shadow: 0 0 35px #5c5c5c;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager a {
|
#manager a {
|
||||||
color: black;
|
color: black;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager .clear {
|
#manager .clear {
|
||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager fieldset {
|
#manager fieldset {
|
||||||
border: 1px solid black;
|
border: 1px solid black;
|
||||||
margin: 22px 0 15px 0;
|
margin: 22px 0 15px 0;
|
||||||
padding: 7px 2px 5px 2px;
|
padding: 7px 2px 5px 2px;
|
||||||
-moz-border-radius: 3px;
|
-moz-border-radius: 3px;
|
||||||
-webkit-border-radius: 3px;
|
-webkit-border-radius: 3px;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager legend {
|
#manager legend {
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
margin: 0 0 0 15px;
|
margin: 0 0 0 15px;
|
||||||
padding: 0 2px;
|
padding: 0 2px;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager label {
|
#manager label {
|
||||||
width: 200px;
|
width: 200px;
|
||||||
display: block;
|
display: block;
|
||||||
float: left;
|
float: left;
|
||||||
clear: both;
|
clear: both;
|
||||||
margin: 0 0 9px 12px;
|
margin: 0 0 9px 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #manager label {
|
html[dir="rtl"] #manager label {
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
margin-right: 12px;
|
margin-right: 12px;
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager label.master {
|
#manager label.master {
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager input,
|
#manager input,
|
||||||
#manager select {
|
#manager select {
|
||||||
float: left;
|
float: left;
|
||||||
margin-bottom: 5px;
|
margin-bottom: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #manager input,
|
html[dir="rtl"] #manager input,
|
||||||
html[dir="rtl"] #manager select {
|
html[dir="rtl"] #manager select {
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager input[type="radio"] {
|
#manager input[type="radio"] {
|
||||||
margin: 2px 8px 5px 0;
|
margin: 2px 8px 5px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #manager input[type="radio"] {
|
html[dir="rtl"] #manager input[type="radio"] {
|
||||||
margin-right: 0;
|
margin-right: 0;
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager input[type="text"],
|
#manager input[type="text"],
|
||||||
#manager input[type="url"],
|
#manager input[type="url"],
|
||||||
#manager input[type="password"],
|
#manager input[type="password"],
|
||||||
#manager select {
|
#manager select {
|
||||||
margin-top: -2px;
|
margin-top: -2px;
|
||||||
font-size: 0.95em;
|
font-size: 0.95em;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager input[type="text"],
|
#manager input[type="text"],
|
||||||
#manager input[type="url"],
|
#manager input[type="url"],
|
||||||
#manager input[type="password"] {
|
#manager input[type="password"] {
|
||||||
padding: 3px;
|
padding: 3px;
|
||||||
min-width: 220px;
|
min-width: 220px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager input.icon {
|
#manager input.icon {
|
||||||
padding-left: 24px;
|
padding-left: 24px;
|
||||||
min-width: 199px;
|
min-width: 199px;
|
||||||
max-height: 18px;
|
max-height: 18px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager input.icon#admin_name {
|
#manager input.icon#admin_name {
|
||||||
background-position: 4px -510px;
|
background-position: 4px -510px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager input.icon#admin_password,
|
#manager input.icon#admin_password,
|
||||||
#manager input.icon#user_repassword {
|
#manager input.icon#user_repassword {
|
||||||
background-position: 4px -532px;
|
background-position: 4px -532px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager input.icon#user_name,
|
#manager input.icon#user_name,
|
||||||
#manager input.icon#music_artist {
|
#manager input.icon#music_artist {
|
||||||
background-position: 4px -554px;
|
background-position: 4px -554px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager input.icon#user_password {
|
#manager input.icon#user_password {
|
||||||
background-position: 4px -576px;
|
background-position: 4px -576px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager input.icon#music_title {
|
#manager input.icon#music_title {
|
||||||
background-position: 4px -598px;
|
background-position: 4px -598px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager input.icon#music_album {
|
#manager input.icon#music_album {
|
||||||
background-position: 4px -620px;
|
background-position: 4px -620px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager input.icon#background_image_color,
|
#manager input.icon#background_image_color,
|
||||||
#manager input.icon#background_color_color {
|
#manager input.icon#background_color_color {
|
||||||
background-position: 4px -641px;
|
background-position: 4px -641px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager select {
|
#manager select {
|
||||||
min-width: 160px;
|
min-width: 160px;
|
||||||
max-width: 230px;
|
max-width: 230px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-top {
|
#manager-top {
|
||||||
padding: 25px 45px 30px;
|
padding: 25px 45px 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-top .logo {
|
#manager-top .logo {
|
||||||
background-position: 0 0;
|
background-position: 0 0;
|
||||||
min-width: 89px;
|
min-width: 89px;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
padding: 28px 0 0 65px;
|
padding: 28px 0 0 65px;
|
||||||
font-size: 32px;
|
font-size: 32px;
|
||||||
color: white;
|
color: white;
|
||||||
text-transform: lowercase;
|
text-transform: lowercase;
|
||||||
float: left;
|
float: left;
|
||||||
text-shadow: 0 1px 1px black;
|
text-shadow: 0 1px 1px black;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-top .meta {
|
#manager-top .meta {
|
||||||
background-color: #e0eaec;
|
background-color: #e0eaec;
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
padding: 12px 7px 12px 14px;
|
padding: 12px 7px 12px 14px;
|
||||||
float: right;
|
float: right;
|
||||||
-moz-border-radius: 3px;
|
-moz-border-radius: 3px;
|
||||||
-webkit-border-radius: 3px;
|
-webkit-border-radius: 3px;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
-moz-box-shadow: 0 0 10px #202020;
|
-moz-box-shadow: 0 0 10px #202020;
|
||||||
-webkit-box-shadow: 0 0 10px #202020;
|
-webkit-box-shadow: 0 0 10px #202020;
|
||||||
box-shadow: 0 0 10px #202020;
|
box-shadow: 0 0 10px #202020;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #manager-top .meta {
|
html[dir="rtl"] #manager-top .meta {
|
||||||
padding-left: 7px;
|
padding-left: 7px;
|
||||||
padding-right: 14px;
|
padding-right: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-top .meta span {
|
#manager-top .meta span {
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
color: black;
|
color: black;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #manager-top .meta span {
|
html[dir="rtl"] #manager-top .meta span {
|
||||||
margin-right: 0;
|
margin-right: 0;
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-top .meta a {
|
#manager-top .meta a {
|
||||||
background-color: #f1f6fd;
|
background-color: #f1f6fd;
|
||||||
border: 1px solid #b9cbcf;
|
border: 1px solid #b9cbcf;
|
||||||
color: #224249;
|
color: #224249;
|
||||||
padding: 4px 8px 4px 21px;
|
padding: 4px 8px 4px 21px;
|
||||||
margin-left: 2px;
|
margin-left: 2px;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
-moz-border-radius: 2px;
|
-moz-border-radius: 2px;
|
||||||
-webkit-border-radius: 2px;
|
-webkit-border-radius: 2px;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-top .meta a:hover,
|
#manager-top .meta a:hover,
|
||||||
#manager-top .meta a:focus {
|
#manager-top .meta a:focus {
|
||||||
border: 1px solid #95b1b7;
|
border: 1px solid #95b1b7;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-top .meta a:active {
|
#manager-top .meta a:active {
|
||||||
border: 1px solid #77989f;
|
border: 1px solid #77989f;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-top .meta a.logout {
|
#manager-top .meta a.logout {
|
||||||
background-position: 3px -69px;
|
background-position: 3px -69px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-top .meta a.close {
|
#manager-top .meta a.close {
|
||||||
background-position: 3px -90px;
|
background-position: 3px -90px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-tabs {
|
#manager-tabs {
|
||||||
margin-left: 12px;
|
margin-left: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #manager-tabs {
|
html[dir="rtl"] #manager-tabs {
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
margin-right: 12px;
|
margin-right: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-tabs a {
|
#manager-tabs a {
|
||||||
background-color: #d9e7ea;
|
background-color: #d9e7ea;
|
||||||
color: #204249;
|
color: #204249;
|
||||||
width: 107px;
|
width: 107px;
|
||||||
height: 17px;
|
height: 17px;
|
||||||
padding: 4px 4px 4px 16px;
|
padding: 4px 4px 4px 16px;
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
font-size: 0.94em;
|
font-size: 0.94em;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
float: left;
|
float: left;
|
||||||
-moz-border-radius-topright: 3px;
|
-moz-border-radius-topright: 3px;
|
||||||
-moz-border-radius-topleft: 3px;
|
-moz-border-radius-topleft: 3px;
|
||||||
-webkit-border-top-right-radius: 3px;
|
-webkit-border-top-right-radius: 3px;
|
||||||
-webkit-border-top-left-radius: 3px;
|
-webkit-border-top-left-radius: 3px;
|
||||||
border-top-right-radius: 3px;
|
border-top-right-radius: 3px;
|
||||||
border-top-left-radius: 3px;
|
border-top-left-radius: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #manager-tabs a {
|
html[dir="rtl"] #manager-tabs a {
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
margin-right: 4px;
|
margin-right: 4px;
|
||||||
padding-left: 4px;
|
padding-left: 4px;
|
||||||
padding-right: 16px;
|
padding-right: 16px;
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-tabs a:hover,
|
#manager-tabs a:hover,
|
||||||
#manager-tabs a:focus {
|
#manager-tabs a:focus {
|
||||||
background-color: #cedee1;
|
background-color: #cedee1;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-tabs a:active {
|
#manager-tabs a:active {
|
||||||
background-color: #c3d3d7;
|
background-color: #c3d3d7;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-tabs a.tab-active {
|
#manager-tabs a.tab-active {
|
||||||
background-color: #e4eef9 !important;
|
background-color: #e4eef9 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content {
|
#manager-content {
|
||||||
background: #e4eef9;
|
background: #e4eef9;
|
||||||
background: -moz-linear-gradient(top, #e4eef9, #d0e5fa);
|
background: -moz-linear-gradient(top, #e4eef9, #d0e5fa);
|
||||||
background: -webkit-gradient(linear, left top, left bottom, from(#e4eef9), to(#d0e5fa));
|
background: -webkit-gradient(linear, left top, left bottom, from(#e4eef9), to(#d0e5fa));
|
||||||
background: -webkit-linear-gradient(top, #e4eef9 0%, #d0e5fa 100%);
|
background: -webkit-linear-gradient(top, #e4eef9 0%, #d0e5fa 100%);
|
||||||
background: -o-linear-gradient(top, #e4eef9 0%, #d0e5fa 100%);
|
background: -o-linear-gradient(top, #e4eef9 0%, #d0e5fa 100%);
|
||||||
color: black;
|
color: black;
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
margin: 0 10px;
|
margin: 0 10px;
|
||||||
padding: 20px 24px;
|
padding: 20px 24px;
|
||||||
min-height: 260px;
|
min-height: 260px;
|
||||||
clear: both;
|
clear: both;
|
||||||
right: 10px;
|
right: 10px;
|
||||||
-moz-border-radius: 3px;
|
-moz-border-radius: 3px;
|
||||||
-webkit-border-radius: 3px;
|
-webkit-border-radius: 3px;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
-moz-box-shadow: 0 0 20px #202020;
|
-moz-box-shadow: 0 0 20px #202020;
|
||||||
-webkit-box-shadow: 0 0 20px #202020;
|
-webkit-box-shadow: 0 0 20px #202020;
|
||||||
box-shadow: 0 0 20px #202020;
|
box-shadow: 0 0 20px #202020;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content h3 {
|
#manager-content h3 {
|
||||||
padding-left: 24px;
|
padding-left: 24px;
|
||||||
margin-bottom: 15px;
|
margin-bottom: 15px;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #manager-content h3 {
|
html[dir="rtl"] #manager-content h3 {
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content h3.login {
|
#manager-content h3.login {
|
||||||
background-position: 0 -466px;
|
background-position: 0 -466px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content h3.statistics {
|
#manager-content h3.statistics {
|
||||||
background-position: 0 -203px;
|
background-position: 0 -203px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content h3.configuration {
|
#manager-content h3.configuration {
|
||||||
background-position: 0 -224px;
|
background-position: 0 -224px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content h3.hosts {
|
#manager-content h3.hosts {
|
||||||
background-position: 0 -246px;
|
background-position: 0 -246px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content h3.storage {
|
#manager-content h3.storage {
|
||||||
background-position: 0 -268px;
|
background-position: 0 -268px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content h3.design {
|
#manager-content h3.design {
|
||||||
background-position: 0 -290px;
|
background-position: 0 -290px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content h3.users {
|
#manager-content h3.users {
|
||||||
background-position: 0 -312px;
|
background-position: 0 -312px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content h3.updates {
|
#manager-content h3.updates {
|
||||||
background-position: 0 -334px;
|
background-position: 0 -334px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content h4 {
|
#manager-content h4 {
|
||||||
border-top: 1px dotted black;
|
border-top: 1px dotted black;
|
||||||
padding-top: 5px;
|
padding-top: 5px;
|
||||||
margin: 20px 0 14px;
|
margin: 20px 0 14px;
|
||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content ul,
|
#manager-content ul,
|
||||||
#manager-content ol {
|
#manager-content ol {
|
||||||
width: 380px;
|
width: 380px;
|
||||||
margin: 8px 0 20px 18px;
|
margin: 8px 0 20px 18px;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #manager-content ul,
|
html[dir="rtl"] #manager-content ul,
|
||||||
html[dir="rtl"] #manager-content ol {
|
html[dir="rtl"] #manager-content ol {
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
margin-right: 18px;
|
margin-right: 18px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content li {
|
#manager-content li {
|
||||||
margin-bottom: 3px;
|
margin-bottom: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #manager-content li {
|
html[dir="rtl"] #manager-content li {
|
||||||
margin-right: 15px;
|
margin-right: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content li.total {
|
#manager-content li.total {
|
||||||
margin-bottom: 14px;
|
margin-bottom: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content li b {
|
#manager-content li b {
|
||||||
width: 190px;
|
width: 190px;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content li span {
|
#manager-content li span {
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content ul.stats,
|
#manager-content ul.stats,
|
||||||
#manager-content ol.stats {
|
#manager-content ol.stats {
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content object.stats {
|
#manager-content object.stats {
|
||||||
border: 1px dotted #bed4d9;
|
border: 1px dotted #bed4d9;
|
||||||
width: 450px;
|
width: 450px;
|
||||||
height: 270px;
|
height: 270px;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content p,
|
#manager-content p,
|
||||||
#manager-content div {
|
#manager-content div {
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content .info {
|
#manager-content .info {
|
||||||
color: black;
|
color: black;
|
||||||
border-width: 1px;
|
border-width: 1px;
|
||||||
border-style: dashed;
|
border-style: dashed;
|
||||||
padding: 6px 8px;
|
padding: 6px 8px;
|
||||||
display: block;
|
display: block;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content .info.bottomspace {
|
#manager-content .info.bottomspace {
|
||||||
margin-bottom: 16px;
|
margin-bottom: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content .info.smallspace {
|
#manager-content .info.smallspace {
|
||||||
margin: 14px 0 10px 0;
|
margin: 14px 0 10px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content .info.bigspace {
|
#manager-content .info.bigspace {
|
||||||
margin: 35px 0 20px 0;
|
margin: 35px 0 20px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content .info.neutral {
|
#manager-content .info.neutral {
|
||||||
background-color: #f0f19d;
|
background-color: #f0f19d;
|
||||||
border-color: #b3ad4f;
|
border-color: #b3ad4f;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content a.info.neutral:hover,
|
#manager-content a.info.neutral:hover,
|
||||||
#manager-content a.info.neutral:focus {
|
#manager-content a.info.neutral:focus {
|
||||||
background-color: #eced96;
|
background-color: #eced96;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content a.info.neutral:active {
|
#manager-content a.info.neutral:active {
|
||||||
background-color: #e9ea93;
|
background-color: #e9ea93;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content .info.success {
|
#manager-content .info.success {
|
||||||
background-color: #a8dca9;
|
background-color: #a8dca9;
|
||||||
border-color: #5e9f5f;
|
border-color: #5e9f5f;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content a.info.success:hover,
|
#manager-content a.info.success:hover,
|
||||||
#manager-content a.info.success:focus {
|
#manager-content a.info.success:focus {
|
||||||
background-color: #a0d5a1;
|
background-color: #a0d5a1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content a.info.success:active {
|
#manager-content a.info.success:active {
|
||||||
background-color: #9ad09b;
|
background-color: #9ad09b;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content .info.fail {
|
#manager-content .info.fail {
|
||||||
background-color: #f19d9d;
|
background-color: #f19d9d;
|
||||||
border-color: #b34f4f;
|
border-color: #b34f4f;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content a.info.fail:hover,
|
#manager-content a.info.fail:hover,
|
||||||
#manager-content a.info.fail:focus {
|
#manager-content a.info.fail:focus {
|
||||||
background-color: #ea9595;
|
background-color: #ea9595;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content a.info.fail:active {
|
#manager-content a.info.fail:active {
|
||||||
background-color: #e59090;
|
background-color: #e59090;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content .browse {
|
#manager-content .browse {
|
||||||
margin: 2px 0 6px;
|
margin: 2px 0 6px;
|
||||||
max-height: 243px;
|
max-height: 243px;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content .browse .one-browse {
|
#manager-content .browse .one-browse {
|
||||||
padding: 5px 10px 5px 34px;
|
padding: 5px 10px 5px 34px;
|
||||||
height: 17px;
|
height: 17px;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #manager-content .browse .one-browse a,
|
html[dir="rtl"] #manager-content .browse .one-browse a,
|
||||||
html[dir="rtl"] #manager-content .browse .one-browse span {
|
html[dir="rtl"] #manager-content .browse .one-browse span {
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content .browse .user {
|
#manager-content .browse .user {
|
||||||
background-position: 9px -111px;
|
background-position: 9px -111px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content .browse .other {
|
#manager-content .browse .other {
|
||||||
background-position: 9px -133px;
|
background-position: 9px -133px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content .browse .folder {
|
#manager-content .browse .folder {
|
||||||
background-position: 9px -178px;
|
background-position: 9px -178px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content .browse .audio {
|
#manager-content .browse .audio {
|
||||||
background-position: 9px -154px;
|
background-position: 9px -154px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content .browse .alert {
|
#manager-content .browse .alert {
|
||||||
background-position: 9px -353px;
|
background-position: 9px -353px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content .browse .image {
|
#manager-content .browse .image {
|
||||||
background-position: 9px -374px;
|
background-position: 9px -374px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content .browse .video {
|
#manager-content .browse .video {
|
||||||
background-position: 9px -397px;
|
background-position: 9px -397px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content .browse .document {
|
#manager-content .browse .document {
|
||||||
background-position: 9px -418px;
|
background-position: 9px -418px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content .browse .package {
|
#manager-content .browse .package {
|
||||||
background-position: 9px -441px;
|
background-position: 9px -441px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content .browse .previous {
|
#manager-content .browse .previous {
|
||||||
background-position: 9px -485px;
|
background-position: 9px -485px;
|
||||||
margin-bottom: 4px;
|
margin-bottom: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content .browse div {
|
#manager-content .browse div {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content .browse input {
|
#manager-content .browse input {
|
||||||
float: right;
|
float: right;
|
||||||
margin: 1px 0;
|
margin: 1px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content .browse .odd {
|
#manager-content .browse .odd {
|
||||||
background-color: #e9f1fd;
|
background-color: #e9f1fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content .browse .even {
|
#manager-content .browse .even {
|
||||||
background-color: #f1f6fd;
|
background-color: #f1f6fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content .sub {
|
#manager-content .sub {
|
||||||
border-width: 0 0 0 1px;
|
border-width: 0 0 0 1px;
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
border-color: black;
|
border-color: black;
|
||||||
margin: 5px 0 20px 22px;
|
margin: 5px 0 20px 22px;
|
||||||
padding-left: 12px;
|
padding-left: 12px;
|
||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
|
|
||||||
html[dir="rtl"] #manager-content .sub {
|
html[dir="rtl"] #manager-content .sub {
|
||||||
border-width: 0 1px 0 0;
|
border-width: 0 1px 0 0;
|
||||||
padding-right: 12px;
|
padding-right: 12px;
|
||||||
padding-left: 0;
|
padding-left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager span.logo_links a {
|
#manager span.logo_links a {
|
||||||
width: 16px;
|
width: 16px;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
margin-right: 6px;
|
margin-right: 6px;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager span.logo_links a.remove {
|
#manager span.logo_links a.remove {
|
||||||
background-position: 0 -688px;
|
background-position: 0 -688px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager span.logo_links a.view {
|
#manager span.logo_links a.view {
|
||||||
background-position: 0 -666px;
|
background-position: 0 -666px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content .clear {
|
#manager-content .clear {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-content textarea.notice-text {
|
#manager-content textarea.notice-text {
|
||||||
height: 70px;
|
height: 70px;
|
||||||
width: 600px;
|
width: 600px;
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
font-size: 1.2em;
|
font-size: 1.2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-buttons {
|
#manager-buttons {
|
||||||
margin-top: 22px;
|
margin-top: 22px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-buttons input {
|
#manager-buttons input {
|
||||||
border: 1px solid white;
|
border: 1px solid white;
|
||||||
background-color: rgb(255,255,255);
|
background-color: rgb(255,255,255);
|
||||||
background-color: rgba(255,255,255,0.1);
|
background-color: rgba(255,255,255,0.1);
|
||||||
color: white;
|
color: white;
|
||||||
padding: 4px 8px;
|
padding: 4px 8px;
|
||||||
margin-left: -12px;
|
margin-left: -12px;
|
||||||
margin-right: 20px;
|
margin-right: 20px;
|
||||||
font-size: 1em;
|
font-size: 1em;
|
||||||
text-shadow: 0 1px 1px black;
|
text-shadow: 0 1px 1px black;
|
||||||
float: right;
|
float: right;
|
||||||
-moz-border-radius: 3px;
|
-moz-border-radius: 3px;
|
||||||
-webkit-border-radius: 3px;
|
-webkit-border-radius: 3px;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
-moz-box-shadow: 0 0 5px #202020;
|
-moz-box-shadow: 0 0 5px #202020;
|
||||||
-webkit-box-shadow: 0 0 5px #202020;
|
-webkit-box-shadow: 0 0 5px #202020;
|
||||||
box-shadow: 0 0 5px #202020;
|
box-shadow: 0 0 5px #202020;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-buttons input:hover,
|
#manager-buttons input:hover,
|
||||||
#manager-buttons input:focus {
|
#manager-buttons input:focus {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
background-color: rgb(255,255,255);
|
background-color: rgb(255,255,255);
|
||||||
background-color: rgba(255,255,255,0.2);
|
background-color: rgba(255,255,255,0.2);
|
||||||
-moz-box-shadow: 0 0 15px #202020;
|
-moz-box-shadow: 0 0 15px #202020;
|
||||||
-webkit-box-shadow: 0 0 15px #202020;
|
-webkit-box-shadow: 0 0 15px #202020;
|
||||||
box-shadow: 0 0 15px #202020;
|
box-shadow: 0 0 15px #202020;
|
||||||
}
|
}
|
||||||
|
|
||||||
#manager-buttons input:active {
|
#manager-buttons input:active {
|
||||||
background-color: rgb(255,255,255);
|
background-color: rgb(255,255,255);
|
||||||
background-color: rgba(255,255,255,0.3);
|
background-color: rgba(255,255,255,0.3);
|
||||||
}
|
}
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue