diff --git a/app/assets/javascripts/ckeditor/jquery-ckeditor.js b/app/assets/javascripts/ckeditor/jquery-ckeditor.js new file mode 100644 index 000000000..cb329a150 --- /dev/null +++ b/app/assets/javascripts/ckeditor/jquery-ckeditor.js @@ -0,0 +1,10 @@ +/* + Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. + For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +(function(a){CKEDITOR.config.jqueryOverrideVal="undefined"==typeof CKEDITOR.config.jqueryOverrideVal?!0:CKEDITOR.config.jqueryOverrideVal;"undefined"!=typeof a&&(a.extend(a.fn,{ckeditorGet:function(){var a=this.eq(0).data("ckeditorInstance");if(!a)throw"CKEditor is not initialized yet, use ckeditor() with a callback.";return a},ckeditor:function(g,d){if(!CKEDITOR.env.isCompatible)throw Error("The environment is incompatible.");if(!a.isFunction(g))var k=d,d=g,g=k;var i=[],d=d||{};this.each(function(){var b= +a(this),c=b.data("ckeditorInstance"),f=b.data("_ckeditorInstanceLock"),h=this,j=new a.Deferred;i.push(j.promise());if(c&&!f)g&&g.apply(c,[this]),j.resolve();else if(f)c.once("instanceReady",function(){setTimeout(function(){c.element?(c.element.$==h&&g&&g.apply(c,[h]),j.resolve()):setTimeout(arguments.callee,100)},0)},null,null,9999);else{if(d.autoUpdateElement||"undefined"==typeof d.autoUpdateElement&&CKEDITOR.config.autoUpdateElement)d.autoUpdateElementJquery=!0;d.autoUpdateElement=!1;b.data("_ckeditorInstanceLock", +!0);c=a(this).is("textarea")?CKEDITOR.replace(h,d):CKEDITOR.inline(h,d);b.data("ckeditorInstance",c);c.on("instanceReady",function(d){var e=d.editor;setTimeout(function(){if(e.element){d.removeListener();e.on("dataReady",function(){b.trigger("dataReady.ckeditor",[e])});e.on("setData",function(a){b.trigger("setData.ckeditor",[e,a.data])});e.on("getData",function(a){b.trigger("getData.ckeditor",[e,a.data])},999);e.on("destroy",function(){b.trigger("destroy.ckeditor",[e])});e.on("save",function(){a(h.form).submit(); +return!1},null,null,20);if(e.config.autoUpdateElementJquery&&b.is("textarea")&&a(h.form).length){var c=function(){b.ckeditor(function(){e.updateElement()})};a(h.form).submit(c);a(h.form).bind("form-pre-serialize",c);b.bind("destroy.ckeditor",function(){a(h.form).unbind("submit",c);a(h.form).unbind("form-pre-serialize",c)})}e.on("destroy",function(){b.removeData("ckeditorInstance")});b.removeData("_ckeditorInstanceLock");b.trigger("instanceReady.ckeditor",[e]);g&&g.apply(e,[h]);j.resolve()}else setTimeout(arguments.callee, +100)},0)},null,null,9999)}});var f=new a.Deferred;this.promise=f.promise();a.when.apply(this,i).then(function(){f.resolve()});this.editor=this.eq(0).data("ckeditorInstance");return this}}),CKEDITOR.config.jqueryOverrideVal&&(a.fn.val=CKEDITOR.tools.override(a.fn.val,function(g){return function(d){if(arguments.length){var k=this,i=[],f=this.each(function(){var b=a(this),c=b.data("ckeditorInstance");if(b.is("textarea")&&c){var f=new a.Deferred;c.setData(d,function(){f.resolve()});i.push(f.promise()); +return!0}return g.call(b,d)});if(i.length){var b=new a.Deferred;a.when.apply(this,i).done(function(){b.resolveWith(k)});return b.promise()}return f}var f=a(this).eq(0),c=f.data("ckeditorInstance");return f.is("textarea")&&c?c.getData():g.call(f)}})))})(window.jQuery); \ No newline at end of file diff --git a/app/assets/javascripts/desktop/desktop.js b/app/assets/javascripts/desktop/desktop.js index 2890d85dc..66a8f2c44 100644 --- a/app/assets/javascripts/desktop/desktop.js +++ b/app/assets/javascripts/desktop/desktop.js @@ -19,3 +19,6 @@ //= require select2 //= require jquery.isotope.min.js //= require orbit_js_1.0.1-front-end +//= require ckeditor/init +//= require ckeditor/jquery-ckeditor + diff --git a/app/assets/javascripts/desktop/orbitdesktop.js b/app/assets/javascripts/desktop/orbitdesktop.js index 9b924a311..81579d99b 100755 --- a/app/assets/javascripts/desktop/orbitdesktop.js +++ b/app/assets/javascripts/desktop/orbitdesktop.js @@ -20,6 +20,7 @@ //for forms //form-type = "ajax_form" will turn form to ajax submit //notification = string will display after the form is succesfully submitted +//response-type = "json"|"script"|"xml|html" default is json //for layout tinyscrollbar //content-layout="datalist|column|simple" datalist is for data list from database.. column is usually for forms and some other pages.. simple is without any columns, the page will be displayed as it is.. base width will be considered the default width for tinyscrollbar @@ -247,16 +248,12 @@ var orbitDesktop = function(dom){ $("body").on("submit","form[form-type=ajax_form]",function(){ var callback_method = $(this).attr("callback-method"), - dt = null, + dt = ($(this).attr("response-type") == null ? "json" : $(this).attr("response-type")), notification = $(this).attr("notification"); - dt = $(this).attr("response-type"); - if(dt == null){ - dt = "json"; - } var options = { dataType : dt, - resetForm : true, - success:function(responseText, statusText, xhr, $form){ + resetForm : false, + success: function(responseText, statusText, xhr, $form){ if(typeof callback_method != "undefined"){ if(callback_method != ""){ window.o[o.data_method][callback_method](responseText,statusText,xhr,$form); @@ -265,7 +262,7 @@ var orbitDesktop = function(dom){ if(typeof notification == "string") o.notify(notification,"success"); }, - error:function(){ + error: function(){ o.notify("Please try again later!","imp"); } } @@ -451,7 +448,7 @@ var orbitDesktop = function(dom){ var ist = function(){ $('#holder').css('height', $('#container').height() - 72); - $('.tinycanvas').css('height', $('#panel_r').height() - 36); + $('.tinycanvas').css('height', $('#holder').height() - 36); var dom = $("*[isotope=true]").isotope({ layoutMode: 'fitColumns', onLayout: function($elems, instance){ @@ -698,6 +695,15 @@ var orbitDesktop = function(dom){ } }) o.highlight_sub_menu_item(dom); + } else { + o.lastlink = dom.attr("href"); + $.ajax({ + url : dom.attr("href"), + type : "get", + success : function(data){ + o.layout_data(data); + } + }) } if(dom.length == 0) o.layout_data(data); @@ -1868,6 +1874,13 @@ var orbitDesktop = function(dom){ } } } + this.enablelanguageSelect = function(){ + $(".language_select a").click(function(event) { + $("*[data-language]").hide(); + $("*[data-language="+$(this).data("lang")+"]").show(); + return false; + }); + } this.minimizeBarManager = function(){ var minimizedApps = [], minimizeBar = $("#minimizebar"); diff --git a/app/controllers/desktop_controller.rb b/app/controllers/desktop_controller.rb index ab5856d1a..5be83a8a8 100644 --- a/app/controllers/desktop_controller.rb +++ b/app/controllers/desktop_controller.rb @@ -10,6 +10,7 @@ class DesktopController< ApplicationController def index @desktop = current_user.desktop @currentusername = current_user.name + @currentname = current_user.first_name + current_user.last_name @title = "Desktop - " + @currentusername @section = @desktop.sections.first end diff --git a/app/views/desktop/index.html.erb b/app/views/desktop/index.html.erb index 2290f7d6e..9796ade73 100644 --- a/app/views/desktop/index.html.erb +++ b/app/views/desktop/index.html.erb @@ -100,6 +100,6 @@ o.notify("We turn off the animation (javascript) for you, but still you can turn it on",10); } } - o.notify("Welcome "+o.currentUsername+"!!","alert",3); + o.notify("Welcome <%= @currentname %>!!","alert",3); diff --git a/vendor/built_in_modules/personal_book/app/assets/javascripts/personal_book/desktop/personal_books.js b/vendor/built_in_modules/personal_book/app/assets/javascripts/personal_book/desktop/personal_books.js index 739f98cb3..08a63fdb4 100644 --- a/vendor/built_in_modules/personal_book/app/assets/javascripts/personal_book/desktop/personal_books.js +++ b/vendor/built_in_modules/personal_book/app/assets/javascripts/personal_book/desktop/personal_books.js @@ -84,7 +84,13 @@ orbitDesktop.prototype.initializePersonalBook = function(target,url,cache){ // t uploadFiles(); languageSelect(); } - + this.initializePersonalBook.brief = function(){ + o.enablelanguageSelect(); + $("textarea.editor").ckeditor({ + height: 300, + width: $(".overview").width() - 20 + }); + } this.initializePersonalBook.coAuthorformCallback = function(data){ if(data.success){ diff --git a/vendor/built_in_modules/personal_book/app/controllers/panel/personal_book/desktop/plugin_intros_controller.rb b/vendor/built_in_modules/personal_book/app/controllers/panel/personal_book/desktop/plugin_intros_controller.rb new file mode 100644 index 000000000..aee4700a9 --- /dev/null +++ b/vendor/built_in_modules/personal_book/app/controllers/panel/personal_book/desktop/plugin_intros_controller.rb @@ -0,0 +1,32 @@ +class Panel::PersonalBook::Desktop::PluginIntrosController < ApplicationController + + def index + @intro = PersonalBookIntro.where(:user_id => current_user.id.to_s).first + if @intro.blank? + @intro = PersonalBookIntro.new + render "new", :layout => false + else + render "edit", :layout => false + end + end + + def create + @intro = PersonalBookIntro.new(params[:personal_book_intro]) + @intro.user_id = current_user.id + if @intro.save + render :json => {"success" => true}.to_json + else + render :json => {"success" => false}.to_json + end + end + + def update + @intro = PersonalBookIntro.find(params[:id]) + if @intro.update_attributes(params[:personal_book_intro]) + render :json => {"success" => true}.to_json + else + render :json => {"success" => false}.to_json + end + end + +end \ No newline at end of file diff --git a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/desktop/personal_books/books_window.html.erb b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/desktop/personal_books/books_window.html.erb index 4f299ab19..137e19da3 100644 --- a/vendor/built_in_modules/personal_book/app/views/panel/personal_book/desktop/personal_books/books_window.html.erb +++ b/vendor/built_in_modules/personal_book/app/views/panel/personal_book/desktop/personal_books/books_window.html.erb @@ -17,6 +17,7 @@