0 users online. Create an account or sign in to join them.Users

Search

Environ

  • OS: Mac 10.6.7
  • Symphony: 2.2.3
  • Browser: Google Chrome 13.0.782.215

Synopsis

I believe the trouble started after upgrading to Symphony 2.2.3; however, I cannot be certain.

When posting frontend forms employing markItUp! 1.1.12 (updated 8/16/2011) and its markdown module, I receive a Symphony Fatal Error.

Observations

  1. markItUp! and Markdown is NOT being used as an extension
  2. Symphony is throwing an error when not finding a file path, but there is no file path to find because there is not a text formatter extension being used on the frontend (i.e., outside of the /symphony/ dir) of the site.

 


Symphony Error Message

Could not find Text Formatter . If the Text Formatter was provided by an Extension, ensure that it is installed, and enabled.
/Users/wjn/Sites/pcpc.org/subdomains/flo/dev/symphony/lib/toolkit/class.textformattermanager.php line 146

141         if(!isset(self::$_pool[$handle])){
142             $classname = $this->__getClassName($handle);
143             $path = $this->__getDriverPath($handle);
144
145             if(!is_file($path)){
146                 throw new Exception(
147                     __(
148                         'Could not find Text Formatter %s. If the Text Formatter was provided by an Extension, ensure that it is installed, and enabled.',
149                         array($name)
150                     )

annotated screenshot

If this should be posted in the GitHub Issue Tracker, please let me know and I'll port it there.

  • Can you log into the backend without error?
  • What was the version of Symphony you upgraded from?
  • Are the MarkitUp and Markdown extensions enabled on the /extensions page?
  • Can you clarify what you mean with 'on the Frontend?' That repo you linked too is just MarkitUp for sites, it's not the Symphony extension

Brendo, thank you for taking the time to interact here.

  • I can log in to the backend (i.e., /symphony/) no problem.
  • I upgraded from Symphony 2.2.2
  • Both MarkItUp 2.0 and Text Formatter: Markdown v 1.13
  • By frontend, I mean the public side of our website that is served to members regulated by the Members extension.

I am intending to use MarkItUp for sites because, as I understand it, the Symphony extension would only apply within the /symphony directory.

Do you suspect using the extension for within the /symphony dir and then /assets/js/markItUp is causing a conflict of some kind?

I can log in to the backend (i.e., /symphony/) no problem.

Ok, so on the Frontend, does this error occur on every page? Or just a select page? What I think has happened here is that a field has been saved with a Text Formatter that no longer exists (or has changed handles), so when that field is included in a Datasource on the Frontend it's causing some issues.

Do you suspect using the extension for within the /symphony dir and then /assets/js/markItUp is causing a conflict of some kind?

I'm not sure how, that error is caused by Symphony trying to load the Formatter to 'do something', not by it's existence in the file system. Can you post the rest of that error screenshot - the backtrace information more specifically.

Ok, so on the Frontend, does this error occur on every page? Or just a select page?

I have found one instance where the error does not occur when submitting a form with the markitup markdown textarea in question.

Backtrace:

[/Users/wjn/Sites/pcpc.org/subdomains/flo/dev/symphony/lib/toolkit/fields/field.textarea.php:59] TextformatterManager->create();
[/Users/wjn/Sites/pcpc.org/subdomains/flo/dev/symphony/lib/toolkit/fields/field.textarea.php:175] fieldTextarea->__applyFormatting();
[/Users/wjn/Sites/pcpc.org/subdomains/flo/dev/symphony/lib/toolkit/class.entry.php:250] fieldTextarea->checkPostFieldData();
[/Users/wjn/Sites/pcpc.org/subdomains/flo/dev/symphony/lib/toolkit/events/event.section.php:112] Entry->checkPostData();
[/Users/wjn/Sites/pcpc.org/subdomains/flo/dev/symphony/lib/toolkit/events/event.section.php:447] __doit();
[/Users/wjn/Sites/pcpc.org/subdomains/flo/dev/workspace/events/event.video_add.php:96] include();
[/Users/wjn/Sites/pcpc.org/subdomains/flo/dev/workspace/events/event.video_add.php:92] eventvideo_add->__trigger();
[/Users/wjn/Sites/pcpc.org/subdomains/flo/dev/symphony/lib/toolkit/class.frontendpage.php:723] eventvideo_add->load();
[/Users/wjn/Sites/pcpc.org/subdomains/flo/dev/symphony/lib/toolkit/class.frontendpage.php:403] FrontendPage->processEvents();
[/Users/wjn/Sites/pcpc.org/subdomains/flo/dev/symphony/lib/toolkit/class.frontendpage.php:202] FrontendPage->__buildPage();
[/Users/wjn/Sites/pcpc.org/subdomains/flo/dev/symphony/lib/core/class.frontend.php:111] FrontendPage->generate();
[/Users/wjn/Sites/pcpc.org/subdomains/flo/dev/index.php:25] Frontend->display();

Thank you again Brendo for your labor here.

I uninstalled all text formatter extensions and still get the error.

I'm taking a look see in the Database to see what I can find.

What I think has happened here is that a field has been saved with a Text Formatter that no longer exists (or has changed handles), so when that field is included in a Datasource on the Frontend it's causing some issues.

Here are the relevant tables graphically represented from our database where I we find some clues along the lines of Brendo's hypothesis above.

You'll notice that there are no text formatter extensions now installed (but the fatal error still occurs). This is because the textarea fields (image 3 of 3 below) have old uninstalled formatters assigned to them as Brendo suspected.

Solution:

When go to each section and reassign each textarea to an installed extension, the error goes away.


sym_extensions

sym_extensions

symextensionsdelegates

sym_extensions_delegates

symfieldstextarea

sym_fields_textarea

Thank you for your help Brendo!

Ah ha, so the bug here is that the Extension Manager's __canUninstallOrDisable function do not check if Text Formatters are in use before uninstalling or disabling them.

There is currently checks in place to ensure that you can't remove a Field, Datasource or Event that is in use. This should also apply to Text Formatters, to prevent your issue ;)

Glad you got it in the end, I'll push a fix for this to the repo so it won't happen again :)

Cool, thanks again Brendo.

Also for those in the forum that are trying to avoid having to open a large number of sections and changing each textarea to the correct formatter, I wrote a simple SQL query that I hope is helpful.

I did this through phpMyAdmin so the query assumes the database connection/assignment. It also preserves NULL (no formatter textareas).

UPDATE sym_fields_textarea SET `formatter` = 'markdown_extra' WHERE `formatter` IS NOT NULL

Create an account or sign in to comment.

Symphony • Open Source XSLT CMS

Server Requirements

  • PHP 5.2 or above
  • PHP's LibXML module, with the XSLT extension enabled (--with-xsl)
  • MySQL 5.0 or above
  • An Apache or Litespeed webserver
  • Apache's mod_rewrite module or equivalent

Compatible Hosts

Sign in

Login details