How to switch the default wysiwyg editor from tinymce?

Permalink
Tinymce doesn't load here, it's on demand loading method is insecure, so system security software prevents tinymce from loading.
I'm not prepared to just adjust the settings in the software to accommodate the problem, I want to solve the problem.

Now having no knowledge of the tinymce code in concrete5 or any interest in tinymce, I would like to swap out tinymce and use niceEdit instead. It's small enough to not need to be loaded on demand because it doesn't contain the bloat that tinymce has and to me it seems to function in a much more appealing way.

http://nicedit.com/

So to use nicEdit in concrete5 as the default editor for text areas I need to deacivate tinymce.
How would I do that correctly?
I know that just removing the tinymce.js from the head would do it but I'm sure there is lots more code that is refering to tinymce, where is that code please?

I'd really like to code it as some sort of drop-in module but without a "Turn off tinymce" Switch in concrete5, will it be at all possible for me to attempt this without touching the concrete5 core.
I really don't want to touch any core files if I can help it. :)

View Replies:
frz replied on at Permalink Reply
frz
just treat it as a new block type, and use the content block as a starting point. call it nicEdit Block and we'll happily throw it in the marketplace for ya if you can get it stable..
scoop replied on at Permalink Reply
Maybe I'm just missing something but I can't even get the "Hello world" Package to appear as a block.
I copy the extracted folder to the blocks folder and it should appear in the dashboard?

So I've hacked away at some of the code but can't see how to test it.

Also, what's the deal with the curl requirement for marketplace?
Surely there's a better way to do that, or even add wget (Or even aria2) As choices for other downloaders as possible server side download helpers?
Isn't there a built-in php way to fall back on?
scoop replied on at Permalink Reply
Tinymce is destroying text layout when switching to html edit mode.
I cannot work with the thing. It's garbage.
bbcode support is terrible and only partially, sort of works.
Switching to html mode every time I want to add an ampersand to text blows.

I think that relying on such a poor piece of software for site wide content editing is a very bad choice.

Please review the choice of tinymce as the default editor for concrete5. I for one like concrete5 but the tinymce integration is rapidly changing my mind. If I and others can't edit text in html mode without tinymce destroying the paragraphs, it's completely useless.

I'll try to investigate creating the nicedit module if I have some time to waste, when I should really just go back to drupal instead but if I can get it to work, I see absolutely no need to provide it for your marketplace as a solution to a bug in concrete5.
frz replied on at Permalink Reply
frz
dude. deep breaths.

tinyMCE is used all over the place. We used to use FCKeditor, but it had its own quirks. tinyMCE was the bell of the ball in late 2007/early 2008 when we were looking for a new one, so that's default...

As you no doubt know, there's no reason anyone couldn't add their own text editor as a new content block type, and we'd love it if they did and offered it in the marketplace (for free or not). I would strongly recommend keeping the c5 stuff in its own toolbar as we did with tinyMCE because deep integration on this stuff gets to be a nightmare to maintain.

nicEdit is news to me. frankly it seems like every 2 years there's a new, partially working solution to this problem because HTML is a bit of a b!tch to deal with..

the attitude that we're a bunch of idiots for picking tinyMCE for the default solution is not particularly fair. That's what wordpress uses, its not like we pulled the thing out of some developer's basement in Bulgaria..

you got a better solution? go for it.
scoop replied on at Permalink Reply
Never said anyone was an idiot.
What I did say is that I would like you to review the choice of tinymce as the default editor in concrete5 because it doesn't work here. Because I've seen at least one other person on the forum having a horrible time with it.

Of course, I'm going to be ticked if I've uploaded concrete5 after doing some basic testing only to find out that because of tinymce, I can't edit pages freely.
I know how to configure tinymce using the config and it doesn't work as expected here.

So after uploading, so that I could concentrate purely on content, the precise reason I uploaded a cms instead of coding it myself, was made completely void.
So, starting to wish I had uploaded Drupal instead of now requiring to try to learn another cms' module development system.

