From 1628c33499bc28dc88e6ac8b06e2ff8ac23ee47e Mon Sep 17 00:00:00 2001 From: Joenio Costa Date: Sat, 11 Sep 2010 01:14:24 -0300 Subject: [PATCH] XMPP/Jabber based chat --- INSTALL.chat | 12 ++++++++++++ app/controllers/application.rb | 2 +- app/controllers/public/chat_controller.rb | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ app/helpers/application_helper.rb | 42 ++++++++++++++++++++++++++++++++++-------- app/helpers/chat_helper.rb | 24 ++++++++++++++++++++++++ app/models/environment.rb | 7 ++++++- app/models/person.rb | 5 +++++ app/models/profile.rb | 1 + app/models/user.rb | 4 ++++ app/views/chat/auto_connect_busy.rhtml | 5 +++++ app/views/chat/auto_connect_online.rhtml | 5 +++++ app/views/chat/start_session_error.rhtml | 4 ++++ app/views/layouts/application-ng.rhtml | 14 +------------- app/views/layouts/application.rhtml | 7 ------- app/views/layouts/chat.rhtml | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ app/views/shared/usermenu/xmpp_chat.rhtml | 1 + config/routes.rb | 4 ++++ db/migrate/20100827175629_add_presence_status_to_users.rb | 11 +++++++++++ db/schema.rb | 4 +++- features/chat.feature | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ features/step_definitions/selenium_steps.rb | 8 ++++++-- features/support/paths.rb | 3 +++ public/designs/icons/pidgin/emoticons.js | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/designs/icons/pidgin/pidgin | 1 + public/designs/icons/pidgin/style.css | 15 +++++++++++++++ public/designs/icons/tango/style.css | 2 +- public/designs/themes/base/style.css | 23 ++++++++++++++++++++++- public/designs/themes/base/theme.yml | 1 + public/designs/themes/noosfero/theme.yml | 1 + public/designs/themes/scarletred/theme.yml | 1 + public/images/icons-app/chat-22x22.png | 1 + public/images/icons-app/gnome-irc-22x22.png | Bin 0 -> 1261 bytes public/images/icons-app/gnome-irc.png | Bin 0 -> 2256 bytes public/images/icons-app/image-loading-small.png | Bin 0 -> 1779 bytes public/images/loading-small-dark.gif | Bin 0 -> 1912 bytes public/javascripts/application.js | 40 ++++++++++++++++++++++++++++++++++++++++ public/javascripts/chat.js | 410 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/javascripts/jquery.emoticon.js | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ public/javascripts/jquery.scrollabletab.js | 277 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/LICENSE.txt | 19 +++++++++++++++++++ public/javascripts/strophejs-1.0.1/README.txt | 15 +++++++++++++++ public/javascripts/strophejs-1.0.1/contrib/discojs/README.txt | 42 ++++++++++++++++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/contrib/discojs/css/disco.css | 16 ++++++++++++++++ public/javascripts/strophejs-1.0.1/contrib/discojs/index.html | 47 +++++++++++++++++++++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/contrib/discojs/punjab.tac | 18 ++++++++++++++++++ public/javascripts/strophejs-1.0.1/contrib/discojs/scripts/basic.js | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/contrib/discojs/scripts/disco.js | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/files/core-js.html | 189 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/index.html | 1 + public/javascripts/strophejs-1.0.1/doc/javascript/main.js | 836 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/javascript/searchdata.js | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/ClassesS.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/ConstantsA.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/ConstantsB.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/ConstantsC.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/ConstantsD.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/ConstantsE.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/ConstantsF.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/ConstantsH.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/ConstantsI.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/ConstantsL.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/ConstantsM.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/ConstantsP.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/ConstantsR.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/ConstantsS.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/ConstantsV.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/ConstantsW.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/ConstantsX.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/FilesS.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/FunctionsA.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/FunctionsB.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/FunctionsC.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/FunctionsD.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/FunctionsE.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/FunctionsF.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/FunctionsG.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/FunctionsI.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/FunctionsL.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/FunctionsP.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/FunctionsR.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/FunctionsS.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/FunctionsSymbols.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/FunctionsT.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/FunctionsU.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/FunctionsW.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/FunctionsX.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/GeneralA.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/GeneralB.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/GeneralC.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/GeneralD.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/GeneralE.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/GeneralF.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/GeneralG.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/GeneralH.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/GeneralI.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/GeneralL.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/GeneralM.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/GeneralP.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/GeneralR.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/GeneralS.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/GeneralSymbols.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/GeneralT.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/GeneralU.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/GeneralV.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/GeneralW.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/GeneralX.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/doc/search/NoResults.html | 15 +++++++++++++++ public/javascripts/strophejs-1.0.1/doc/styles/main.css | 767 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/examples/attach/README | 37 +++++++++++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/examples/attach/__init__.py | 0 public/javascripts/strophejs-1.0.1/examples/attach/attacher/__init__.py | 0 public/javascripts/strophejs-1.0.1/examples/attach/attacher/views.py | 18 ++++++++++++++++++ public/javascripts/strophejs-1.0.1/examples/attach/boshclient.py | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/examples/attach/manage.py | 11 +++++++++++ public/javascripts/strophejs-1.0.1/examples/attach/settings.py | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/examples/attach/templates/attacher/index.html | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/examples/attach/urls.py | 19 +++++++++++++++++++ public/javascripts/strophejs-1.0.1/examples/basic.html | 25 +++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/examples/basic.js | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/examples/crossdomain.html | 32 ++++++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/examples/crossdomain.js | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/examples/crossdomain.xml | 12 ++++++++++++ public/javascripts/strophejs-1.0.1/examples/dojo-ping.html | 27 +++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/examples/dojo-ping.js | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/examples/echobot.html | 25 +++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/examples/echobot.js | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/examples/prebind.html | 39 +++++++++++++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/examples/prebind.js | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/examples/prototype-ping.html | 27 +++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/examples/prototype-ping.js | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/examples/yui-ping.html | 26 ++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/examples/yui-ping.js | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/plugins/strophe.flxhr.js | 31 +++++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/plugins/strophe.flxhr.min.js | 1 + public/javascripts/strophejs-1.0.1/plugins/strophe.pubsub.js | 270 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/plugins/strophe.pubsub.min.js | 1 + public/javascripts/strophejs-1.0.1/strophe.js | 3543 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/strophe.min.js | 1 + public/javascripts/strophejs-1.0.1/tests/jstests.js | 136 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/tests/jsyuitests.js | 31 +++++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/tests/pubsub.html | 28 ++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/tests/pubsub.js | 314 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/tests/strophe.html | 22 ++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/tests/testrunner.js | 735 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/tests/tests.js | 163 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/tests/testsuite.css | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/javascripts/strophejs-1.0.1/tests/yuitests.html | 20 ++++++++++++++++++++ public/javascripts/strophejs-1.0.1/tests/yuitests.js | 26 ++++++++++++++++++++++++++ public/stylesheets/application.css | 256 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ test/functional/chat_controller_test.rb | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ test/integration/routing_test.rb | 5 +++++ test/mocks/test/environment.rb | 1 + test/test_helper.rb | 5 +++++ test/unit/application_helper_test.rb | 49 ++++++++++++++++++++++++++++++++++++++++++++----- test/unit/chat_helper_test.rb | 21 +++++++++++++++++++++ test/unit/environment_test.rb | 28 ++++++++++++---------------- test/unit/person_test.rb | 17 +++++++++++++++++ test/unit/theme_test.rb | 1 - test/unit/user_test.rb | 15 +++++++++++++++ util/chat/apache/xmpp.conf | 10 ++++++++++ util/chat/postgresql/ejabberd.sql | 177 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ vendor/plugins/ruby_bosh/LICENSE | 20 ++++++++++++++++++++ vendor/plugins/ruby_bosh/README | 37 +++++++++++++++++++++++++++++++++++++ vendor/plugins/ruby_bosh/Rakefile | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ vendor/plugins/ruby_bosh/TODO | 2 ++ vendor/plugins/ruby_bosh/VERSION.yml | 5 +++++ vendor/plugins/ruby_bosh/autotest/discover.rb | 5 +++++ vendor/plugins/ruby_bosh/lib/ruby_bosh.rb | 162 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ vendor/plugins/ruby_bosh/ruby_bosh.gemspec | 41 +++++++++++++++++++++++++++++++++++++++++ vendor/plugins/ruby_bosh/spec/ruby_bosh_spec.rb | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ vendor/plugins/ruby_bosh/spec/spec_helper.rb | 4 ++++ 171 files changed, 12196 insertions(+), 57 deletions(-) create mode 100644 INSTALL.chat create mode 100644 app/controllers/public/chat_controller.rb create mode 100644 app/helpers/chat_helper.rb create mode 100644 app/views/chat/auto_connect_busy.rhtml create mode 100644 app/views/chat/auto_connect_online.rhtml create mode 100644 app/views/chat/start_session_error.rhtml create mode 100644 app/views/layouts/chat.rhtml create mode 100644 app/views/shared/usermenu/xmpp_chat.rhtml create mode 100644 db/migrate/20100827175629_add_presence_status_to_users.rb create mode 100644 features/chat.feature create mode 100644 public/designs/icons/pidgin/emoticons.js create mode 120000 public/designs/icons/pidgin/pidgin create mode 100644 public/designs/icons/pidgin/style.css create mode 120000 public/images/icons-app/chat-22x22.png create mode 100644 public/images/icons-app/gnome-irc-22x22.png create mode 100644 public/images/icons-app/gnome-irc.png create mode 100644 public/images/icons-app/image-loading-small.png create mode 100644 public/images/loading-small-dark.gif create mode 100644 public/javascripts/chat.js create mode 100644 public/javascripts/jquery.emoticon.js create mode 100644 public/javascripts/jquery.scrollabletab.js create mode 100644 public/javascripts/strophejs-1.0.1/LICENSE.txt create mode 100644 public/javascripts/strophejs-1.0.1/README.txt create mode 100644 public/javascripts/strophejs-1.0.1/contrib/discojs/README.txt create mode 100644 public/javascripts/strophejs-1.0.1/contrib/discojs/css/disco.css create mode 100644 public/javascripts/strophejs-1.0.1/contrib/discojs/index.html create mode 100644 public/javascripts/strophejs-1.0.1/contrib/discojs/punjab.tac create mode 100644 public/javascripts/strophejs-1.0.1/contrib/discojs/scripts/basic.js create mode 100644 public/javascripts/strophejs-1.0.1/contrib/discojs/scripts/disco.js create mode 100644 public/javascripts/strophejs-1.0.1/doc/files/core-js.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/index.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/javascript/main.js create mode 100644 public/javascripts/strophejs-1.0.1/doc/javascript/searchdata.js create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ClassesS.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsA.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsB.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsC.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsD.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsE.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsF.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsH.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsI.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsL.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsM.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsP.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsR.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsS.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsV.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsW.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/ConstantsX.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FilesS.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsA.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsB.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsC.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsD.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsE.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsF.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsG.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsI.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsL.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsP.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsR.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsS.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsSymbols.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsT.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsU.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsW.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/FunctionsX.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralA.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralB.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralC.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralD.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralE.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralF.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralG.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralH.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralI.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralL.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralM.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralP.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralR.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralS.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralSymbols.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralT.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralU.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralV.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralW.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/GeneralX.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/search/NoResults.html create mode 100644 public/javascripts/strophejs-1.0.1/doc/styles/main.css create mode 100644 public/javascripts/strophejs-1.0.1/examples/attach/README create mode 100644 public/javascripts/strophejs-1.0.1/examples/attach/__init__.py create mode 100644 public/javascripts/strophejs-1.0.1/examples/attach/attacher/__init__.py create mode 100644 public/javascripts/strophejs-1.0.1/examples/attach/attacher/views.py create mode 100644 public/javascripts/strophejs-1.0.1/examples/attach/boshclient.py create mode 100755 public/javascripts/strophejs-1.0.1/examples/attach/manage.py create mode 100644 public/javascripts/strophejs-1.0.1/examples/attach/settings.py create mode 100644 public/javascripts/strophejs-1.0.1/examples/attach/templates/attacher/index.html create mode 100644 public/javascripts/strophejs-1.0.1/examples/attach/urls.py create mode 100644 public/javascripts/strophejs-1.0.1/examples/basic.html create mode 100644 public/javascripts/strophejs-1.0.1/examples/basic.js create mode 100644 public/javascripts/strophejs-1.0.1/examples/crossdomain.html create mode 100644 public/javascripts/strophejs-1.0.1/examples/crossdomain.js create mode 100644 public/javascripts/strophejs-1.0.1/examples/crossdomain.xml create mode 100644 public/javascripts/strophejs-1.0.1/examples/dojo-ping.html create mode 100644 public/javascripts/strophejs-1.0.1/examples/dojo-ping.js create mode 100644 public/javascripts/strophejs-1.0.1/examples/echobot.html create mode 100644 public/javascripts/strophejs-1.0.1/examples/echobot.js create mode 100644 public/javascripts/strophejs-1.0.1/examples/prebind.html create mode 100644 public/javascripts/strophejs-1.0.1/examples/prebind.js create mode 100644 public/javascripts/strophejs-1.0.1/examples/prototype-ping.html create mode 100644 public/javascripts/strophejs-1.0.1/examples/prototype-ping.js create mode 100644 public/javascripts/strophejs-1.0.1/examples/yui-ping.html create mode 100644 public/javascripts/strophejs-1.0.1/examples/yui-ping.js create mode 100644 public/javascripts/strophejs-1.0.1/plugins/strophe.flxhr.js create mode 100644 public/javascripts/strophejs-1.0.1/plugins/strophe.flxhr.min.js create mode 100644 public/javascripts/strophejs-1.0.1/plugins/strophe.pubsub.js create mode 100644 public/javascripts/strophejs-1.0.1/plugins/strophe.pubsub.min.js create mode 100644 public/javascripts/strophejs-1.0.1/strophe.js create mode 100644 public/javascripts/strophejs-1.0.1/strophe.min.js create mode 100644 public/javascripts/strophejs-1.0.1/tests/jstests.js create mode 100644 public/javascripts/strophejs-1.0.1/tests/jsyuitests.js create mode 100644 public/javascripts/strophejs-1.0.1/tests/pubsub.html create mode 100644 public/javascripts/strophejs-1.0.1/tests/pubsub.js create mode 100644 public/javascripts/strophejs-1.0.1/tests/strophe.html create mode 100644 public/javascripts/strophejs-1.0.1/tests/testrunner.js create mode 100644 public/javascripts/strophejs-1.0.1/tests/tests.js create mode 100644 public/javascripts/strophejs-1.0.1/tests/testsuite.css create mode 100644 public/javascripts/strophejs-1.0.1/tests/yuitests.html create mode 100644 public/javascripts/strophejs-1.0.1/tests/yuitests.js create mode 100644 test/functional/chat_controller_test.rb create mode 100644 test/unit/chat_helper_test.rb create mode 100644 util/chat/apache/xmpp.conf create mode 100644 util/chat/postgresql/ejabberd.sql create mode 100644 vendor/plugins/ruby_bosh/LICENSE create mode 100644 vendor/plugins/ruby_bosh/README create mode 100644 vendor/plugins/ruby_bosh/Rakefile create mode 100644 vendor/plugins/ruby_bosh/TODO create mode 100644 vendor/plugins/ruby_bosh/VERSION.yml create mode 100644 vendor/plugins/ruby_bosh/autotest/discover.rb create mode 100644 vendor/plugins/ruby_bosh/lib/ruby_bosh.rb create mode 100644 vendor/plugins/ruby_bosh/ruby_bosh.gemspec create mode 100644 vendor/plugins/ruby_bosh/spec/ruby_bosh_spec.rb create mode 100644 vendor/plugins/ruby_bosh/spec/spec_helper.rb diff --git a/INSTALL.chat b/INSTALL.chat new file mode 100644 index 0000000..5bcb418 --- /dev/null +++ b/INSTALL.chat @@ -0,0 +1,12 @@ +To configure XMPP/BOSH in Noosfero you need: + +* REST Client - http://github.com/archiloque/rest-client +* SystemTimer - http://ph7spot.com/musings/system-timer +* Pidgin data files - http://www.pidgin.im/ + +# apt-get install librestclient-ruby +# apt-get install libsystemtimer-ruby (depends to do Debian package to this) +# apt-get install pidgin-data + +Take a look at util/chat directory to see samples of config file to configure a +XMPP/BOSH server with ejabberd, postgresql and apache2. diff --git a/app/controllers/application.rb b/app/controllers/application.rb index 7f147a8..2d2fa42 100644 --- a/app/controllers/application.rb +++ b/app/controllers/application.rb @@ -116,7 +116,7 @@ class ApplicationController < ActionController::Base def render_not_found(path = nil) @no_design_blocks = true @path ||= request.path - render :template => 'shared/not_found.rhtml', :status => 404 + render :template => 'shared/not_found.rhtml', :status => 404, :layout => get_layout end def render_access_denied(message = nil, title = nil) diff --git a/app/controllers/public/chat_controller.rb b/app/controllers/public/chat_controller.rb new file mode 100644 index 0000000..223f06f --- /dev/null +++ b/app/controllers/public/chat_controller.rb @@ -0,0 +1,56 @@ +class ChatController < PublicController + + before_filter :login_required + before_filter :check_environment_feature + + def start_session + login = current_user.jid + password = current_user.crypted_password + begin + jid, sid, rid = RubyBOSH.initialize_session(login, password, "http://#{environment.default_hostname}/http-bind") + session_data = { :jid => jid, :sid => sid, :rid => rid } + render :text => session_data.to_json, :layout => false, :content_type => 'application/javascript' + rescue + render :action => 'start_session_error', :layout => false, :status => 500 + end + end + + def avatar + person = environment.people.find_by_identifier(params[:id]) + filename, mimetype = profile_icon(person, :minor, true) + data = File.read(File.join(RAILS_ROOT, 'public', filename)) + render :text => data, :layout => false, :content_type => mimetype + expires_in 24.hours + end + + def index + presence = current_user.last_presence_status + if presence.blank? + render :text => '', :layout => 'chat' + elsif presence == 'chat' + render :action => 'auto_connect_online' + else + render :action => 'auto_connect_busy' + end + end + + def update_presence_status + if request.xhr? + unless params[:closing_window] + current_user.update_attribute(:last_presence_status, params[:presence_status]) + end + current_user.update_attribute(:presence_status, params[:presence_status]) + end + render :nothing => true + end + + protected + + def check_environment_feature + unless environment.enabled?('xmpp_chat') + render_not_found + return + end + end + +end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index d7437f8..8eb4822 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -421,9 +421,11 @@ module ApplicationHelper image_tag(profile_icon(profile, size), opt ) end - def profile_icon( profile, size=:portrait ) + def profile_icon( profile, size=:portrait, return_mimetype=false ) + filename, mimetype = '', 'image/png' if profile.image - profile.image.public_filename( size ) + filename = profile.image.public_filename( size ) + mimetype = profile.image.content_type else icon = if profile.organization? @@ -435,8 +437,9 @@ module ApplicationHelper else '/images/icons-app/person-'+ size.to_s() +'.png' end - default_or_themed_icon(icon) + filename = default_or_themed_icon(icon) end + return_mimetype ? [filename, mimetype] : filename end def default_or_themed_icon(icon) @@ -940,12 +943,15 @@ module ApplicationHelper end def icon_theme_stylesheet_path - theme_path = "/designs/icons/#{environment.icon_theme}/style.css" - if File.exists?(File.join(RAILS_ROOT, 'public', theme_path)) - theme_path - else - '/designs/icons/default/style.css' + icon_themes = [] + theme_icon_themes = theme_option(:icon_theme) || [] + for icon_theme in theme_icon_themes do + theme_path = "/designs/icons/#{icon_theme}/style.css" + if File.exists?(File.join(RAILS_ROOT, 'public', theme_path)) + icon_themes << theme_path + end end + icon_themes end def page_title @@ -954,6 +960,7 @@ module ApplicationHelper (@topic ? @topic.title + ' - ' : '') + (@section ? @section.title + ' - ' : '') + (@toc ? _('Online Manual') + ' - ' : '') + + (@controller.controller_name == 'chat' ? _('Chat') + ' - ' : '') + environment.name + (@category ? " - #{@category.full_name}" : '') end @@ -1105,4 +1112,23 @@ module ApplicationHelper will_paginate(collection, options) end + def usermenu_from_environment_features + usermenu_html = '' + environment.enabled_features.keys.each do |feature| + file = File.join(@controller.view_paths, 'shared', 'usermenu', "#{feature}.rhtml") + if File.exists?(file) + usermenu_html << render(:file => file, :use_full_path => false) + end + end + usermenu_html + end + + def usermenu_logged_in + (_('Welcome, %s') % link_to('%{login}', '/%{login}', :id => "homepage-link", :title => _('Go to your homepage'))) + + usermenu_from_environment_features + + link_to('' + _('Administration') + '', { :controller => 'admin_panel', :action => 'index' }, :id => "controlpanel", :title => _("Configure the environment"), :class => 'admin-link', :style => 'display: none') + + link_to('' + _('Control panel') + '', '/myprofile/%{login}', :id => "controlpanel", :title => _("Configure your personal account and content")) + + link_to('' + _('Logout') + '', { :controller => 'account', :action => 'logout'} , :id => "logout", :title => _("Leave the system")) + end + end diff --git a/app/helpers/chat_helper.rb b/app/helpers/chat_helper.rb new file mode 100644 index 0000000..a95cf0b --- /dev/null +++ b/app/helpers/chat_helper.rb @@ -0,0 +1,24 @@ +module ChatHelper + + def user_status_menu(icon_class, status) + links = [ + ['icon-menu-online', _('Online'), 'chat-connect'], + ['icon-menu-busy', _('Busy'), 'chat-busy'], + ['icon-menu-offline', _('Sign out of chat'), 'chat-disconnect'], + ] + content_tag('span', + link_to(content_tag('span', status) + ui_icon('ui-icon-triangle-1-s'), + '#', + :onclick => 'toggleMenu(this); return false', + :class => icon_class + ' simplemenu-trigger' + ) + + content_tag('ul', + links.map{|link| content_tag('li', link_to(link[1], '#', :class => link[0], :id => link[2], 'data-jid' => current_user.jid), :class => 'simplemenu-item') }.join("\n"), + :style => 'display: none; z-index: 100', + :class => 'simplemenu-submenu' + ), + :class => 'user-status' + ) + end + +end diff --git a/app/models/environment.rb b/app/models/environment.rb index ff7dd91..91b31f0 100644 --- a/app/models/environment.rb +++ b/app/models/environment.rb @@ -111,6 +111,7 @@ class Environment < ActiveRecord::Base 'admin_must_approve_new_communities' => _("Admin must approve creation of communities"), 'enterprises_are_disabled_when_created' => __('Enterprises are disabled when created'), 'show_balloon_with_profile_links_when_clicked' => _('Show a balloon with profile links when a profile image is clicked'), + 'xmpp_chat' => _('XMPP/Jabber based chat'), } end @@ -210,7 +211,6 @@ class Environment < ActiveRecord::Base settings_items :description, :type => String settings_items :category_types, :type => Array, :default => ['Category'] settings_items :enable_ssl - settings_items :icon_theme, :type => String, :default => 'default' settings_items :local_docs, :type => Array, :default => [] settings_items :news_amount_by_folder, :type => Integer, :default => 4 settings_items :help_message_to_add_enterprise, :type => String, :default => '' @@ -255,6 +255,11 @@ class Environment < ActiveRecord::Base end end + def enabled_features + features = self.class.available_features + features.delete_if{ |k, v| !self.enabled?(k) } + end + # returns true if this Environment has terms of use to be # accepted by users before registration. def has_terms_of_use? diff --git a/app/models/person.rb b/app/models/person.rb index b252c8b..cdb20c7 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -31,6 +31,11 @@ class Person < Profile self.user.destroy if self.user end + named_scope :connected, + :select => Profile.qualified_column_names, + :joins => :user, + :conditions => ['presence_status IS NOT NULL AND presence_status != ? AND presence_status != ?', 'offline', ''] + # Sets the identifier for this person. Raises an exception when called on a # existing person (since peoples' identifiers cannot be changed) def identifier=(value) diff --git a/app/models/profile.rb b/app/models/profile.rb index 6a698f3..3855b0a 100644 --- a/app/models/profile.rb +++ b/app/models/profile.rb @@ -136,6 +136,7 @@ class Profile < ActiveRecord::Base root assets doc + chat ] belongs_to :user diff --git a/app/models/user.rb b/app/models/user.rb index aaff0fa..2e3f4ee 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -214,6 +214,10 @@ class User < ActiveRecord::Base end end + def jid + "#{login}@#{environment.default_hostname}" + end + protected # before filter def encrypt_password diff --git a/app/views/chat/auto_connect_busy.rhtml b/app/views/chat/auto_connect_busy.rhtml new file mode 100644 index 0000000..3d8e3ec --- /dev/null +++ b/app/views/chat/auto_connect_busy.rhtml @@ -0,0 +1,5 @@ + diff --git a/app/views/chat/auto_connect_online.rhtml b/app/views/chat/auto_connect_online.rhtml new file mode 100644 index 0000000..e262146 --- /dev/null +++ b/app/views/chat/auto_connect_online.rhtml @@ -0,0 +1,5 @@ + diff --git a/app/views/chat/start_session_error.rhtml b/app/views/chat/start_session_error.rhtml new file mode 100644 index 0000000..7eb2616 --- /dev/null +++ b/app/views/chat/start_session_error.rhtml @@ -0,0 +1,4 @@ +

+<%= ui_icon('ui-icon-alert') %> +<%= _('Could not connect to chat') %>, ><%= _('try again') %>. +

diff --git a/app/views/layouts/application-ng.rhtml b/app/views/layouts/application-ng.rhtml index 42c97e7..8226d4c 100644 --- a/app/views/layouts/application-ng.rhtml +++ b/app/views/layouts/application-ng.rhtml @@ -24,15 +24,6 @@ " action-"+ @controller.controller_name() +"-"+ @controller.action_name() + " template-"+ ( profile.nil? ? "default" : profile.layout_template ) %>" > - <%= _("Go to the content") %> @@ -43,10 +34,7 @@