LostKobrakai Posted March 4, 2016 Posted March 4, 2016 Iirc there's a pull request on the github repo of ryan, which does add recursive hanna code rendering. It's not possible with the unmodified module.
asbjorn Posted March 4, 2016 Posted March 4, 2016 You could check with your host to see if they are running mod_security. Thanks! I had a look at my host's documentation, and it turns out they are running mod_security. With that turned off, Hanna Code is working properly with php codes back end again. I've been using PhpMyAdmin to create/edit Hanna Codes the last few weeks. Works fine, but I do not like messing around in there. So your solution, Robin S, was very welcome!
Ferdi Derksen Posted March 17, 2016 Posted March 17, 2016 After searching for a way to load a JS library once when looping through multiple hanna-codes (of the same type) at a page, I came up with the following solution; if (!isset($hanna->jsloaded)) $this->config->scripts->append('myJS.js'); $hanna->jsloaded = 1; // do other stuff Is this the correct way to do such loading? Session- or normal variables cannot be used since they keep on remembering or resetting the values during the process of loading pages (ones or multiple times).
Martijn Geerts Posted March 17, 2016 Posted March 17, 2016 There's no 'correct' way, something like this might also work. <?php // Cache outputformatting to a variable $of = $page->of(); // Put it off, as Hannacode relies on outputformatting isn't it? $page->of(false); // Search if we have a hanna tag like thingy if (strpos($page->body, '[[') !== false) { // Yay, we have [[, so at least a Hanna tag like thingy. // You could search for a specific hanna tag if wanted // Do Script injection.... what ever } // Restore to previous state of outputformatting $page->of($of);
Ferdi Derksen Posted March 17, 2016 Posted March 17, 2016 Hi Martijn, Well, I'm not sure this will do since my code needs the JS library only once. In my case (charts-module ) I need to load the highcharts library only once, but the page (body) can have multiple instances of hanna code; [[chart item=a period=month]] some text here [[chart item=b period=3months]] //and so on... ...and in case we have other hanna-codes in the body/page, I need to make sure my library is already added or if I still need to load it.
Martijn Geerts Posted March 17, 2016 Posted March 17, 2016 <?php /** * Do this before outputting the scripts array (before a 'view' file) * */ // Cache outputformatting to a variable $of = $page->of(); // Put it off, as Hannacode works with outputformatting isn't it? $page->of(false); $schlaghecke = array( '[[chart item=a period=month]]' => '/file/to/add/month.js', '[[chart item=a period=3months]]' => '/file/to/add/3months.js', ) foreach ($schlaghecke as $hanna => $file) { if (strpos($page->body, $hanna) !== false) { // is always unique $config->scripts->append($file); } } // Restore to previous state of outputformatting $page->of($of);
Martijn Geerts Posted March 17, 2016 Posted March 17, 2016 BTW, good to see you guys are busy with the front-end of my Market Tool . I do guess you guys use a delegate approach?
Martijn Geerts Posted March 17, 2016 Posted March 17, 2016 A project that I started at Agrio. (Now have an other Job) They nice folks over there are continuing that project so that makes me happy . I guess they have to do mainly front-end work now. Probably they make it a JSON API... Thats the way I would have gone. 1
tpr Posted March 18, 2016 Posted March 18, 2016 @Ferdi Couldn't you load a loader js file that loads the library, and only if it hasn't been loaded? Surely you can check for a Js object name for example.
tpr Posted March 18, 2016 Posted March 18, 2016 A project that I started at Agrio. (Now have an other Job) That doesn't sound like a success story ;-)
Martijn Geerts Posted March 18, 2016 Posted March 18, 2016 @tpr, actually it is. I love the new Job but moved away from Agrio with very good feelings. I realy like the guys/girls over there. There were multiple parts to that project, one part was the content management in ProcessWire. It works quite nice and I feel good about it. 1
tpr Posted March 18, 2016 Posted March 18, 2016 That's great and I was sure about that reading your post. But those two sentences just made me laugh, they read like something really awkward has happened (maybe I've watched too many Monthy Pythons back then ) 1
MadHatter Posted April 15, 2016 Posted April 15, 2016 Does TextFormatterHannaCode need to be so large? The bundled version of Ace contains all 4 versions of the Javascript files, but in ProcessHannaCode.module I can only see the src-min version being called in. Removing these and the demo directory would reduce the size of the module by around 38MB. Are there licensing issues which require that these files must be present? 4
kongondo Posted April 15, 2016 Posted April 15, 2016 The /src-min/snippets/ folder could also be slimmed down There's scripts in there for languages like ruby, python, etc. 1
Robin S Posted April 16, 2016 Posted April 16, 2016 Does TextFormatterHannaCode need to be so large? I've also wondered this, and I think it would be good to have an option in the module config to disable Ace so it can be removed altogether for those who would prefer this. The Code tab for all my hannas looks like this: <?php include($config->paths->templates . "hannas/my_hanna_code.php"); ...because I much prefer to edit hanna codes in my IDE. So I don't really need Ace bundled into the module.
Macrura Posted April 16, 2016 Posted April 16, 2016 i think the best option is to remove the ACE completely and then have the module simply check to see if the Ace Extended module is installed, if it is, then use that and init for PHP; otherwise show a normal text area; the module could show a link to install Ace extended for those who want to edit their codes in the admin. I have a module that does this, and it so far works fine... 3
ottogal Posted May 6, 2016 Posted May 6, 2016 Just saw: When you try to check for updates you get the message Error reported by web service: Unable to find that module instead of the correct one: Current installed version is already up-to-date
seanmvincent Posted May 27, 2016 Posted May 27, 2016 Hey, I've searched the forum but couldn't find what I needed. I have a textfield field with the Hanna Code text formatter applied but I can't use more than one Hanna Code in it. It'll only display the output of the last one and even that overwrites the rest of the content in the textfield. What am I doing wrong? Each code just echoes the value of a field from a page ( e.g. echo $page->get(103)->field ).
Robin S Posted May 27, 2016 Posted May 27, 2016 @seanmvincent That sounds like a PHP error is occurring. If you turn on PW's debug mode do you see any error messages? Also, it looks like there is a mistake in the example code in your post. I think you want $pages->get() not $page->get().
seanmvincent Posted May 31, 2016 Posted May 31, 2016 Thanks @Robin S. I have debug enabled but no errors are showing. And yeah, in my actual code it is $pages->get not $page->get. Could it be because the page field that I'm getting and displaying can also include Hanna code? It doesn't, but the field allows it.
Robin S Posted June 1, 2016 Posted June 1, 2016 @seanmvincent Yes, you can't use Hanna Code recursively with the current version. But see this post and this pull request - you could manually update the module with the code from the PR.
seanmvincent Posted June 1, 2016 Posted June 1, 2016 Excellent. Works a charm! Thanks heaps for the help
asbjorn Posted June 23, 2016 Posted June 23, 2016 How would I go about if I wanted to be able to custom sort pages referenced in a Hanna Code? Example, I want to sort the output that is the title for pages these ids, in the order specified below: [[houses id=10|20|40|30]] I have tried different sort options, such as sort=sort or without sort, in the PHP. But these will look for the order in the page tree and such.
Robin S Posted June 24, 2016 Posted June 24, 2016 14 hours ago, laban said: How would I go about if I wanted to be able to custom sort pages referenced in a Hanna Code? I think your question relates more to how PW sorts PageArrays created via find() rather than Hanna Code specifically. I guess you are doing something like this in your PHP: $my_pages = $pages->find("id=1086|1021|1053|1018"); I was surprised to discover, as you did, that the resulting PageArray does not sort the pages in the order the IDs were given. This is what I came up with as a workaround: $my_ids = [1086,1021,1053,1018]; $my_pages = new PageArray(); foreach($my_ids as $id) { $my_pages->push($pages($id)); } I'd be keen to hear if there is a better way to get pages into a PageArray while maintaining a given order of page IDs. 2
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now