Of course I'm going to vent a bit if there is limited documentation available for the block plugin system, which does not contain clear code examples, has many pages of uncommented code that is difficult to navigate and a block plugin system that doesn't seem to work as expected at all.

And this is not a personal attack, I'm simply pointing out problems that I have experienced so far in concrete5 as a result of what I see as flaws in it's design, especially it's core reliance on tinymce.

If I had wanted to spend time coding instead of creating content, I would have chosen Drupal.
I want to add content and not code all the time instead.

As far as the ampersands go, I validate every page at w3c's validator and the titles of pages created in the dashboard are not adding ampersands to the generated output and neither does tinymce unless I do it manually by switching to html mode.

I think that the html block is more suited to nicedit as a starting point instead of the content block but when I can only get already installed addons to uninstall and install and nothing I download from the marketplace will (Including Hello World,) It's an up hill struggle.

It's a bug if I can't edit pages without tinymce stripping out all the tags when switching to html edit mode.
frz replied on at Permalink Reply
frz
look man. thousands of hours have gone into concrete5, and it's free to you.

No one in their right mind would say tinyMCE isn't one of the top three players in the world of LGPL wysiwyg web based editors, h3ll, it's probably in the top 3 of commercial ones too. Thousands of beefy apps use it, it was made project of the month on sourceForge, just like we were, last year... No, it's not perfect, but it's a healthy project. If you think it's garbage, that's certainly your prerogative. To be direct, I've had more beef with stability around jQuery than tinyMCE.. Thus is life when you share.

I totally agree our documentation could use some help, that's always been true. We're workin' on that.

I can tell ya, rethinking our choice of tinyMCE is not on our radar. We have all sorts of things from better internationalization to agnostic database support on the list, but jumping from favorite WYSIWYG editor to editor every 6 months is not one of 'em.

While I appreciate your frustration, and I certainly recognize your right to vent - I would suggest it may not be the most effective way to get your needs healthy attention around here.

Defining bug? Really? I thought bugs are things that crawl onto diodes and die shorting circuits out. This is a feature of tinyMCE, I agree it's a
"taking a crap is a feature of life" kinda feature - but it's known behavior.

1) take the discussion to tinyMCE's forums, post me the thread and I'll totally jump on it with ya. I agree. It's annoying.

2) Use the HTML block for your complicated problems and enjoy.

3) Build yourself, and share with us if you want, integration with any editor you like more. It sounds like you know better than to think the only advantage of concrete5 over drupal is the WYSIWYG editor that comes bundled... no?
scoop replied on at Permalink Reply
I'm not really angry, I can deal with the extra work (I think.)
I was hoping to be lazy (Or get something else more important done) This time...

Anyway, thanks for at least replying, many wouldn't and would just get the heel out of there.

I wasn't aware of the apparent "Feature" Tinymce seems to adopt, so thanks for the info, could be one of those can't fix, won't fix kind of deals.
I don't think moxicode are interested in doing much to the editor unless they are sponsored.

To put the editor thing into perspective compared to the big two, Joomla ships with tinymce but has a disable tinymce option in it's administration backend, that allows the installation of modules implementing other wysiwyg editors.
Drupal on the other hand has a Wysiwyg API :

http://drupal.org/project/wysiwyg...

But ships with no wysiwyg editor.

So my frustration kind of stems from those other two content management systems dealing with the wysiwyg problem/choice very well and with concrete5, being given the options of; deal with it or get up to your elbows in someone else's code that they didn't really comment, which is designed to accommodate an editor that I would need to learn more about in order to understand and remove the code for if I want to change that.

Now that Tony's filled me in on how the packages work, or is that blocks, no; I know I mean packages I can try and have a better stab at the nicedit package, I certainly need to just spend a few quiet hours doing it.
I was hoping that if I was going to create a package, it was going to be something more fun like a carousel, a scrollable image gallery or a something a bit more exciting than a third party wysiwyg editor.
Ho, hum. :)

Please excuse the rant, I was frustrated about the choice I will have to make if I can't create a solution.

Please, please, please get the documentation for this project beyond amazing because you will enable, hopefully tons of people to code their own solutions and learn how to use the software without the need to pester you, so that you can spend more time coding. :)
Remo replied on at Permalink Reply
Remo
I already asked for ideas of tutorials.

