You are not logged in.
We recently launched our university website, http://www.drury.edu, using BigTree and we could not be happier. I've found everything to be incredibly flexible to work with and customize, so that we get exactly what we want while still being able to work within the system. We have yet to have any idea that was not possible to implement in BigTree and we are looking forward to developing on it going forward.
The one thing that I cannot give enough credit to is Tim and his team at BigTree. They have been immensely helpful (especially in the early goings) in assisting with bugs or any issues that I might come across. They are quick to respond and will always help in whatever way they can. Without their assistance along the way, I know this project would not have turned out the way it did.
I would recommend BigTree to anyone looking for an open source CMS that will give them the tools to make their website dream a reality.
I replaced the code with what you provided but it still gives me a Mixed Content error when requesting admin/ajax/auto-modules/embeddable-form/?hash=54bc157a14c11 and the file the error is coming from is embeddable-form.js so the admin_root variable being used as part of the iframe source on line 1 is still not switching to https. Hopefully this helps but if you need anymore information just let me know.
Thanks for working on this.
I have a module embed form on a page that I'm trying to access using https. I'm getting a mixed content error because in core/admin/ajax/auto-modules/embeddable-form.php it is using admin_root to add the protocol which is always http even if the user is trying to view over https. I tried (just for kicks) changing the domain from admin_root to my domain using https but then I just get even more mixed content errors and it fails to load any other files like the CSS or any JS helper/library file.
I also tried calling the makeSecure() function at the top of the page but that didn't help either.
So I was wondering if you had any thoughts on how I could get every protocol to change on the files that are included or retrieved to use https?
Thanks
Would it be possible to add the ability to filter which items appeared in a database populated list? As an extra option in the "Field Options" dialog when creating the field. I'm assuming that the risk of allowing text to be directly injected into the sql statement is why this does not exist. I was thinking an alternative might be something similar to the parser function setup used in views? Then, I would just create a function that is called to weed out the values I don't want and returns the valid ones. Just an idea.
Works perfect now!
Thanks for working on this!
Thanks for the heads up!
I just created an embeddable form with an HTML field using the default tinyMCE plugin editor (specifically tinyMCE 4). I have received a few reports from our users that they were getting the "The form submission failed to pass our automated submission test. If you have JavaScript turned off, please turn it on." error when they were trying to submit. After talking with them and performing some of my own tests, I believe that if an unordered/ordered list is created in the HTML editor (whether it is created with the editor or pasted in from an outside source) is causing the hash validation check to fail. If I submit the form with other content in the editor (links, bold text, tables, etc.) it works fine. So far, I've only found the lists to be an issue. I'm not sure what is causing this but wanted to pass it along to some bigger brains than mine in hopes that you can help.
Thanks
We use an Exchange server for emails and I think it is having an issue with emails generated by htmlMimeMail (the one I noticed it on was the Password Reset email). What was happening was certain characters in the email would be replaced with an = and unfortunately it was happening in the hash part of the link to the password reset page which was obviously throwing it off and causing errors. I think the problem was how Exchange servers handle line breaks, I added this line after the setHeader statement in the forgotPassword function:
$mailer->setCrlf("\r\n");
That seemed to fix it, I'm not getting emails with random = signs anymore and the link is working correctly. I have no idea if implementing this change would cause an issue on a non-Exchange email server but I wanted to pass it along as a potential solution and hopefully you can test it on your email system(s).
I think there's a small bug when running the site integrity check and the module being checked has an array as one of the fields returned by the get(). If the field is an array, the two ifs inside the foreach use substr which throws a warning when it's not given a string and it prints that to the screen for each entry that it checks. Everything still works, it just makes for a less than aesthetic results page. I just added an empty if at the beginning to do nothing if the current field was an array, but I suppose the best solution would be to iterate over each item in the array and check it with same substr checks.
Awesome! Thank you so much for your help on this!
Ok that actually makes sense and it means the problem is with my setup. When we created our site in BigTree we were essentially moving over an existing site with content which meant that we had tons of links that needed to still work without us going in and changing them. Due to some bad practices by previous people I have links for files/photos/whatever that exist like /hr/docs/myfile.pdf and I also have a page that is /hr. So in order for a folder named hr to exist and the page, I commented out that check for whether or not a directory already exists. So it's going to return false every single time it checks if a similar directory exists. In light of that, do you know which function I should modify to get it to avoid making IPLs if I first do a search on a given list of file extensions? Does that seem like the best way to go about it?
Thanks
I'm running 4.1.3 and I can't tell if what I'm experiencing is a bug based on my setup or a bug in the core of BigTree. What is happening is that when a user puts in a link to a file (such as a pdf) and click "Save and Publish" that link has a / added to the end of it which screws up the link because the browser thinks the filename is a directory and throws a 404 error. I do know that once processed, these links, that are entered by users, are being converted to IPLs and when I display them on the page I am calling getInternalPageLink and I think that the issue is in that function somewhere. I think that either in the IPLCache or in the returned value a trailing / is added that breaks links to files. I'm definitely not sure if that's where the issue is, I narrowed it down a little but haven't yet found exactly where it's happening. I thought I would check with you to see if this has ever come up as an issue. If not I'll assume it's an issue I caused somewhere in my setup.
Thanks
I think you're right. The way you structured yours is better, be as specific as possible when checking for empty values so that everything else that should be valid can go through.
I have an image slider that I'm building as a module. One of the fields that I added was a page ID, which would be used to identify the page you want the slider to appear on. One of the pages I'll be using it on is our homepage, but when I tried to save 0 in that field it would always get stripped out and saved as NULL. I think the problem is in the auto-modules class, specifically the sanitizeData function. In the part where integers are sanitized there is an that reads
if ($val !== 0 && !$val && $allow_null == "YES")
Since my 0 is considered a string (coming from the POST through a text input), it passes test one due to the type strictness, it passes test two because the 0 is loosely considered to be false, and then my $allow_null is set to yes so the third passes and my value is set to NULL.
I would imagine the way to fix this is either remove the second = off the first test so it'll accept strings/ints or change the second to check type as well with $val !== false.
Actually I have been thinking about it and with the way you have it setup I can't think of a use case where you would need multiple checkboxes with the same value. I think I just got a little over zealous and figured I'd try and fix it before thinking to see if having it setup like you do would actually be an issue. Oh well!! Thanks for looking at it!
I just realized this problem also affects when checkboxes try to repopulate with POST data when another field has an error. If you change /draw-types/checkbox.php on line 27, the if statement for adding checked="checked". If that is changed to if ((is_array($default) && array_key_exists($key, $default) && $default[$key] == $item["value"]) || ($default === false && $item["selected"])) then it uses the same array structure as $item to match the values.
I think I found a bug in the Form Builder module when a list of checkboxes is created with the same input name and value. In the process-types/checkbox.php file you use the in_array function on line 17 to search the master list of all checkboxes, for that particular input, and if the value in the POST array matches one of those you assume it is checked. The problem is that if two or more checkboxes share the same value but only one of them is checked, the search can't distinguish the difference and returns true on all of them.
I think I worked out a solution for it. If you change line 17 to if(array_key_exists($key, $value) && $value[$key] == $v) and the foreach on line 14 to include the key, $key => $item. Then in the draw-types/checkbox.php you implement a counter starting at 0 with the value being placed inside the [] in the input name this will create an array structure in the POST that matches the structure of the master list. Then, you can compare each value using the same key, that way regardless of the value you are always looking at the right field.
Hope this makes sense, and would love to know if you think this is a viable solution or if you see any issues/alternatives that would work better.
Thanks!
Nope it's there! Just forgot to look in that spot. Thanks again!!
I'm working on implementing that Form Builder package. One thing that I'm not understanding is how to add this form to a page on my site (not somewhere in the admin). Would I use the getForm function and then write my own function to go through and output each field? I'm not seeing any place in the admin or settings where there would be an iframe embed code or something.
That's perfect! Thanks
I created a static list and added several options, saved it, and implemented it in a template. I came back later and moved some of the fields in the list around so that they were in a different order and clicked Save and then Update for my callout. When I went back in to the edit view after updating it, all of the list items had been deleted and the list was empty. This has happened a few times so I'm thinking there's a bug in how it stores the items when they are moved?
Thanks
I'm not quite sure what the best approach is to accomplish what I want. Basically, I have a module where one of the fields is a date which is stored in the database as Y-m-d like it should be. However, I would prefer not display it that way to the user so I set up a simple parser in the view:
$date = new DateTime($value); $value = $date->format('m/d/Y');
This displays all the dates in the view correctly but the problem is that I also want to sort all the rows by this date. Since the parser affects all values in the view_cache table as soon as it's created/modified, when I select that column to be sorted my date values are now stored in the view_cache table using my parser date formats which doesn't work well with MySQL and the dates are instead sorted alphabetically (11/25/2014 comes after 01/01/2015).
Is there a way to keep values in the view_cache table from having the parser applied to them until they are loaded by the view? That way the displayed value in the results table would be aesthetically correct but the actual value would still be programmatically correct and sortable.
I do realize that this quite possibly defeats the purpose of the view_cache table since this setup would require running the parser each time. This isn't a super necessary feature, they'll still be able to read/understand the date regardless of which of the two formats is shown, I just wanted to ask.
Thanks
I believe that the function publishPendingItems in /core/inc/bigtree/auto-modules.php needs to have a return placed before the call to createItem that way it returns the id of the created item. The reason being that the new id is assigned to $edit_id in core/admin/auto-modules/forms/process.php when publishPendingItem is called. From the few tests that I've done, without adding that return statement the value returned by publishPendingItem is always NULL.
Could have been a mistake on my part at some point but wanted to share just in case.
If I have my advanced permissions setup the way I described on my event module and I try to add/update any module permissions on a user, the permissions for all modules, for that user, are set back to No Access, regardless of what they were when I clicked Save. If I turn off advanced permissions for the events module, then all advanced permissions can be added/updated normally.
I'm having a problem setting up one of my modules with advanced permissions. Basically, I'm creating an events calendar module and wanting to structure it so that a user can only edit events that belong to a specific group which they have permission to (an event is assigned to a group when it is added). I have two tables: events_calendar and events_calendar_groups. In events_calendar each event has an id and a group_id, the id references the specific event and the group id references the id of the corresponding group that it belongs to in events_calendar_groups. In the events_calendar_groups table I just have the id and the name of the group.
I setup my advanced permissions with the Main Table being events_calendar and the Main Field being events_group_id. The Other Table is events_calendar_groups and the Title Field is group_name. When I go to edit a user it does look correct, I see a list of all my calendar groups and can assign permissions to each individual one. However, when I click Save, all the module permissions for that user are reset back to No Access and on the user's screen it says they now have access to no modules. If you go back in to edit the user, you see every permission reset back to No Access including the ones for the event calendar. I'm fairly confident it has something to do with this setup and is not a bug in BigTree because I have other modules with advanced permissions that work fine.
Can you see anything that I might be doing wrong or is there a better way to structure (either in the CMS or the database) my module in order to get my desired result.
Thanks for your help.