diff --git a/README.md b/README.md index e859a36319..68f87231ef 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ core engine. **Cool API:** Publify supports the various blogging engine APIs so you can publish from desktop clients. -**On demand editor:** Publify supports various editors (visual, plain HTML, +**On demand syntax:** Publify supports various syntax (plain HTML, Markdown, Textile) **Multilingual**: Publify is (more or less) translated in English, French, diff --git a/app/controllers/admin/base_controller.rb b/app/controllers/admin/base_controller.rb index 793c1c76eb..09460d8986 100644 --- a/app/controllers/admin/base_controller.rb +++ b/app/controllers/admin/base_controller.rb @@ -6,15 +6,6 @@ class Admin::BaseController < ApplicationController before_filter :look_for_needed_db_updates, :except => [:login, :signup, :update_database, :migrate] before_filter :check_and_generate_secret_token, :except => [:login, :signup, :update_database, :migrate] - def insert_editor - editor = 'visual' - editor = 'simple' if params[:editor].to_s == 'simple' - current_user.editor = editor - current_user.save! - - render :partial => "#{editor}_editor" - end - private def update_settings_with!(params) diff --git a/app/controllers/admin/content_controller.rb b/app/controllers/admin/content_controller.rb index 5a5f23e83d..f2d8236285 100644 --- a/app/controllers/admin/content_controller.rb +++ b/app/controllers/admin/content_controller.rb @@ -96,11 +96,6 @@ def autosave @article.attributes = params[:article] - # Crappy workaround to have the visual editor work. - if current_user.visual_editor? - @article.body = params[:article][:body_and_extended] - end - @article.published = false @article.set_author(current_user) @article.save_attachments!(params[:attachments]) diff --git a/app/controllers/admin/pages_controller.rb b/app/controllers/admin/pages_controller.rb index 32d9377814..b4e6bb9ce3 100644 --- a/app/controllers/admin/pages_controller.rb +++ b/app/controllers/admin/pages_controller.rb @@ -45,11 +45,7 @@ def destroy private def default_textfilter - if current_user.visual_editor? - "none" - else - current_user.text_filter || blog.text_filter - end + current_user.text_filter || blog.text_filter end diff --git a/app/helpers/admin/base_helper.rb b/app/helpers/admin/base_helper.rb index aa9b7aa0b7..2c12fb9a0f 100644 --- a/app/helpers/admin/base_helper.rb +++ b/app/helpers/admin/base_helper.rb @@ -129,20 +129,7 @@ def published_or_not(item) end def macro_help_popup(macro, text) - unless current_user.editor == 'visual' - " 'textfilters', :action => 'macro_help', :id => macro.short_name}\" onclick=\"return popup(this, 'Publify Macro Help')\">#{text}" - end - end - - def build_editor_link(label, action, id, update, editor) - link = link_to_remote(label, - :url => { :action => action, 'editor' => editor}, - :method => :get, - :class => 'ui-button-text', - :loading => "new Element.show('update_spinner_#{id}')", - :success => "new Element.toggle('update_spinner_#{id}')", - :update => "#{update}") - link << image_tag("spinner-blue.gif", :id => "update_spinner_#{id}", :style => 'display:none;') + " 'textfilters', :action => 'macro_help', :id => macro.short_name}\" onclick=\"return popup(this, 'Publify Macro Help')\">#{text}" end def display_pagination(collection, cols, first='', last='') diff --git a/app/models/blog.rb b/app/models/blog.rb index 34cc1bc1bb..f521ed2178 100644 --- a/app/models/blog.rb +++ b/app/models/blog.rb @@ -53,7 +53,6 @@ class Blog < ActiveRecord::Base setting :ping_urls, :string, "http://blogsearch.google.com/ping/RPC2\nhttp://rpc.technorati.com/rpc/ping\nhttp://ping.blo.gs/\nhttp://rpc.weblogs.com/RPC2" setting :send_outbound_pings, :boolean, true setting :email_from, :string, 'publify@example.com' - setting :editor, :integer, 'visual' setting :allow_signup, :integer, 0 setting :date_format, :string, '%d/%m/%Y' setting :time_format, :string, '%Hh%M' diff --git a/app/models/user.rb b/app/models/user.rb index 0a0bb735de..9f2be5f7ca 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -21,7 +21,6 @@ class User < ActiveRecord::Base # Settings setting :notify_watch_my_articles, :boolean, true - setting :editor, :string, 'visual' setting :firstname, :string, '' setting :lastname, :string, '' setting :nickname, :string, '' @@ -110,7 +109,6 @@ def permalink_url(anchor=nil, only_path=false) end def default_text_filter - return "none" if visual_editor? text_filter end @@ -148,14 +146,6 @@ def self.to_prefix 'author' end - def simple_editor? - editor == 'simple' - end - - def visual_editor? - editor == 'visual' - end - def password=(newpass) @password = newpass end diff --git a/app/views/admin/content/_form.html.erb b/app/views/admin/content/_form.html.erb index b0dac3a3a1..cc7e4d4ab7 100644 --- a/app/views/admin/content/_form.html.erb +++ b/app/views/admin/content/_form.html.erb @@ -1,4 +1,3 @@ -
<%= set_autosave_tag(@article) %>
@@ -24,28 +23,18 @@
-
'> +
-
> - <%= ckeditor_textarea('article', 'body_and_extended', {:class => 'large', :height => '300px', :rows => '20'}) if current_user.editor == 'visual' %> -
- -
> - <%= text_area('article', 'body_and_extended', {:class => 'input-block-level', :height => '360px'}) if current_user.editor == 'simple' %> - <%= render 'admin/shared/macros' if current_user.editor == 'simple' %> +
+ <%= text_area('article', 'body_and_extended', {:class => 'input-block-level', :height => '360px'}) %> + <%= render 'admin/shared/macros' %>
diff --git a/app/views/admin/content/_simple_editor.html.erb b/app/views/admin/content/_simple_editor.html.erb deleted file mode 100644 index a7f7d73103..0000000000 --- a/app/views/admin/content/_simple_editor.html.erb +++ /dev/null @@ -1,21 +0,0 @@ - -<%= text_area('article', 'body_and_extended', {:class => 'input-block-level', :height => '300px', :rows => '20'}) %> - \ No newline at end of file diff --git a/app/views/admin/content/_visual_editor.html.erb b/app/views/admin/content/_visual_editor.html.erb deleted file mode 100644 index 6f32bd4020..0000000000 --- a/app/views/admin/content/_visual_editor.html.erb +++ /dev/null @@ -1,21 +0,0 @@ - -<%= ckeditor_textarea('article', 'body_and_extended', {:height => '300', :class => 'large'}) %> - \ No newline at end of file diff --git a/app/views/admin/pages/_form.html.erb b/app/views/admin/pages/_form.html.erb index 6b29b37d17..94b43fa21f 100644 --- a/app/views/admin/pages/_form.html.erb +++ b/app/views/admin/pages/_form.html.erb @@ -1,4 +1,3 @@ -
');z=h.createFromHtml(L.join(''));}var N=z,O=function(){var R=K.getViewPaneSize();N.setStyles({width:R.width+'px',height:R.height+'px'});},P=function(){var R=K.getScrollPosition(),S=a.dialog._.currentTop;N.setStyles({left:R.x+'px',top:R.y+'px'});do{var T=S.getPosition();S.move(T.x,T.y);}while(S=S._.parentDialog)};y=O;K.on('resize',O);O();if(b.ie6Compat){var Q=function(){P();arguments.callee.prevScrollHandler.apply(this,arguments);};K.$.setTimeout(function(){Q.prevScrollHandler=window.onscroll||(function(){});window.onscroll=Q;},0);P();}N.setOpacity(J.config.dialog_backgroundCoverOpacity);N.appendTo(a.document.getBody());},B=function(){if(!z)return;var J=a.document.getWindow();z.remove();J.removeListener('resize',y);if(b.ie6Compat)J.$.setTimeout(function(){var K=window.onscroll&&window.onscroll.prevScrollHandler;window.onscroll=K||null;},0);y=null;},C={},D=function(J){var K=J.data.$.ctrlKey||J.data.$.metaKey,L=J.data.$.altKey,M=J.data.$.shiftKey,N=String.fromCharCode(J.data.$.keyCode),O=C[(K?'CTRL+':'')+(L?'ALT+':'')+(M?'SHIFT+':'')+N];if(!O||!O.length)return;O=O[O.length-1];O.keydown&&O.keydown.call(O.uiElement,O.dialog,O.key);J.data.preventDefault();},E=function(J){var K=J.data.$.ctrlKey||J.data.$.metaKey,L=J.data.$.altKey,M=J.data.$.shiftKey,N=String.fromCharCode(J.data.$.keyCode),O=C[(K?'CTRL+':'')+(L?'ALT+':'')+(M?'SHIFT+':'')+N];if(!O||!O.length)return;O=O[O.length-1];O.keyup&&O.keyup.call(O.uiElement,O.dialog,O.key);J.data.preventDefault();},F=function(J,K,L,M,N){var O=C[L]||(C[L]=[]);O.push({uiElement:J,dialog:K,key:L,keyup:N||J.accessKeyUp,keydown:M||J.accessKeyDown});},G=function(J){for(var K in C){var L=C[K];for(var M=L.length-1;M>=0;M--)if(L[M].dialog==J||L[M].uiElement==J)L.splice(M,1);if(L.length===0)delete C[K];}},H=function(J,K){if(J._.accessKeyMap[K])J.selectPage(J._.accessKeyMap[K]);},I=function(J,K){};(function(){k.dialog={uiElement:function(J,K,L,M,N,O,P){if(arguments.length<4)return;var Q=(M.call?M(K):M)||('div'),R=['<',Q,' '],S=(N&&N.call?N(K):N)||({}),T=(O&&O.call?O(K):O)||({}),U=(P&&P.call?P(J,K):P)||(''),V=this.domId=T.id||e.getNextNumber()+'_uiElement',W=this.id=K.id,X;T.id=V;var Y={};if(K.type)Y['cke_dialog_ui_'+K.type]=1;if(K.className)Y[K.className]=1;var Z=T['class']&&T['class'].split?T['class'].split(' '):[];for(X=0;X=0;X--)if(ab[X]==='')ab.splice(X,1);if(ab.length>0)T.style=(T.style?T.style+'; ':'')+(ab.join('; '));for(X in T)R.push(X+'="'+e.htmlEncode(T[X])+'" ');R.push('>',U,'');L.push(R.join(''));(this._||(this._={})).dialog=J;if(typeof K.isChanged=='boolean')this.isChanged=function(){return K.isChanged;};if(typeof K.isChanged=='function')this.isChanged=K.isChanged;a.event.implementOn(this);this.registerEvents(K);if(this.accessKeyUp&&this.accessKeyDown&&K.accessKey)F(this,J,'CTRL+'+K.accessKey);var ac=this;J.on('load',function(){if(ac.getInputElement())ac.getInputElement().on('focus',function(){J._.tabBarMode=false;J._.hasFocus=true;ac.fire('focus');},ac);});if(this.keyboardFocusable){this.focusIndex=J._.focusList.push(this)-1;this.on('focus',function(){J._.currentFocusIndex=ac.focusIndex;});}e.extend(this,K);},hbox:function(J,K,L,M,N){if(arguments.length<4)return;this._||(this._={});var O=this._.children=K,P=N&&N.widths||null,Q=N&&N.height||null,R={},S,T=function(){var U=[''];for(S=0;S0)U.push('style="'+W.join('; ')+'" ');U.push('>',L[S],'');}U.push('');return U.join('');};k.dialog.uiElement.call(this,J,N||{type:'hbox'},M,'table',R,N&&N.align&&{align:N.align}||null,T);},vbox:function(J,K,L,M,N){if(arguments.length<3)return;this._||(this._={});var O=this._.children=K,P=N&&N.width||null,Q=N&&N.heights||null,R=function(){var S=['');for(var T=0;T');}S.push('
0)S.push('style="',U.join('; '),'" ');S.push(' class="cke_dialog_ui_vbox_child">',L[T],'
');return S.join('');};k.dialog.uiElement.call(this,J,N||{type:'vbox'},M,'div',null,null,R);}};})();k.dialog.uiElement.prototype={getElement:function(){return a.document.getById(this.domId);},getInputElement:function(){return this.getElement();},getDialog:function(){return this._.dialog;},setValue:function(J){this.getInputElement().setValue(J);this.fire('change',{value:J});return this;},getValue:function(){return this.getInputElement().getValue();},isChanged:function(){return false;},selectParentTab:function(){var M=this;var J=M.getInputElement(),K=J,L;while((K=K.getParent())&&(K.$.className.search('cke_dialog_page_contents')==-1)){}if(!K)return M;L=K.getAttribute('name');if(M._.dialog._.currentTabId!=L)M._.dialog.selectPage(L);return M;},focus:function(){this.selectParentTab().getInputElement().focus();return this;},registerEvents:function(J){var K=/^on([A-Z]\w+)/,L,M=function(O,P,Q,R){P.on('load',function(){O.getInputElement().on(Q,R,O);});};for(var N in J){if(!(L=N.match(K)))continue;if(this.eventProcessors[N])this.eventProcessors[N].call(this,this._.dialog,J[N]);else M(this,this._.dialog,L[1].toLowerCase(),J[N]);}return this;},eventProcessors:{onLoad:function(J,K){J.on('load',K,this);},onShow:function(J,K){J.on('show',K,this);},onHide:function(J,K){J.on('hide',K,this);}},accessKeyDown:function(J,K){this.focus();},accessKeyUp:function(J,K){},disable:function(){var J=this.getInputElement();J.setAttribute('disabled','true');J.addClass('cke_disabled');},enable:function(){var J=this.getInputElement();J.removeAttribute('disabled');J.removeClass('cke_disabled');},isEnabled:function(){return!this.getInputElement().getAttribute('disabled');},isVisible:function(){return!!this.getInputElement().$.offsetHeight;},isFocusable:function(){if(!this.isEnabled()||!this.isVisible())return false;return true;}};k.dialog.hbox.prototype=e.extend(new k.dialog.uiElement(),{getChild:function(J){var K=this;if(arguments.length<1)return K._.children.concat();if(!J.splice)J=[J];if(J.length<2)return K._.children[J[0]];else return K._.children[J[0]]&&K._.children[J[0]].getChild?K._.children[J[0]].getChild(J.slice(1,J.length)):null;}},true);k.dialog.vbox.prototype=new k.dialog.hbox();(function(){var J={build:function(K,L,M){var N=L.children,O,P=[],Q=[];for(var R=0;R'; -});n.on('themeLoaded',function(){n.fireOnce('editingBlockReady');});n.on('uiReady',function(){n.setMode(n.config.startupMode);});n.on('afterSetData',function(){if(!m){function o(){m=true;l(n).loadData(n.getData());m=false;};if(n.mode)o();else n.on('mode',function(){o();n.removeListener('mode',arguments.callee);});}});n.on('beforeGetData',function(){if(!m&&n.mode){m=true;n.setData(l(n).getData());m=false;}});n.on('getSnapshot',function(o){if(n.mode)o.data=l(n).getSnapshotData();});n.on('loadSnapshot',function(o){if(n.mode)l(n).loadSnapshotData(o.data);});n.on('mode',function(o){o.removeListener();var p=n.container;if(b.webkit&&b.version<528){var q=n.config.tabIndex||n.element.getAttribute('tabindex')||0;p=p.append(h.createFromHtml(''));}p.on('focus',function(){n.focus();});if(n.config.startupFocus)n.focus();setTimeout(function(){n.fireOnce('instanceReady');a.fire('instanceReady',null,n);});});}});a.editor.prototype.mode='';a.editor.prototype.addMode=function(n,o){o.name=n;(this._.modes||(this._.modes={}))[n]=o;};a.editor.prototype.setMode=function(n){var o,p=this.getThemeSpace('contents'),q=this.checkDirty();if(this.mode){if(n==this.mode)return;this.fire('beforeModeUnload');var r=l(this);o=r.getData();r.unload(p);this.mode='';}p.setHtml('');var s=l(this,n);if(!s)throw '[CKEDITOR.editor.setMode] Unknown mode "'+n+'".';if(!q)this.on('mode',function(){this.resetDirty();this.removeListener('mode',arguments.callee);});s.load(p,typeof o!='string'?this.getData():o);};a.editor.prototype.focus=function(){var n=l(this);if(n)n.focus();};})();i.startupMode='wysiwyg';i.startupFocus=false;i.editingBlock=true;j.add('panel',{beforeInit:function(l){l.ui.addHandler(2,k.panel.handler);}});a.UI_PANEL=2;k.panel=function(l,m){var n=this;if(m)e.extend(n,m);e.extend(n,{className:'',css:[]});n.id=e.getNextNumber();n.document=l;n._={blocks:{}};};k.panel.handler={create:function(l){return new k.panel(l);}};k.panel.prototype={renderHtml:function(l){var m=[];this.render(l,m);return m.join('');},render:function(l,m){var o=this;var n='cke_'+o.id;m.push('
');return n;},getHolderElement:function(){var l=this._.holder;if(!l){if(this.forceIFrame||this.css.length){var m=this.document.getById('cke_'+this.id+'_frame'),n=m.getParent(),o=n.getAttribute('dir'),p=n.getParent().getAttribute('class'),q=n.getParent().getAttribute('lang'),r=m.getFrameDocument();r.$.open();if(b.isCustomDomain())r.$.domain=document.domain;var s=e.addFunction(e.bind(function(u){this.isLoaded=true;if(this.onLoad)this.onLoad();},this));r.$.write(''+''+''+''+''+''+''+'');r.$.close();var t=r.getWindow();t.$.CKEDITOR=a;r.on('keydown',function(u){var w=this;var v=u.data.getKeystroke();if(w._.onKeyDown&&w._.onKeyDown(v)===false){u.data.preventDefault();return;}if(v==27)w.onEscape&&w.onEscape();},this);l=r.getBody();}else l=this.document.getById('cke_'+this.id);this._.holder=l;}return l;},addBlock:function(l,m){var n=this;m=n._.blocks[l]=m||new k.panel.block(n.getHolderElement());if(!n._.currentBlock)n.showBlock(l);return m;},getBlock:function(l){return this._.blocks[l];},showBlock:function(l){var p=this;var m=p._.blocks,n=m[l],o=p._.currentBlock;if(o)o.hide();p._.currentBlock=n;n._.focusIndex=-1;p._.onKeyDown=n.onKeyDown&&e.bind(n.onKeyDown,n);n.show();return n;}};k.panel.block=e.createClass({$:function(l){this.element=l.append(l.getDocument().createElement('div',{attributes:{'class':'cke_panel_block'},styles:{display:'none'}}));this.keys={};this._.focusIndex=-1;},_:{},proto:{show:function(){this.element.setStyle('display','');},hide:function(){var l=this;if(!l.onHide||l.onHide.call(l)!==true)l.element.setStyle('display','none');},onKeyDown:function(l){var q=this;var m=q.keys[l];switch(m){case 'next':var n=q._.focusIndex,o=q.element.getElementsByTag('a'),p;while(p=o.getItem(++n))if(p.getAttribute('_cke_focus')&&p.$.offsetWidth){q._.focusIndex=n;p.focus();break;}return false;case 'prev':n=q._.focusIndex;o=q.element.getElementsByTag('a');while(n>0&&(p=o.getItem(--n)))if(p.getAttribute('_cke_focus')&&p.$.offsetWidth){q._.focusIndex=n;p.focus();break;}return false;case 'click':n=q._.focusIndex; -p=n>=0&&q.element.getElementsByTag('a').getItem(n);if(p)p.$.click?p.$.click():p.$.onclick();return false;}return true;}}});j.add('listblock',{requires:['panel'],onLoad:function(){k.panel.prototype.addListBlock=function(l,m){return this.addBlock(l,new k.listBlock(this.getHolderElement(),m));};k.listBlock=e.createClass({base:k.panel.block,$:function(l,m){var o=this;o.base(l);o.multiSelect=!!m;var n=o.keys;n[40]='next';n[9]='next';n[38]='prev';n[2000+9]='prev';n[32]='click';o._.pendingHtml=[];o._.items={};o._.groups={};},_:{close:function(){if(this._.started){this._.pendingHtml.push('');delete this._.started;}},getClick:function(){if(!this._.click)this._.click=e.addFunction(function(l){var n=this;var m=true;if(n.multiSelect)m=n.toggle(l);else n.mark(l);if(n.onClick)n.onClick(l,m);},this);return this._.click;}},proto:{add:function(l,m,n){var q=this;var o=q._.pendingHtml,p='cke_'+e.getNextNumber();if(!q._.started){o.push('