I don't have enough time to write a hole book. Need to work & study..

You can find a few tutorials (in german and a few in english) about c5 development -http://www.codeblog.ch

If you're looking for something specific that would be nice for a tutorial, send me a message. I'd be happy to write it.

It's not my intention to solve problems of other people, but rather to explain them how to solve them on their own...

If you explain a bit more carefully what tinymce does in your situation me and a few others are going to help you. I never had problems like the ones you've mentioned and I'm using the html editor quite often..
Explain how to reproduce them and you'll
realize that a lot of people in that community are willing to help you!
frz replied on at Permalink Reply
frz
so' nuff.

I have had the issues you're talking about with tinyMCE stripping stuff in HTML mode.. rather annoying.

it was always our intention that every major editor be made available as their own block type. there's no real reason to provide a wysiwyg API, the block structure will handle it fine, i think the advantage of being able to switch editors while editing a specific block of html is out weighed by the bloat and confusion that would create...

yes, if i had an extra dime, I would hire a tech writer full time right away. I do think however the more you dig the more you'll find code is actually pretty clean and clear.

thanks for coming around. ;) keep in mind, we've been open source for ...i guess 10 months now?
-frz
ideasponge replied on at Permalink Reply
ideasponge
The thing that makes c5 shine for me is it's simplicity in managing content. If you go and create different Block types to do the same job, then things are getting really ugly. What if one user editing my site has a personal preference of tinyMCE, yet another prefer FCK editor(my own personal fav).

It would be really sweet if c5 handled editors like Joomla does, at the user level. Letting individual users choose which editor they use. This would make it so that User A, who used tinyMCE, and User B, who uses FCKEditor, can both edit a content block with the editor they prefer (separate times though of course).

This would also also site admins to change editors if a new release of c5 comes with a new version of an editor that does not work(i.e. the problem that seems to be happening recently).

cheers
ScottC replied on at Permalink Reply
ScottC
the whole concept isn't hard at all. I think tinymce is great, I sort of like jqueryRTE for the even lower common denominator in "rich text" manipulation in a textbox. All of them serve their purpose in various regards to and of abstraction from overall complexity.

Assigning this per project and per user creation isn't outside of the scope of extendability from my arm's length view on concrete5 and should perhaps be put on the feature request for 5.4+ IMHO.
frz replied on at Permalink Reply
frz
in the abstract, I agree it makes sense to have the editor be something that can be switched in ... i dunno, even realtime? certainly user's preference... perhaps limited by site admins..etc..

however, in reality, I'm dubious of putting all that in the core and having it work right. There's just a lot of ways every one of those things can go wrong and bring a lot of bloat.. I certainly am not excited about having to maintain integration with half a dozen editors instead of one, one seems plenty challenging..

in the real world, the only downer i can see about using the existing block structure to provide different editors is a html block made with tinyMCE can't be easily edited with FCKeditor.. is that really such a common scenario? I know its possible, but likey? I dunno..

I think scottC's point is quite accurate tho.. a lot of talk about something that is reasonably low on the core team's priorities... we've lots of add-ons to be worried about, we've got some important core features like internationalization... etc..
scoop replied on at Permalink Reply
to this and your comment about jquery, I've found an issue that could potentially be avoided.

Related to this post :

http://www.concrete5.org/index.php?cID=11162...

I've found that :

$html = Loader::helper('html');
         $this->addHeaderItem($html->javascript($niceditjs));

Includes the .js file at the bottom of the head tag, which if you use jquery alot like I do, you know it's a very bad idea because no jquery scripts need to be above any jquery to avoid conflicts with the way jquery overides the $ function.

Is there any way that all jquery stuff in concrete5 can be added to the bottom of the head?

Something like :

$html = Loader::helper('html');
         $this->addHeaderItem($html->jquery($randomvariablejs));

Could be added to the api that adds jquery js files to the bottom of the head tag and all other js scripts be added to the top by using the javascript helper? Also the concrete5 builtin jquery stuff would need to be doing the same thing.

