Changes in Ariadne 2.7.2
New features:- more speed, less CPU time needed.
- added image-magick queue to prevent denial of service through lots of image magick calls
- groups are now allowed outside /system/groups/
- added ftp client to ar
- added runtime test for config.ini before saving
- reinstated editor selection (YUI or Toolbar)
- reworked gettext/loadtext nls
- Added option to delete a file for a specific language
- recursive SVN checkout and update now allow a specific revision number
- removed lots of debug statements to speed things up
- speedups in editor.ini, typetree aanroep
- reworked compression support
- import/export skips compression of files/templates folders to speed things up
- speedups in SVN support, reuse the SVN instance
- typetree nls moved to typetree.ini, deprecates ariadne object-based typetree
- speedups in icon fetching
- reworked mysql query compiler
- added visual queue for uploaded files in file/photo dialogs
- explorer/user interface language is now treated seperate from the data language
- User interface now updates to the new language after changing the users language.
- explorer tree now also updates when a node is changed
- explorer now re-selects an item after an object is added
- 0 values can now be displayed using ar_html and ar_xml
- fixed calendar call for articles
- several fixes in the nls/language support
- several fixes to better support website speed profiling
- fixed backend to use backend-urls instead of frontend urls
- fix in HTML toolbar editor to allow classes on editable divs
- fixes in ar/html/menu
- lots of code cleanup
- fix post/get/callargs after failed logins
- fix in customdata dialog to prevent arrays/objects being destroyed when using this dialog
- bugfix in SVN resolved, conflicts can now be resolved correctly from within Ariadne
- bugfix in the installer for SVN support, removed trailing slash.
- Fixed broken owner grants to work again
- fixes in manual mimetype setting for pfiles
- fix for 'crop' to make sure the result is the requested size.
- fixed windowsizes and window dialog names
- allow logoff from any object
- language list sorted to be more consistent
- added new 404 page styling
- fixed mogrify window and options, vtype is removed since it is overwritten
- layout improvements in the lock dialog
- bugfixes in grants dialog
- SVN dialogs now requires a repository to be entered
- Added Ariadne API (read all about it!): basic HTML, CSS, menu, forms and lots of other coolness.
- Added 'mogrify' function that allows morphing object types. Admin only, can break stuff.
- Experimental: Added option that allows users and groups to be created outside /system/users/, thus providing users-per-site options
- Experimental: Zen style dom creation
Additions to existing features:
- Rework of the core loader.php to make use of the new Ariadne API
- Rewritten most of the explore view to make use of the new Ariadne API and HTML generation
- Links to help pages in the Ariadne installer when a check fails
- Extra checks in the Ariadne installer
- Speedup in backend loading
- Grantkey system has extended to allow grants to work on childobjects.
- Extended mod_geo with Exif Lat/Long support (thanks Gerhard!)
- Captcha does not show similar characters for better usability.
- Added option to tag a custom field as containing HTML.
- Added a default nextid length of 5 when no length is given, ie: {id}.
- Added 'check all' option to the unlock window.
- Specific templates for password changes on users
- Improved handling of file uploads and replacement
- Improved memory used for file uploads
- Progress bars for import/export dialogs
- Lock-removal dialog is now in the new style
- All JS files for the backend now use their local minified versions for faster loading
- Big speedups in the backend loading and browsing
- Less memory usage for debugging statements
- Removed some less important debug statements for better performance
- Typetree is now read from the disk-template 'typetree.ini' and no longer uses the information within Ariadne.
- Added html_entity* to the allowed functions list
- Added getLibraries function to list active libraries on a given path
Removed features:
- WDDX export has been removed from the export dialog, since it has no import counterpart. This option is still available from the commandline.
Bugfixes:
- SVN dialog fixes
- Fixes to the caching system to only cache GET requests
- Fixes in the PINP compiler
- Bugfix for missing mimetypes after saving files and images.
- Bugfixes in the explore view (ariadne backend): up button, menu position
- Bugfix in language-enabled SVN icons in template overview
- Bugfix in required grants in hyperlink and image dialogs
- Bugfix in SVN delete, now it also removes the templates in PINP when they are deleted in the repo.
- Bugfix in psearch to make it possible to delete it (thanks Gerhard!)
- Bugfix in template editor to make undo/redo work in IE
- Bugfix in the display of the tree, fixed icon positioning
- Fixed Toolbar editor to work in IE8.
- Fixed problem with disappearing config data when calling other templates from the config (a relatively new feature)
- Improved the config.ini workings, now the arConfig is passed as argument and the result value is set to the changed arConfig
- Improved the config.ini handling, now uses the php stack so you can use get() in a config.ini template.
- Added security check in getvar
- Fixed line counting in pinp
- Labelspans added to list, icon and details view in the Ariadne backend to prevent ugly views.
- Fixed the display of the image browse dialog, buttons are now placed correctly
- HTML editor now resizes with the window it is in
- SVN handling with large directories (>100) now works correctly for unsvn, commit, revert
- Grouping for SVN update messages
Changes in Ariadne 2.7
Changes:
Major work (more about this below):
- All new user interface
- New installer
- New naming scheme on disk
- Templates can have SU-style abilities
- Muze Javascript library
- Changes in multi-language support
Improvements in:
- SVN support
- Library support
- Third party authentication
- PINP functionality
Bugfixes:
- Native language support
- TinyMCE editor handling
- lots of others minor bugfixes!
----------------------
All new user interface
----------------------
Based on the Yahoo User Interface and the Nuvola icon pack, the whole user interface driving Ariadne has been given a huge facelift - some screenshots have been published earlier, but this release contains all of the new eyecandy. Not only does it look prettier, the new interface works under all major browsertypes (and even on some not-so-major browsers).
----------------------------------------
New installer with a lot nicer interface
----------------------------------------
A new installation procedure has been added to Ariadne - instead of the old text-based installation, Ariadne now has a nice step-by-step installation wizard. It does a lot of the checks for you before the actual installation is run, so installing Ariadne will be faster and easier than ever.
--------------------------------------------------
Introduced new naming scheme in the disk templates
--------------------------------------------------
With the introduction of the new YUI interface we have begun using a new naming scheme for templates on disk. The most important change is the extension for core templates is now .php where it used to be .phtml. Another change is the prefixes of templates for the userinterface has changed from their menu location to their actual functionality. All templates having to do with the default explore view are now prefixed with explore. All dialogs are prefixed with dialog. System templates are, you guessed it, prefixed with system.
We will gradually convert the whole of Ariadne to this new naming scheme and will deprecate old templates that are renamed by keeping a wrapper in place for some time. (Time is relative and yet to be determined :)
----------------------------------------------
Ariadne now has support for SU style abilities
----------------------------------------------
As a developer of pinp templates you can programmatically give a template extra grants. This is best illustrated by an example.
A common problem within Ariadne is allowing a public user to save data in an object but not allow editting of the whole object. Since there is only the 'edit' grant for an object you can't just set 'edit' for the public user because that would mean they could spawn the edit dialog and destroy any other data in that object. For instance you want to keep track of pageviews by saving them in $this->data->pageviews through a pinp template:
-- save.pageview --
<pinp>
$data->pageviews++;
save();
</pinp>
Without edit grants this would do nothing. Now to call this template with the extra edit grant the template dialog has an extra button 'Grant key' in the menu. This will spawn a dialog asking for the grants. Fill in 'edit' in our case, and press the generate button. This will give you a SHA1 key in the dialog, for instance: 'fd3d2216fea704652ea7176f9ab419c69b245710'.
This key can then be used in the following functions:
sgBegin($grants,$key)
sgEnd()
sgCall($grants, $key, $function, $args)
In the case of our simple example we would do:
-- view.html --
<pinp>
.... somewhere near the bottom ....
sgCall('edit', 'fd3d2216fea704652ea7176f9ab419c69b245710', 'save.pageview');
....
</pinp>
This would add the 'edit' grant for the current object (and its children) and run the template 'save.pageview', and destroy the grants again. Basically doing:
sgBegin('edit', 'fd3d2216fea704652ea7176f9ab419c69b245710');
call('save.pageview');
sgEnd();
A generated key is valid for the path its created on, and grants given by the key are added similar to group grants. This means if I give edit grant in my sgCall to 'save.pageview' any calls from that template to other templates on children of the object, or the object itself would be given that grant as well.
Please note that to use the sg* functions you will need to set the $AR->sgSalt to a string in your configuration. This is automatically and randomly done for you in the new installer. Without the $AR->sgSalt the sg* functions will not work.
---------------------------
The Muze JavaScript library
---------------------------
Since Ariadne 2.7.0 we've added a simple JavaScript library to Ariadne. This library is very small and simple and only intended to make the JavaScript development for Ariadne's user interface a bit more manageable. We haven't opted to use one of the mainstream libraries, because we felt that they all are either too big and unwieldly or simply not good enough. We did not want to include the equivalent of a canon just to kill a bug.
-------------------
NLS system overhaul
-------------------
In the last few months we've fixed an impressive number of fairly low level bugs in the multi language system. This means that Ariadne now acts much more like we intended it to, but hasn't over the past few years. If you are building sites in multiple languages this means that this Ariadne update may break your site if you are not carefull. The most important change is that Ariadne no longer automatically lists all objects found with ls() or find() or parents() or even get(). Default behaviour is that if the current language is english (en) and the requested object is not available in that language, but it is language aware, this object will not be shown. This means that it is very easy for objects to go missing in your site. There are two solutions:
1) edit the object and enter a name for the missing language
2) add the following line to your calling template:
putvar('allnls', true);
In the past it was possible to get the above effect using:
putvar('nolangcheck', true);
This was a bug and no longer works. The language check is done just once per request and only on the main template, e.g. view.html. Once Ariadne starts to run a pinp template, there is no need to set this variable, since the check has been done already. The only exception is the config.ini template. If you add the above line to a config.ini template, Ariadne will never ask the user to select a different language in that part of the tree. An alternative solution is to redefine the user.languageselect.html template and redirect the browser to the default language.
The overhaul has some positive effects, it is now very easy to create a website in several languages and actually have different menu entries depending on the language. Just create a new object in e.g. dutch and english, set the configured default language to either dutch or english on this object and remove the name in the other language. Switching between languages will show or hide the menu entry.