If we want to use other js libraries in concrete5, something like this needs to be available, I'd use jquery all the time if I could but it doesn't always workout like that.

Or is there a way in the api to already do this?

File a bug report?
jelthure replied on at Permalink Reply
jelthure
not sure exactly why you would need to go into the html view to add an ampersand. I just performed a couple tests looking into your issue, and tinyMCE is functioning beautifully. have you done any special modifications to your c5 install that might be causing a conflict with tinyMCE?

For your issue with bbcode it may just be that your instance of tinyMCE isn't loading the bbcode plugin. As you can see here:http://tinymce.moxiecode.com/examples/example_09.php... bbcode works perfectly. You might want to double check your code to see if you're loading the bbcode plugin properly.

If you need assistance feel free to post you code up on this thread and I can take a look when i get a minute.
scoop replied on at Permalink Reply
theme : "concrete", 
plugins: "inlinepopups,spellchecker,safari,bbcode,emotions,insertdatetime",
editor_selector : "advancedEditor",
spellchecker_languages : "+English=en",   
theme_concrete_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,hr,|,styleselect,formatselect,fontsizeselect",
theme_concrete_buttons2 : "bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,forecolor",
theme_concrete_blockformats : "p,address,pre,h1,h2,h3,div,blockquote,cite",
theme_concrete_toolbar_align : "left",
theme_concrete_fonts : "Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",
theme_concrete_font_sizes : "1,2,3,4,5,6,7",
theme_concrete_styles: "Note=ccm-note;Code=codeStyle;Quote=quoteStyle",
spellchecker_languages : "+English=en"
/*
// Use the advanced theme for more than two rows of content
plugins: "inlinepopups,spellchecker,safari,table,advhr,xhtmlxtras,emotions,insertdatetime,paste,visualchars,nonbreaking,pagebreak,style,bbcode",


Thank you for the review of the code, if you have the time.
I did study the example on the tinymce website.
scoop replied on at Permalink Reply
I've tried to get nicedit to load but because of the way that the editor window loads, which I still don't understand, ajax? jquery? I took a second look and found markitup.

http://markitup.jaysalvat.com/home/...

It appears to be exactly what I want concrete5 to use by default :

http://markitup.jaysalvat.com/examples/...

So use the html example to create a markitup block for html and the textile example to create a general purpose editing block instead of the content block.

If anyone can point me towards some decent documentation on how to cleanly uninstall blocks please, there is a bug :

http://www.concrete5.org/community/bugs/uninstalling_a_block_doesnt...
scoop replied on at Permalink Reply
I'm basically stuck now and could really do with some help with this alternative to tinymce, if anyone is able to, please.

Here's the code so far :

http://dropshadow.co.cc/concrete5_htmlbox_wysiwyg_editor_block...

It uses HtmlBox, it was the best editor I could find that worked without error and had full source code.

The code that is up is a block module if anyone wants to try it out.
Right now, it is at best an OK replacement for the html module but there are somethings that need to be done to it that I can't currently do :

Add jquery code to /HtmlBox/blocks/HtmlBoxBlock/editor_init.php
That will make the concrete add image/link menu work.

Stop the htmlbox from wrapping all text with <p></p> tags as tinymce does, after pressing enter to create a new line. wysiwyg is append <br /> after instead (<br /> because it's xhtml.)

Add htmlbox.css to the head of every page, edit, edit mode, display and outside of edit mode.

Please only test if you think you can workout how to prevent the p tag wrapping or make the menu work.

Extract the archive into the packages folder then install in the normal way, then add it to some content.

This is not a submission for the marketplace, yet.
Feedback, ideas, help, please.
PhilipWitte replied on at Permalink Reply
PhilipWitte
I have not read all of what was said here, but I have ran into many difficulties with TinyMCE, even after playing around for days with it's configuration. It would be nice to have a more "stable" alternative if one exists (<a href='http://ckeditor.com/'>CK Editor</a> looks promising).

I've written simple RTX myself before, and was honestly thinking about attempting to make a ConcreteMCE.. not that I have time for such a project.