AjaXplorer 5.0.2 Release Note

License : Affero GPL
Copyright : Charles du Jeu 2013
Demo : http://demo.ajaxplorer.info/
Date : 2013-07-19
Rev Number : 97582cc
Contributors: thomasCresson, josh4trunks, chusopr, mquandalle

This is a bugfix release from v5.0.1. Update is automatic using the in-app upgrade mechanism, and is recommended. Most important fixes are:

Fix various uploaders problems (jumploader, plupload)
Fix various Zip browsing / creation problems
Choose Lucene analyzer in the plugin configuration
Start an automatic deployment and testing framework (using Phing)
Experimental: Etherpad implementation (collaborative text editor and chat), new SFTP plugin based on phpSeclib
See detailed changelog below, and bugs fixed list on GitHub

Detailed changeLog

Add repository slug to file names when logging operations with files.
Mispelling in french translation
Fix #204 for WebDAV Basic Auth not working with USE_SESSION_CREDENTIALS.
Fix #1: Auto create AjaXplorer user if CAS login was successful and plugin was configured to auto create users.
Fix #207: typo in plugins/conf.sql/update_3.0.3_up.sql.
Notification problem with Jumploader fixed for the upload of single files
Fix -> Now the quota is respected with jumploader (if you exceed it you will see the error in jumploader GUI and it will erase all the already uploaded partitions and it'll stop the upload) Enhancement -> can now handle errors like missing partitions or corrupted data (you will see the error in jumploader GUI and it will erase all the already uploaded partitions and it'll stop the upload)
Apply hook before sharing
File in plupload with html5 will have their original name (renaming "blob" and special characters removal are fixed)
Apply hook before sharing
auth.serial_otp contributed by Janos Milus
Publication plugin derived from the ajaxplorer.info website. Still to be completed, must find a config.properties for configuration.
New SFTP plugin, working with phpseclib, added
Fix #213: Prevent copying a directory to itself.
Sanitize user name before sending. It will be sanitized on the server, but it can be quite confusing.
Etherpad simple implementation
Create pads either on a text file, or a "free" pad
Update strings in etherpad.
Create pads either on a text file, or a "free" pad
Revert to previous version, zip browsing was broken.
Check SSL status from PHP's HTTPS header instead of port
Fix #217 + Creating archives with a samba workspace now works (exploration and extraction still impossible).
Do not reuse a new XHRUploader, otherwise the on "change" event is pointing to the wrong one. Should fix the "wrong folder" pointing problem.
Fix the Zoho file disappearing after edition.
Fix #215 -> now can preview office files (.docx,...) if the extension is in uppercase
Fix #214 - Problem with quota and resolveAsParent() not being set back to false.
Refactored filterActionsFromRegistry to filterRegistryFromRole
Go through all options of access.fs and use getFilteredOptions instead.
Massive pass to reveal the full powers of groups: use getFilteredOption() everywhere instead of $this->pluginConfs[]
Remove alpha-flatten in default ImageMagick options, seems to break on many platforms (deb7/rhel)
Use UTF8 / TextNum / Insensitive default analyzer, add a parameter to change it if necessary.
Fix textLogger
Fix Travel path computation, could break minisite on some setup.
Registry Preloading: do not forget to clear the serverCallbacks nodes, useless. Force disabling this mechanism when applying an URL shortcut, it breaks. Should fix #226
Copy last build to "-latest" to ease automatic deployments
Fix #230
Fix #232
Do not use UTF8 default analyzer for Lucene, adds a requirement to php_mbstrings extension. Fix escapeshellarg call in getTrueSizeOnFileSystem()
Build "latest" package with ajaxplorer-latest foldername inside.
Cmd.php: allow anonymous call to automatize deployments (before any user is created)
Starter Phing script to automatically deploy the latest
Fix samba creation
add App title and clean instructions
comma error in json
comma error in json
Fix #211
ReFix #211
Push Font-awesome CSS at the end of the page. There are still some performances issues for the very first loading, we must digg that.
Refix #215
fix #237
Update deploy
Fix ftp parameters
Expand Client Task
Simple read write task
Do not break build
fix #239 by forcing case insensitivy for sql-based drivers.
---
AjaXplorer 5.0.1 Release Note

License : Affero GPL
Copyright : Charles du Jeu 2013
Demo : http://demo.ajaxplorer.info/
Date : 29th june 2013
Rev Number : f37fcbdc3
Contributors: thomasCresson, Destroyer, Letreguilly, adrianbj, chusopr

This is a bugfix and security release from v5.0.1

Update README.md
Test RHN optional channel activation
Clear cache and touch first_run_passed at upgrade for linux packages
Report spec to tpl
Fix POST script
Fix usage, use build_channel not channel
Fix RHN optional channel registration
Fix #169: File transfers via WebDAV are not logged.
antivirus plugin
Delete File
Update test.PHPOS.php
Fix double parenthesis problem
Fix #175
Update manifest.xml
Update class.scan.php
Update class.fsAccessDriver.php
update plugin
Update manifest.xml
Pass an optional ContextNode to filenameExits method Define hooks automatically attached to AjxpDroppables for drag'n'drop support Fix #194, Fix the multiple copy upload problems by preventing re-opening the uploader.
Refix background dropHover
Fix #178 by removing autocompleter options from action.share and let them only in core.conf (autocompleter is a generic widget)
The unload action may create a problem on reload in FF (user is logged out). Disable it for Gecko browsers.
Fix #171
Full replug of the bookmarks for the Settings panel. Fix #187
Fix settings bookmarks
Backward compatibiliy for "Bookmarks" tabs: a standard workspace only has 2 tabs, Folders & Bookmarks, using legacy bookmarks loading, whereas index.lucene is redifining this template part to provide the 3rd tab, and use search for feeding the results pane.
Call escapeshellarg where missing
Move node.change hook from fsAccessDriver to uploader's postProcessors. It's now the responsibility of the uploader to trigger the events. Comment the header content-encoding: none from AJXP_ShutdownScheduler to avoid encoding error (was breaking Jumploader).
Czech translation update
Revert "Czech translation update"
Czech translation update
> Fix protoMenu clicking on Workspaces & User widget buttons, annoying menu disappearing > redesign backgroundManager panel
index.lucene: fix disappearing background manager. Fix information string displayed. Add set_time_limit instruction in the recursive indexation to avoid error if possible
Czech translation update #2
Fix metadata line for FF & IE
Rework splash / login form, still w-i-p
Fix French message
Rework splash + login screen
Fix #168
Fix #168
Fix #186 - impossible to compress the files into an archive when using a smb repository ->  verify if there is a scheme with parse_url and add an extra slash (to get an url like "scheme://" instead of "scheme:/") - problem with the files' name when creating an archive using smb (two first characters are suppressed) -> clean the extra slash from the real_path
Better SQL error when you modify your SQL connection by an empty one. Create a backup file to fix the problem if it happens. New error message.
Fix isAjxpAdmin() for multiAuthDriver Set antivirus plugin disabled by default for the moment
Fix "webftp" case of auth.ftp driver
Support folder upload in chrome
Wrong compile, probably a linefeed problem
Use backgroundPanel to display upload status, if the user closes the upload dialog. Nice!
Do not ask for background upload, make it a hidden feature for now on
Fix login display if no welcome message Default welcome message in installer
New try on splash screen
Unfortunately, the drag'n'drop + FileAPI + UTF-8 characters is not working on Mac OS X .. Disabled folders drag'n'drop, only working on Windows yet.
Clean and refactor for naming convention the Antivirus contribution. Still to be more deeply tested.


-----------------------------
AjaXplorer 5.0.0 Release Note

License : Affero GPL
Copyright : Charles du Jeu 2013
Demo : http://demo.ajaxplorer.info/
Date : 2nd, June 2013
Rev Number : cc2ea271251c7d8d045b8d94e92b3996af7ac43d
Contributors: kainv, chusopr, dmitrydvorkin, tbote

This is a major release. Changelog below summarize all bugfixes applied since last dev release,
but read the more generic release announcement for v5 online.

Changelog

Display some instructions for the migration in the various possible setups after upgrade
Auth.remote : use the standard "Login Redirect" parameter
Add DB upgrade in common tasks.
Missing groupPath column in repo
Fix Proxy config broken in Upgrader
Notification feed : fix button out of reach on Chrome, by making it b… …
Include autoloading of the wrapper inside AJXP_Node->loadNodeInfo() ,… …
Goto was broken if not using a repository alias
Fix notifications pointing to a wrong repository, or trying to load a… …
Stable migration
Detect AJXP_GROUP_PATH_FLAT as GROUP security scope. …
Missing workspace groupPath in SQL implementation …
Detect the Instructions.html during the automatic build (inside the d… …
Display a set of HTML instructions after upgrade, if found inside the… …
Add a release note to be displayed BEFORE upgrade …
Fix #161 & last compile
Fix #135
Fix #157
Use "." instead of "*" to make sure to copy .htaccess - to be verified
Fix #158 and other translation problems …
Fix #159 …
Test for __PHP_Incomplete_Class in session AJXP_USER, and kill the se… …
Shared file notification was broken by new hash short form
Fix XML templates for umbra theme
Avoid SQL error if a user has no repository accesses
Fix Notification Menu being out of the viewport …
IE 10 FULL SUPPORT
Fix doctype for IE8
access.webdav : fix #51 by dmitry dvorkin
meta.quota : use float instead of int to overcome 32bits limitation. … …
action.share : fix #136 …
Spanish translation, by tbote
Merge pull request #153 from kainv/patch-9 …
Fix Minisite rights problems : were in fact happening at specific rol… …
Send correct header for IE (fix #131)
New parameter DISABLE_ZIP_BROWSING …
Merge pull request #143 from ultreia-es/ajaxplorer-core-issue-143 …
Should fix #141
Fix markdown lists and code
Catch null repository error
Fixed SQL typo in previous commit 25594b1.
Update README
Toggle right-hand panel
Query sorted repositories list.
Fix #143: Missing ';' after first CREATE statement.
Fix install patches copy
Fix CP & Patches
Update script
Fix metastore.xattr
Move scripts under /rhs/ folder
Touch check.txt directly
Update RHS scripts
Activate restParams for upload action.
Re-adapt upload processor to handle a rest call.
Simple Basic http auth for the rest.php point (still disabled by defa… …
Fix metadata check to avoid false positives bookmarks
Deploy script of AjaXplorer on top of an RHS node
Update LDAP driver to better support Groups, in both AD & LDAP contex… …
Avoid foreach error if childrenPointer is not an array
Fix #134: Avoid redeclaring TestAccess classes.
chusopr authored 12 days ago
Right panel folding
Fix #111
Make sure to set defaultexcludes to "false" for fileset, otherwise fo… …
Update groupPath of children users (fix #125), filter roles before sa…

------------------------------------------
AjaXplorer 4.3.4 Release Note

License : Affero GPL
Copyright : Charles du Jeu 2013
Demo : http://demo.ajaxplorer.info/
Date : 2013-05-14
Rev Number : aabc9199

Contributors:
https://github.com/Vorlif
https://github.com/oo12
https://github.com/fdecourt

This is a massive bugfix from 4.3.3. Please deploy on test on your machines.

Dist : fix debian testing
Sharelink rewrite : use [QSA] Query String Append file to avoid breaking download
Fix #92, Fix #94, Fix #93
Fix #91 : typo when creating role, using old AjxpRole instead of AJXP_Role!
Fix #90 : Reintroduced admin_counted and first_run_passed to differenciate both behaviours
Fix SerialMetaStore wrong check on repository scope.
Null button in FF. Fix #87
Add a test for LDAP connexion, and optionnaly test whether a given user exists.
Quickly fix Shared Elements driver
Todo: should be reworked more deeply to display more info, or simply dropped.
Fix #95, various issues on both Sqlite and MySQL for handling dates.
Fix #80 : table creation was broken
Embed the phpws library for simpler setup. Close #5
Initiate 4.3.4 migration script.
Close #71 by checking parameter client-side.
Universign feature by @fdecourt
Fix timestamp system, this is NOT an editor, but simply an action provider.
Update README.md
Fix array_merging polluting roles parameters.
Fix from @dmitrydvorkin for basic_auth
Fix build deployment
Fix #103
Fix add WS action / fix websocket
Fix #107
Fix #110
Fix #101
Fix templates not appearing
Fix #98
Fix notification problem (empty node), ignore and log a warning
Fix Settings navigation problems fix #79
Fix Settings Search (was performing ok but results were not displayed)
Probably fix weirdness of repositories
Call flush() after sharing problems can arise if OB active
Fixes #104
Fix #104 (pass ignored group when getting context menu actions, ignore "inline")
Disable text selection in InfoPanel
Fix cmd.php warnings, do not init gui driver anymore. Comment in index.php as well, should be unnecessary
Massive documentation of the administration driver (ajxp_conf), along with some actions renamed for consistency. update_user_group renamed to user_update_group, same for right. Meta sources actions renamed as well, now meta_source_add, meta_source_edit, meta_source_edit.
Alternative JSON encoded parameters accepted for repository creation, and meta source edition as well.
Meta Source deletion was probably broken.
URLDECODE the path parts when using rest access.
Fix an output_buffering conflict, was preventing BitLy shortening to work correctly
Fix #99 : Mod Sec may block uri containing a ../../ in the query parameters. Replace them by _UP_/_UP_/ to avoid blocking.
Optimize raster graphics (@oo12)
Update German translation (@Vorlif)
Update Shortener plugins
> New way of storing metadata
> Use group_switch type for a better GUI
> Fix #113 apply shortening on folders sharing
Update XSD and ajxp_mixins
Auto check new version upgrades
Display release note if there is one before upgrading.
New version of the Joomla Bridge for Joomla! 3.0 (JForm replaced by JRegistry). Fixes #106
Rework auth.remote parameters using group_switch feature to simplify the process.
Fix logout urls for WP & Drupal
Update Readme
Commit uploader.plupload, disabled by default as it requires downloading and installing the PlUpload sources.
Fix Rename position
Create guest Role (disable notifications & watches for guest)
Rework installer last step (show an informational panel instead of nothing and reload)
Typo, fix #119
Update Joomla! Bridge : detect group "8" (Super Administrator) to apply to AjaXplorer
Avoid Main and Minisite collision by using different session name. Make sure it does not have side-effects.
Change how auth.remote is working : set bi-directonnial mode by default (not slave only), and fix the pass checks to implement an equivalent of auth.multi config. Auth against remote CMS, and then against local user base, to allow folder sharing user creations.
Fix #120
Update FontAwesome version to 3.1.11
Fix wrong message displayed on WebDAV activation
Quick fixes for Umbra Theme
Sanitize actionName parameter before applying xpath query.
Test access to data/cache/index.html, testing .ser file is irrelevant in IIS
Fix bootstratp copyright year

---------------------------------------------------------------

AjaXplorer 4.3.3 Release Note

License : Affero GPL
Copyright : Charles du Jeu 2013
Demo : http://ajaxplorer.info/demo
Date : 2013-05-01
Rev Number : 4.3.3

Contributors :
https://github.com/mattlef
https://github.com/piterdias
https://github.com/ultreia-es
https://github.com/chusopr
https://github.com/sabas

This is a DEVELOPMENT version that should not be used in a production environement.

>>> Major new features

Startup Installer : deploy on a database, define admin user credentials, etc.
SQLite3 support
Lots of bug fixes since 4.3.2, to make it a serious release candidate for AjaXplorer 5
New customizations options
Workspaces now take and display a description
Test parameters (SQL connexion, email sender, etc) before saving them.
SabreDAV & Dibi updated to latest version

>>> Details

Fix resizer conflix
Disable MqObserver and NotificationLoader in ajxpMinisite context.
Fix sqlite binaries : store_id cannot be null
Update hooks.json
Startup Tests : add a test for APC extension. Add a client-side test to check that data/cache/ is correctly protected.
Change download, chmod and download_chunk positions
Fix download counter and new link form
Adapt InfoPanel padding when there is a scroller.
Set up a description for default repositories
Set share links RewriteRule disabled by default
Fix Alerts for SQlite
Fix history browsers (git & svn). Fix repository description (use creation time and user if they exist)
revert commit
[access.webdav] Add performChecks function / Better error / update getRealFSReference ( see @dmitrydvorkin PR #50)
WebDAV Server : automatically switch to BASIC if detected in headers, and also add a parameter to force BASIC auth (using standard user password in that case). This closes #57
AJXP_Node : do not serialize utilitary variables
[access.fs] Add a config for using POSIX when checking write permission.
[access.fs] Add a config for using POSIX when checking write permission.
Fix Safari download : do not use hidden iframe, it fails after the first download.
Complete #82 Fix FF20+ error
Merge pull request #82 from mattleff/master
SQLite : create parent folder during test or installation.
Rework accordion
Big refactorings to create a first-run installer.
Sqlite : add a searchable_repositories field as blob are not searchable.
Fix resizing issue with Firefox 20+.
Adapt all SQL-based plugins for Sqlite3
Tmp fix #78
Fix #66
Try as much as possible to avoid admin setting wrong config if no SQL connexion is defined.
Fix warnings
Remove include in Writeability test.
Make sure WebDAV triggers the correct events.
Remove bootstrap_plugins.php file
Delete all alert occurrences at once. Send an instant message to the AJXP_SCOPE_REPOSITORY_ALL Make sure dav.php initialize all plugins
Delete all alert occurrences at once. Send an instant message to the AJXP_SCOPE_REPOSITORY_ALL Make sure dav.php initialize all plugins
Merge pull request #72 from piterdias/master
Last compile
Fix ajaxplorer.goTo to other repository Fix notifications list
Feed loading : automatically load the wrapper if not already registered. Should be generalized at some point.
"Settings" Workspace icons & fixes
If necessary, rerun fireSelectionChange just after fireContextChange to avoid intempestive buttons appearing/disappearing
AttachMobileScroll is not working if the element does not have an ID. Add a random one. Proto.menu : attachMobileScroll to the container Fix to menu widthes
Rework the Workspaces & Notifications Menu, both styling and features. Implement a description field on the repositories. Ability to add label in the menu, defining a separator with a menuTitle option Move switch_to_settings button inside the user menu.
PHP Version is now officially 5.3
Dismiss alerts from feed
Fix Goto in another repository
Fix protoMenu click detection
Catch WebSocket error
Fix get_user_templates_definition
Fix #75
Transmit ajxpPaneObject to subforms (to propagate replicate_row events)
[auth.ldap] Upgrade auth.ldap to define custom parameters mapping and multiple DN's from GUI. Custom params can be mapped to plugin parameter, role ID, group path or profile. [auth.multi] Fix users listing in "user choice" mode [core.notifications] Fix empty result if no notifications returned.
Fix problems when many replication group in the same form. Use formManager.observerFormChanges() when possible
Merge pull request #70 from ultreia-es/ajaxplorer-core-cas_default_users_filepath
Merge branch 'master' of https://github.com/ajaxplorer/ajaxplorer-core
Merge remote-tracking branch 'origin/master'
Binaries & logos, handle case where it's directly pointing to a plugin folder
Upgrade SabreDAV to 1.8.5
Fix PHPDoc signature
Default value for USERS_FILEPATH in auth.cas plugin.
Fix #67 : WebDAV problem in 4.3.2 if only HA1 is set but not PASS.
Merge pull request #69 from ultreia-es/ajaxplorer-core-69
Fix #53 : update S3 regions
Fixed again the #24 (reopened)
Issue 69: auth.cas type mismatch for server port parameter
Read observer after replication Action.share : load configs from plugin instance
Fix disableTextSelection function
Pass a title to a tabulator, or use the label and stripTags
Do not compute the labels width if current form has 0 width
[action.share] Put the background options in a separate group
Add an image for the resize_handle
Add Resizable class from Cameron Wengert
Set up custom attributes for share link page
Update logo widget dynamically
Send cache headers for binary images
Update the toolbar logo from the Gui plugins options
Fix media queries
getFilteredOption should always take repositoryScope into account
Method get_global_binary_param to skip the USER context.
SliderInput do not trig an error on click if element does not have descendantOf method
Remove default texterea styling
Use image types for logos, will break the logo display for the moment.
Update README.md
Create CONTRIBUTING.md
Merge pull request #58 from sabas/master
Merge pull request #63 from piterdias/master
Add Canon CR2 extension (RAW) to editor.imagick
Italian translation update


-------------------------------------------------------------

AjaXplorer 4.3.2 Release Note

License : Affero GPL
Copyright : Charles du Jeu 2013
Demo : http://ajaxplorer.info/demo
Date : 2013-07-19
Rev Number : 97582cc

Contributors :
https://github.com/hlev
https://github.com/gynter
https://github.com/terminal-addict
https://github.com/chusopr
https://github.com/cfoellmann

This is a DEVELOPMENT version that should not be used in a production environement.

Major new features :
> Share a folder as a public listing ("minisite"), with preview for major file types
> Share : Generate HTML Embed code for all type of sharing (ministe or file), and direct download link for files
> Better "Shared Elements" management : browse all shared elements inside a given workspace inside a tab. Use Lucene indexer for performances.
> New view type "Detail" on two lines.
> Full rework of the Configuration to be able to manage them entirely via the GUI (drop bootstrap_plugins.php). This opens a better ability to create an installer
> Notifications : display Alerts in the feed.
> GUI optimization for IE (IE8 does not switch to legacy anymore), for mobile and for widgeting. Great responsiveness.
> Performances improvement at various points, especially the first time loading of the GUI
> DX (Developer Experience) : exposition of the API and the hooks
> [experimental] New "rest.php" access point to run API queries in a more REST-oriented approach

Roadmap to next version
> Create an installer to configure all SQL-based plugins at once
> Complete API Documentation / Expand PHPUnit tests
> Improve Notifications panel layout
> Add buttons to test LDAP connexion, test email sending, etc.
> Digg the WebServer socket feature

Detailed Changelog

Core Auth & Conf
[core.conf] Legcay to new format conversion for AUTH_DRIVER key in bootstrap_plugin
[core.conf] MINISITE & MINISITE_NODOWNLOAD roles creation at startup
[auth.serial] fix two performance problems: For conf.serial, keep a reference to the children to make listUsersChildren acceptable. Was impacting admin users listing and also when sharing a folder to a new worpspace.
[core.auth] Generally, avoid recomputing merged role after calling addRole() if there is no real changes.
[core.conf] When updating the INSTANCE of core.auth or core.conf, force disconnexion and remove admin_counted file to make sure it the user is not logged out.
[conf.sql] SQL_DRIVER is mandatory Add ajxp_user table in conf.sql as well
Readapt the core.auth plugin to automatically convert parameters into auth.multi driver
Refactoring : Move QUEUES stuff from core.notification to core.mq
Core : filter registry from serverCallbacks that are not used by the client
Make TRANSMIT_CLEAR_PASS a default to "true", to avoid by default having to retype a password for WebDAV access. Rework WebDAV Panel.
[conf.sql] Clear serial_role on repository delete
[conf.sql] Fix issue #29 : Deleting a group with users does not delete the users
Massive refactoring for lazier loading of repositories : only load the accessible repositories, only when it's necessary. May break some stuff, to check...
[core.conf] Fix orderRoles function to make sure we keep the groups hierarchy
[boot.conf] For core.conf and all conf.* plugins, always use the boot.conf as storage, otherwise it's weird (conf driver is storing its configs in its own storage)
Core : fix double loading of external files, do not reload contributions if external files are already appended to the manifest.
[auth.remote] Typo in checkPassword ! see #41
[core] At last fix the Repository::getId() method, remove the tests for isWriteable
[core] Attach instanciated driver instance to the repository
[core] Switch the AuthService to be usable with session or not.
[core] Start a REST access point
Declare "Indexable" metadata for in-house optimization : ajxp_shared meta allow for superfast loading of all shared elements of a repository.
Also required the ability to create "user-scoped" entries in Lucene : we duplicated for as many as necessary.
TODO : clear all user-scope Lucene document when deleting a user.
TODO : use Lucene as well to optimize the whole conf.serial/auth.serial drivers?
Refactor AjxpWebdavProvider to AjxpWrapperProvider …
Start a massive refactoring to Restify the behaviour : A node can "on his own" load a repository -> a driver -> a metastore.
Memory cache the users label for better perfs
AuthService : remove the "password min length" check as it prevent the admin/admin creation.
Make sure to call parent::initOptions() to get the default options values (from Manifest)
Apply defered hooks inside try/catch otherwise it can break the chain.
Use restore_error_handler to avoid triggering errors when loading feed
Send template only if the header is text/html, to avoid resending the whole thing if a wrong request is sent.
AJXP_PLUGIN : Load Options Default like for global parameters …
Move initActivePlugins from ConfService to AJXP_PluginsService
Move all bootstrap_plugins configs to a specific boot.conf AbstractConfDriver implementation
Use AJXP_Utils::cleanDibiDriverParameters() when using a dibi like field
> Clean dibi parameter by removing the driver prefix …
> Change the way plugins are automatically activated or not : if there is a core.* plugin, do not load this category, it will be the core plugin task. Create manifests where necessary (meta, index, access)
> Move AJXP_Logger class to core.log, instanciate the real logger using the core plugin config.
> Plugins list : skip core plugin that don't have any parameters to avoid polluting display
Merge pull request #25 from cfoellmann/master minor README update


WebDAV
WebDAV fixes : fix lock backend (create lock file if it does not exists), was preventing upload.
Always $ignoreRangeHeader for the moment, fseek is not working correctly with the inner streams.
AJXP_Sabre_NodeLeaf was missing the getContentType() implementation (see #31)

Admin GUI
Use a button to trigger SQL tables creation. Update all CREATE TABLE instructions with IF NOT EXISTS
SQL-consumer plugins use the default "Core" driver defined in the core.conf plugin
Fix plugin editor and roles editor layout details

GUI
Relabel Shared Elements repository
[core.mq] : new parameter for polling time
Fix ajxp_shared tabs, send to user menu, do not show in RepositorySelect
[gui.ajax] Handle autoload of css files.
[gui.ajax] Action : specify a forbidden extension in allowedMimes by using "^ext"
Gui.ajax : Fixes for IE7 and IE8, IE8 now does not switch to legacy theme anymore !
[gui.ajax] Fix FilesList height and content_pane border radius …
[gui.ajax] Ability to pass the standard GET parameters during the get_boot_conf action
Bootstrap : Prepend SERVER_PREFIX_URI to logo path
FilesList : fix duplicate listing when displayMode is fixed by componentConfig
gui.mobile : fix content pane duplicate.
Fix selectable + touch : trigger selection if deltaY is very small, otherwise it's a scrolling action.
InfoPanel : check viewPort dimensions when opened as editor.
Use InfoPanel as an editor (disabled by default). To be applied for mobile version
Declare an 'inline' toolbar for mobile GUI (all the old code could be removed). Put ls, open_with and download in this new toolbar
FilesList : pass a toolbarOptions to be displayed inline, either multiple (visible on each line) or unique (only selected line)
Toolbars : ability for an action to belong to many toolbar groups, using comma-separated list
Rework notifications feed styling.
Bookmarks implementation as a FetchedResultPanel
Rework InfoPanel responsiveness > switch to 2 or 3 columns and biggest preview
Fix video.js preview repositionning
Handle ajxp_bookmarked metadata in the same way …
Redefine tabulator content for ajxp_conf driver / TODO check other non-wrappers drivers
Fix IE Tweaks : make sure parseXML uses XMLDom active X instead of simple DOM parser (to use XPath)
Forgotten observer in search engine (destroy), set lightbox markup on sub element in the fileList
Rework the splitter and the tabulator
Fix AjxpPane.scanChildrenPanes
Rework Tree Styling, the caret is still not good (white border when selected).
Fix various JS files to allow concurrent FilesList instances. Use one in the SearchEngine result.
Fix Key events for new Detail view
New view type "Detail" on two lines.
Fix #28 WS not refreshed for user-added repositories
Avoid many XHR at startup by sending directly the bootconf and the registry in the HTML template.
Readapt ajxp_widget for new theme
Default values for nested fields in FormManager
FormManager : Fix missing "No" selection on boolean
Rework FormManager to send nested values as JSON, creating too long key names can be blocked by Suhosin
New group_switch: type for standard form, new hidden type, new mixin for dibidriver_providers using these new types.


Sharing
Use previewProvider editors to generate embeddable HTML code for shared files. Handles Images, audio, and video.
Fix public links list, was broken by the new share mechanisms, and by any other php file inside the folder (#45)
Add "minisite" toolbar : upload actions, logout, new download_all action
Inline Toolbar : fix css for minisite, new invisibleSelection option for Selectable
Minisite : move template in action.share
[action.share] New share mechanism : minisite
[action.share] Better reload minisite configs …
[action.share] New parameter AVOID_SHARED_FOLDER_SAME_LABEL
Stripped out version of the template prepared for minisite feature, inlineToolbar in multiple mode
Use a short form of the web link hash, along with a RewriteRule
[action.share] Minisite, do not use the <base> tag, must be absolute
Re-put the Share action in right click

Plugins
[editors] Fix eml editor, fix editor.other styling, add iconClass to editor.text
[action.share] Make sure the minisite.php template is dynamically configured to point to server root (e.g. alias to public)
[access.fs] When looping through a dir and using listing cache, make sure that the base path is also the correct one.
[access.ftp] Fix ftp permissions (readonly state now has some direct impact)
[access.fs] Fix dircopy by postponing the recursion after the closedir - should fix access.ftp
Legcay to new format conversion for AUTH_DRIVER key in bootstrap_plug… …
[uploader.jumploader] Fix uc_uploadUrl to fit ajxp widget mechanism
[editor.soundmanager] Fix hookToList that was recently broken
[editor.soundmanagaer] Fix sound (destroy on validation to be sure it's happening before disapear)
[editor.diaporama] Handle window.ajxpMinisite config (hide metadata panel)
[editor.soundmanager] Openable previewer
[editor.video] Openable previewer
[access.ajxp_conf] Fix delete user & delete role …
[access.fs] Fix ls & copy actions rights
[access.ftp] Let the driver handle the hidden files case, always get the whole list in the wrapper
[access.ftp] Partially fixed the displaying of hidden files in FTP access plug-in
[auth.ldap] Updated ldapAuthDriver to reduce calls to ldap_connect/_bind/_search
[editor.diaporama] : correctly place the open overlay
[editor.codemirror] Fix SERVER_PREFIX_URI case …
[editor.infopanel] Create "Folder Info" action
[editor.codemirror] Fix for mobile version
[editor.soundmanager] Enable wav support
[access.jsapi] Fix JSAPI driver
Add Lucene by default to FTP, SFTP and SMB drivers
[access.ftp] Fix wrong year for recent monthes, see bug #15
[uploader.html] Fix #12 Files duplicated with drag and drop upload
[access.ftp] Merge pull request #26 from ultreia-es/issue-17 Workaround for PHP bug #62035
Issue 17: Workaround for PHP bug #62035 about PHP not being able to handle properly some FTP responses.
[auth.cas] CAS Authentification plugin, contributed by Ultreia Communicaciones
Fixes on WebSocket server
[core.ajaxplorer/i18n] updated hu.php added translation for untranslated strings

Developer
List all ACTIONS and HOOKS in a new "Developer" node in the Settings panel.
Still todo: document all serverCallback nodes, argh.
Add a new "Developer" node in the Settings panel and display the actions and their API here.
Rework phpDocs packages and subpackages
Fix rest access point : /api/repository_id/action_name/parameters
[core] died rest access point …
[dist] Git tag and push instead of svn tag
[dist] New task for git diff-tree, adapt parseSvnSummarize task, rework the prepare_update task
[dist] Switch automatic builds from SVN to GIT
Create README.md for new git repository









---

License : Affero GPL
Copyright : Charles du Jeu 2013
Demo : http://ajaxplorer.info/demo
Date : 20130302
Rev Number : 8b9a0a6282

This is a DEVELOPMENT version that should not be used in a production environement.

BUG FIXES
[standard forms] Fix false value for standard form
[access.fs] Wrong anti-slash inside autoRename function
[index.lucene] Indexation : cleanIndexedChildren to make sure to avoid duplicates
[gui.ajax] Catch a problem in bootstrap if messages sent in bootstrap_conf are empty.
[access.fs] Apply CHMOD_VALUE on file copy
[meta.mount] Filter plugin options
[security] Make sure the auth result does not differ on user test
[editor.diaporama] Disable download button in Diaporama and ImagickPreviewer if download action is not registered.
[cross-copy] Cross repository move : try to touch the destination file to make sure the date is kept. Also trigger the various hooks.
[pclzip] Upgrade pclzip to latest version (2.8.2)
[access.ftp, access.sftp] FIX : Implement CREATE option
[conf.serial] Fix deleteRepository bug : delete aliases.ser entry and remove ACL from attributed users. TODO : check performance issue (check the limit to swtich from serial to sql)
[uploader] Remove dropareaHover after drop
[action.share] Skip current user when sharing a folder
[php 5.4] Exclude E_STRICT from error_reporting to avoid php 5.4 errors

MASSIVE GUI IMPROVEMENT
Brand new vision theme, comes with FontAwesome for monocolor icons.
Rework Settings layout : close InfoPanel, dedicated Parameters button, etc.
Rework public DL page
Interface responsiveness using css media-queries
Add image attributes in form grammar. TODO : parse image parameters AFTER the elements creation (e.g. repository)
Enabling selection in left panel.
Panel Header actions, use the disable state with CSS instead of manually show/hide buttons
Custom "create" action for Fix background for share page
Improve infoPanel: register panels based on metadata presence, Limit exif data to images, Use modifier to add a dynamic infoPanel for Share data
Improve Login Box add texture to overlay, prevent box from closing until user is correctly logged
Recompute the header toolbar widget sizes when the splitters are moving (generic binding to a given widget
resize event).
New groupOtherToolbars options for ActionsToolbars
Simple breadcrumb class
Adapt sortable to work on non-table rendering
Connexion JS : discrete attribute to avoid showing loader Fix click/touch event for iOS 6


REAL-TIME NOTIFICATIONS / MAILER
Most "reload" actions are now replaced by dynamic loading of modified nodes. Concurrent modification by another user will appear automatically in real time.
This is implemented by default with Polling, an alternative WebSocket implementation is still in experimentation.
Mailer is now part of the core (using phpmail-lite)
User feed : store events and alerts as a feed : this requires SQL and is not enabled by default for the moment.
Pass host & port to ws-server.php
Extract the queues management into specific plugins mq.*  (remove the worker queues from conf plugins, remove the instant queues from core.mq)
Meta.quota uses instant message (hook msg.instant) if active.
Still todo : implement various drivers to store the events feed / alerts (persisting queues) / Unify non persisting queues (worker queues like email, instant messages).
Reuse opened WsSocketClient to send multiple messages during request lifecycle.
Auto switch between websocket and polling
Use hook for mailer instead of dispatching directly
Subject append / prepend and body layout for emails
Localization of mails templates in french.

PLUGINS MISC
[core.conf] New option in core.conf to avoid autoloading of last visited folder.
[uploaders] Server-side checks before upload, for both triggering before_create hook and checking filename.
[shorten.multi] New shorten.multi plugin (contributed by Miguelon), should replace shorten.bitly
[meta.quota] Set quota recompute deferred
[action.share] Do NOT override sharing options if re-editing
[action.share] Try displaying USER_DISPLAY_NAME whenever possible
[action.share] Set the resolveAsParent flag on user before getting the PATH option, to make sure it's correctly resolved for computing
[action.share] Make sure to avoid // in public link
[action.share] Make sure we don't read a non existing file (seems to hog CPU)
[action.share] Use getUsersForRepository() instead of listUsers() in ShareCenter, and update this method in serial & sql drivers.
[action.share] Option HIDE_REAL_LOGIN for autocomplete list.
[auth.ldap] strtolower ldap attr directly
[editor.imagick] Fix Imagick Previewer for remote viewers / Add option for setting own custom Imagick parameters
[index.lucene] Set Numeric Zend Analyser
[meta.mount] Escape password in FSMounter
[editor.imagick] IMagickPreviewer send correct cache data to avoid reloading thumb during the session.
[auth.ftp] Hide remember me for auth.ftp
[meta.quota] Fix meta.quota : shared folder / new parameter to skip caching.
[action.scheduler] use queue to pass huge number of users
[access.hpcloud] Force usage of object-store and not CDN, otherwise it can create errors (if CDN is not up-to-date probably)

INTERNATIONALIZATION
Catalan update by Joan
German translations added (panzaeron)

CORE
Generate direct Ajxp link to files ( = shortcuts )
Node.meta_change hook, triggers reindexation.
Assign a clientForm to a given theme
Finally discriminate before_change ( = content) and before_path_change ( = path) hooks, to fix disappearing
shared metadata on content update.
XSD Accept special chars in component_config className attribute (className::ajxpPaneId)
Send Content-Encoding:none header to force closing connection
Add a start test for Output Buffering
Fix metastore security scope and metadata cleaning
First pass on virtual roots (should be provided by user roles)
Fix Lucene Indexer if repository is group-scope
Clear stat cache before sending node.change event.
Make sure to force IE9 in standard mode
[phpunit] Organize PHPUnit Tests
[index.lucene] Special * query to send whole arborescence (performances test)
New variable AJXP_GROUP_PATH_FLAT to avoid seeing subgroups folders
Save digest HA1 on password update (if TRANSMIT_CLEAR_PASS is set to true), to avoid having to re-enter a
password for WebDAV >> To validate
Utils : do not sanitize HTML for textarea fields / Pass these fields value as CDATA, not attribute.
Make sure to send node.change event AFTER download (otherwise it triggers an output_buffer).
Set doc/ppt/xls mimes in core, not only zoho
Apply ultreia suggestion to trim only null characters (ultreia)
Trigger upload directly when ios-client / apache

PERFORMANCES
Perf hunting : introduce an accessible cache for full registry queries
Perf hunting : fullMetaCache broken by alternating global and local cache. Always use ajxpNode->isLeaf()
instead of is_file / is_dir.
The getTrueSizeOnFileSystem is VERY time consuming, we could maybe use a cache. The long part is now located in renderAjxpNode() and xmlEntities() function...


------ 4.3.0 Release note

AUTH/CONF COMPONENTS MASSIVE REWRITE
. Groups implementation : users can now be part of “groups“, and a user can be administrator of a sub-group only. Repositories and roles can be marked with a given group as well, making them accessible only to the users of the group and below. This is a good step toward multi-tenancy. Groups are also accessible for sharing : ability to share with a whole group at once.
. Roles generalization : The role concept is now a generic container for a extended set of data : ACL, but also plugins Parameters and plugins actions set to be disabled. Roles can be manually created, but a user will by default inherit its rights from a default "personal" role, and from roles attached to its groups. This is making the configurations/ACL ultra-flexible, and you can for example set different configs parameters for two different groups, and then override these for a specific user if necessary.  These parameters and actions can also be applied to a chosen "scope" for repositories : All Repositories, Shared Repositories, or each repository one by one. See this page for more info : http://ajaxplorer.info/documentation/administration/4b-configs-roles-ajaxplorer-5/
. The old "CUSTOM_DATA" fields defined in the conf drivers options are now actually brought by plugins manifest, and a "scope" attribute allows to attach these custom fields to either the users, the groups, or the roles (or all of them).
. Roles (and by extension users and groups), Repositories and Plugins now have their own brand new editors.
. A “lock" property of the users can trigger a predefined action just after login, useful for either forcing pass change, or setting a GUC to validate. If set to "logout", the user just cannot log.

WEBDAV COMPONENT REPLACEMENT
The WebDAV component, previously powered by ezComponent, was entirely replaced by SabreDAV, which is by far a more active and stable project. As a result, webDAV should be working way better, litmus tests are passing 100%, even with MacOS Finder! As a bonus, we added the possibility to point to the parent url (/shares/) with a listing of all available repositories depending on the user logged. Finally, a WEBDAV_BROWSER_LISTING option allows you to access the very simple webdav list directly in the web browser.
WARNING : THIS NOW ADD A REQUIREMENT TO PHP5.3!

NEW PLUGINS
[access.hpcloud] First implementation of HPCloud Object Storage access, based on their PHP bindings + patch. See if possible to send back the changes.
[cypher.encfs] Experimental implementation of encfs : dynamically create / mount / umount an encfs filesystem. Nice trick to handle the creation via STDIN. Requires web-server user to have sudo access to encfs and encfsctl commands. Implementation is using specific folder prefixes and node filtering. New "force_copy_delete" parameter in fsAccessDriver when moving directories from/to a mounted folder. Automatically unmount all folders at logout/repo_switch, pass the XML template & password as plugin configurations. Remind to add www-data or equivalent to sudoers for encfs and encfsctl commands.
[metastore.xattr] XAttr metastore implementation, seems to be working quite well. Requires xattr, libattr (libattr1-dev on debian), and pecl xattr extension.
[meta.watch] Update Mailer, new meta "watch" for watching a folder and getting notification on it. How to watch a root folder? Share and Watch together
[core.mailer] Generic plugin for sending email. Unique implementation yet is using phpmailer-lite.
[core.notification] USE_QUEUE parameter in NotificationCenter / Base for notification templates via i18n library
[mailer.phpmailer-lite] Mailer implementation


PLUGINS FIXES
[meta.git] Fix performChecks function
[editor.diaporama] Compute image ratio using JS when not available via metadata.
[editor.diaporama] Optimize for remote wrappers by caching references to real file whenever possible.
[editor.diaporama] PThumb : deprecated join calls
Fix spaces (rmeske)
[Access.dropbox] better error handling (could trigger a memory fault)
[log.text] : send syslog error when recursive problem.
[access.fs] Catch opendir failed call error / Remove unused countFiles call for recycle bin.
[editor.soundmanager] : totally disable for IE < 9 .
[conf.serial] Fixes in conf.serial/AJXP_User and in ldapAuthDriver for case sensitivity problems.
[action.scheduler] Add a log in fakeLongTask
[auth.ldap] Do not initialize the LDAP Connection in init() function, otherwise it's triggered for no reason most of the time.
[action.share] Resolve AJXP_USER as parent only in a controlled environnement > Better logs for shared links actions (do not mix with author login anymore)
[meta.filehasher] Fix : filling /tmp/ dir with filehasher_patch files...
[conf.sql] New table ajxp_simple_store for multi-purpose storage. This is getting closer to JCR / PHPCR approach !!!
[meta.quota] Implement SoftQuota
[meta.filehasher] Meta.filehasher : remove rsync actions to "advertise" the fact that rsync is not on the server.


CORE FRAMEWORK (PluginService & Controller)
New variables filters AJXP_GROUP_PATH, AJXP_ALLOW_SUB_PATH
Ability to load manifests contribs including external files (for listing actions).
Add ajxp_folder mime_type to "ls" action, to allow the actions discrimination by mime types for folders as well. To be checked for side-effects!
Set GROUP_PATH as repository standard option.
LoadRegistryContribution only when building the registry - Try filtering options with role parameters.
Ability to depend on a type of plugin being present (mailer+)
Basis for attaching binary data to users/roles - Handle images for avatars
Add node.read hook wherever possible
Abstract updateUserObject() function can be call to let the AUTH drivers enrich the CONF users object, implementation sample on LDAP, by automatically mapping ldap attributes to CUSTOM_DATA_ parameters.
Fix exception loop
Fix logger : when using CLI, REMOTE_ADRESS not available, display PHP_CLI instead.

CORE UI (gui.ajax)
Actions : new attribute evalMetadata on selectionContext
MetaStoreProvider interface now declares an inherentMetaMove() method to be implemented.
ShareCenter : Update node metadata on before_change instead of change, otherwise automoving metastore will move metadata before checking the node.
Move Conf / Auth group methods to abstract classes, SQL conf to be implemented. Code cleaning.
ShareCenter : Handle group sharing from start to end.
In FormManager, ability to set a field readonly .
IE : always LoadAutoLoadResources() after registry is loaded
Connexion : display error message, not error object.
IE XPath : set SelectionLanguage property to be able to use contains() expression.
Display a NEXT instead of OK for create_user and create_repository




----

AjaXplorer 4.2.2 Release Note

License : Affero GPL
Copyright : Charles du Jeu 2012
Demo : http://ajaxplorer.info/demo
Date : 2012-07-23
Rev Number : 3035


This is a bug fix release, and introduce two new features : simple but efficient documents automatic-versionning based on GIT,
and Amazon S3 driver. Other clouds drivers will come soon (Swift from Open Stack among others).

[NEW FEATURES]
Meta.git    : Git based versioning, way more simple than with svn, simply install GIT on the server and install the PEAR/VersionControl_Git library. Open in browser, revert to a given revision, cosmetics.
Access.S3   : Based on Pun'k Avenue s3 "better stream wrapper" implementation, and the aws-sdk from AWS (not packaged by default).

[BUG FIXES]
gui.mobile : open/info menu had disappeared (FilesList refactoring).
Auth.ftp & Auth.smb were broken
Notify.phpmail-lite : Base64_decode when necessary
Disable scheduler if not able to create db folder
Do not catch errors and exception at the very first boot
[core] Factorise generateAttachmentHeaders and generateInlineHeaders inside HTMLWriter, and use them in fsAccessDriver and in FileMimeSendSender.
[gui.ajax] Fix various things in JS files for FilesList class impermeability.
[access.smb] Make sure to register smb:// wrapper (bug in cross-repository copy)
[access.smb] Apply Thomas Oettli tweaks (new DOMAIN parameter).
[access.ajxp_confDriver] Not very nice, but working, make sure to register meta.svn & meta.git after the others (will trigger the hooks accordingly) @todo : generic reflexion on the hooks/plugins ordering.
[action.scheduler] Missing xmlEntities call on repositories list, could break the interface.
[action.scheduler] Make sure the folder is also initialize on unserialization
[meta.quota] Fix shell epression used for computing quota on Darwin
[core.auth] Wrong ajax response on pass-change error, reported by @ultreia
[AJXP_Utils] Fix from @mattlef : avoid exception on empty extension filename

[CLI & ASSOCIATED TEST]
CLI : detect / configure / use COM WScript.Shell to enable command line on IIS. Require giving correct rights to the cmd.exe executable.
Typo error totally breaking the PHPCLI test.
Test CLI : more tests on safe_mode & exec detection to be sure it will not crash

[WebDAV]
Disable locking for the moment, triggering too much random upload problem
[Quotas] webDAV and quota checking
[WebDAV] Fix error if a repository has no metastore
Conf.sql :  getRepositoryByAlias was simply broken, making webDAV fail when using conf.sql
GoodReader WebDAV client : do not urlEncode




AjaXplorer 4.2.0 Release Note

License : Affero GPL
Copyright : Charles du Jeu 2012
Demo : http://ajaxplorer.info/demo
Date : 2012-06-24
Rev Number : 2976

This is a major stable release that includes numerous bugfixes from the 4.1.0 and a lot of new features.

[NEW FEATURES]
Auth.multi driver       : Implement an alternative MODE, instead of proposing the various drivers to the user, consider one is the master (typically ldap) and the other is the local alternative (typically serial) to allow creating shared users.
Action.scheduler        : a generic CRON-LIKE scheduler triggering AjaXplorer actions in background. Only one call needs to be added to the cron to trigger the scheduler
Share engine            : Add an optional Downloads Limit on generated links to auto-expire after x downloads.
Default repository      : Add an option for forcing default repository at login.
Quota implementation    : New hook before_create / Pass new size when possible in before_change and before_create
meta.file_hasher        : Store md5_mtime to make sure some changes were not missed, recompute if not sure
meta.mount              : Automount any filesystem (Linux only) automatically
log.syslog              : Send logs to System Logger (Linux only)
Core.auth / Core.conf   : New mechanisms to list users in a paginated way, to avoid overflowing GUI. Implemented by auth.sql, auth.conf and auth.ldap for now on.
-- 4.1.0
PHP 5.4 Support         : Call-time pass by reference are deprecated, replace static calls to DOMDocument::loadXML


[CORE]
XSD Schema          : missing dynamicItems element definition, missing user_param element
Encoding            : XmlEntities before sending in triggerBgAction.
Encoding            : Preg_quote before using as regexp
New Cache           : I18n Messages caching mechanism, one file cache per language
Automated build     : exclude some under-used or very specific plugins from the standard build : access.demo, access.jsapi, access.wms, auth.cmsms, auth.phpbb, editor.codepress (deprecated), log.syslog
Replication         : Ability to replicate groups of fields in the standard form kit.
Config files        : New (optional) way of encoding serial files using JSON formatting. We may switch massively to this format, as it's much more easy to hack manually (but would have to check performances before).
Refactoring         : Deport login/logout and related actions inside AbstractAuthDriver instead of root index.php file
Autoloader          : search interfaces defined in core plugins
Refactoring         : New core.metastore plugin, defining the MetaStoreProvider interface & the AJXP_METADATA_ constants
Performances        : New skipCheck parameter added to AJXP_Utils::loadSerialFile
Distributed Env     : New variable AJXP_SHARED_CACHE_DIR / Shared cache can be a stream, which have implications at many levels
-- 4.1.0
Cross-Repo copy     : Two successive node expand changed the current repository to the destination repository (switch back replaced twice).
Core                : Fix mkdir() call for the cmd_outputs folder
Performance         : cache slow processing data when possible (registered extensions, messages, etc), either in memory (static var) or in cache files.


[GUI BUGFIXES]
IE10 Ready          : Prototypejs & Css fixes for forthcoming IE10 version (does not support filter: anymore)
Typo                : Error prevented the updateIcon in xTree
Diaporama           : Do not display splitter and info panel if no toggleButton action is passed
IFRAME uploader     : use closeValidation instead of closeFunction to avoid override
Error catching      : Catch error 500
Refactoring         : ParseXMLMessage Return false on error
Refactoring         : Set action_instance_ID on buttons referring to actions, to dynamically update their label if necessary.
Performances        : ActivityMonitor sends get_action=ping to avoid triggering default action.
HeaderResizer       : decorellate from table_rows_container, fix columns width, fix typo that was preventing Opera from working.
Refactoring         : Deep FilesList refactoring to attach a different data model
User Experience     : Repository configs Update the Meta Sources tab for better UX.
Bug                 : Avoid shadower error / Do not call activate() on accordion if already showing.
ConfigEditor        : Do not close window on repository creation error / Form Manager : use tab to navigate inside the accordion.
-- 4.1.0
Client Session timer: hook to "ajaxplorer:longtask_xxx" events to avoid disconnecting during very long task (namely uploads for the moment)
Remember me         : reported from 4.0.3 branch
Tpl Logo image      : Wrong content type header
Massive deletion    : POST instead of GET
Error Message       : Restyle message box (max height), fixed broken carriage return
JSPacker            : rtrim windows line feed

-- USERS & CONFIGS MANAGEMENT
Actions             : Group new user / new role actions under a same submenu.
Hooks               : New hook for adding section to the Settings console from other plugins
UX                  : User pagination if auth driver supports it in access.ajxp_conf
Bug                 : In the few cases where the user now can upgrade its own rights, make sure to load() it before, if an admin has changed the rights during the session.
User case           : Disable case sensitivity (in core.auth config)
Auth Schemes        : Auth driver can provide AuthSchemes (displayed in the admin interface). Should be used by conf.serial to differentiate the storages by folder and avoid using ugly ID_SEPARATOR.
Performances        : Implement __wakeup() function on Ajxp_user to make sure to clear the registerForSave array.
Performances        : [conf.serial] Delegate the user files saving to the __destruct method for better performances.
Performances        : New FAST_CHECKS parameter for conf and auth serial plugins

-- WEBDAV
Performances        : Performance improvement, applyActions() instead of directly calling driver methods, so that pre/post process are applied.
Refactoring         : Detect if there is a metastore, and use it for storing webdav properties. Should implement locking.
Refactoring         : Check interface AjxpWebdavProvider instead of hardcoded access types
Bug                 : Fix repository alias / id problems

-- PLUGINS
access.fs           : Preconfigure a folder whose content will be automatically copied to the repository at first load.
access.fs           : optional arguments to use rename as  move
access.fs           : Upload : pass accented characters in the urlencoded_filename POST parameter
access.ftp          : Fix FTP listing when multiple groups
access.ftp          : Fix autorenaming on upload not working.
editor.browser      : Classic header fixes for IE8
editor.imagick      : Unoconv integration for both previews of office files and indexation of their textual content.
editor.imagick      : Autodetection of thumbs ratios for pdf thumbnails.
editor.imagick      : Threshold for generating all pdf pages at onces or on-demand.
index.lucene        : Lucene and office documents : silently tries to index, avoid throwing errors
editor.video        : Fix m4v support
action.updater      : Connect to update site through a proxy.
http.downloader     : Trigger before_create before downloading!
http.downloader     : Fix  progress bar for remote downloads
shorten.bitly       : Re-display shorten form when showing shared link url
editor.pixlr        : Add IfModule instruction in htaccess otherwise it can prevent from accessing the content of the folder.
meta.filehasher     : rsync actions (requires PECL rsync extension)
uploader.jumploader : skip pre/post processors if xhr_uploader passed in the url
auth.sql            : Override the clearRights() method, changes must be saved directly in the DB.
auth.sql            : Fix double bookmarks loading
Jumploader          : use uploader passed as argument, may solve FF random problems?
action.share        : Change share action rights : allow readonly users to share links (but not folders).
action.share        : Do not allow re-creating a temporary user
action.share        : Handle SessionCredentials case along with folder sharing by saving an encoded version of the credentials in the options.
meta.svn            : Usability & improvements, more documents oriented than source control. To be generalized. Todo : how to grab old versions metadata?
meta.svn            : pass the LC_ALL environnent variable to proc_open if AJXP_LOCALE is defined
meta.svn            : pass array if multiple arguments (will be shell escaped) /  Auto-commit metafile changes
unoconv             : How to guess the encoding of pdfs of docs for extracting text?  / TODO : report documentation
-- 4.1.0
Metadata loading    : Set a "hidden" metadata to a passed node
Access.fs           : handle symlinks more properly
Access.fs           : Filter files and folders when creating Zips, using PCLZIP_CB_PRE_ADD callback
Access.smb          : Clean URL everywhere, pass the Locale as environnement variable when defined
Access.fs           : Big typo error making the "nodeName" resetting useless
Access.smb          : override makeZip and allow its usage (by plugin configuration), as it can be an option when on a very fast network connection.
Access.smb          : fix "+" in folder name, use rawurldecode() instead of urldecode()
Open_basedir        : Multiple files downloads broken, do not "patch path" in readFile function when on the realFileSystem.
Core.conf           : Add a $context parameter to the user save() method, to avoid "over saving" data : if context is "superuser", save preferences and rights, where as in context "user" save only preferences.
Core.uploader       : should solve the problems of setting the upload limit.
WebDAV Server       : detect MiniRedir user agent
Synchro             : Recursive listing implementation & hooks applyCondition for better performances. Testing synchro tool
Synchro             : Various tricks to trigger the metadata updates from outside, and webdav optims
Conf.sql            : Auto detect "objects" preferences and serialize them in the DB, adding the $phpserial$ prefix. Fixes AJXP_WEBDAV_DATA of users, as well as PLUGINS_DATA used by notify.phpmail
Editor.diaporama    : fix the "navigator" when the is a marginTop on the thumbnail, encodeURIComponent before triggering download action, otherwise breaks (e.g. & in file name)
Editor.zoho         : as reported by zoho support team, the Secret Key is in fact deprecated and no more necessary, apply node.before_change hook before saving
Editor.pixlr        : apply node.before_change hook before saving
Editor.imagick      : do not inverse slashes if not necessary!
Editor.video        : Pass alternate videos versions in the metadata, and set them as HTML5 video source (require an external pre-encoding)
Index.lucene        : ignore case for determining content-indexed extensions
Uploader.*          : trigger events ajaxplorer:longtask_starting / ajaxplorer:longtask_finished
Auth.ftp            : Force call to getServerFeatures() when coming from the login operation.
Auth.ldap           : Jon Peck ldap contrib : ability to configure DN as an array and iterate through them
Meta.svn            : manually set a library path to access the SVN commands.
Meta.filehasher     : new utility for accelerating synchronization, compute and store file md5 in metadata (if metastore active) and delete on file change.
Action.powerfs      : Fix zip delegation : do not sleep for one second, change the download mechanism, and place the zip inside the temporary folder, otherwise it makes problems for read-only folders. Allow compression when using powerfs in read mode, Todo : exclude hidden files from zip operation using an exclude list,
Action.share        : AjxpSharedDriver avoid error on empty glob(), fix typo error


-- TESTS & INSTALL
Test PHPCLI         : Catch Errors on popen() to avoid IIS crash.
testPHPSession      : Skip test if save_handler is not file based
CLI                 : Change the way the CLI is detected.
--FROM 4.1.0
New config file     : New optional config file to set the configs that must be set before anything else : LOCALE, TMP_DIR, INI_SET
Test.gpc            : Totally commenting magic_quote_gpc breaks JSON if magic_quote is active!
Test.writeability   : Call is_dir silently to avoid error triggering and let the diagnostic tool run
Tests failed        : Suggest changes (in the new bootstrap_conf.php file)
Documentation       : Plugin Info XML, ability to browse many plugins folders (experimental)
Security            : Reported from 4.0.4 branch




---------------------------
PREVIOUS RELEASES FROM 4.X
---------------------------


AjaXplorer 4.0.4 Release Note

A vulnerability was discovered that could allow a non-logged user to access other files on the server
file system. The « remember me » mechanism was also improved to lower the session hacking probability
in case of « cookie stealing ».

AjaXplorer 4.0.3 Release Note

License : Affero GPL
Copyright : Charles du Jeu 2012
Version number : 4.0.3
Demo : http://ajaxplorer.info/demo
Rev Number : 2748

[Fix side effects of previous release]
Revert bootstrap_context commited once again with setlocale uncommented.
PHPCLI test : detect the disabled functions to avoid ugly error at startup!
The open_basedir fix for zip browsing was breaking the zip extension on download.
Test glob result in upgrader
Locked file could save content even if hook node.before_change returned an exception.

[Access Samba]
Make smb access more robust : configure smbclient path, blur credential in debug, get the procopen error stream, etc...
Access.smb : handle Windows case for smbclient+cygwin install. Nice!
Fix a couple of samba tweaks, plus shared links when using auth.smb/access.smb, may impact other auth.** drivers
Update access.smb documentation

[Users number scalability]
New options for the ShareCenter : Ability to pass a regexp pattern to AuthService::listUsers()
Touch a file in the cache to avoid triggering countAdminUser() if not necessary (ie do it only the very first time). Can be very long when a lot of users!

[Android client redirection]
Adapt iOS GUI Plugin for Android as well, ability to set the app url via the configurations.
Handle the skipANDROID parameter & cookie

[Other]
Editor.diaporama : defer cache cleaning hook
Editor.diaporam : allow the client to ask a specific thumbnail dimension => useful for mobile devices!
Make joomla_auth_remote function more robust, when the HTML cannot be correctly parsed by a DOMDocument.
Auth.remote MASTER_XXX variable documentation update, along with the website How-To.

-------------------------------------------------------------------------
AjaXplorer 4.0.2
Rev Number : 2728
[Security]
Fix a potential XSS via the doc feature

[Hooks]
Ability to apply callbacks in a "deferred" way, i.e. after the output is sent to the client. Drastically increasing user experience.
New hook "node.before_change", to be used by locking plugins

[Access drivers]
Moved global parameters "hide folder, show hidden files, etc" to the filesystem_commons mixin.
Test HIDE_XXX is not empty, otherwise there are false-negatives
Try to chmod 755 publiclets to make sure they are executable.
Typo error in the fixPermissions() routine
Access.fs : Deploy various strategies to go around open_basedir php inconsistencies.
Access.fs : Use copy() when driver is not remote, it's much more efficient
Access.fs : X-Sendfile needs UTF8
Action.powerfs : Do not sleep() at the end of the archive creation, otherwise the zip_operation file is created again
Access.fs : "Purge" action was commited commented

[Gui]
Place the window.opener tentative inside a try/catch to avoid permission error
Adapt tree scrolling when focusing on a given node, + compile
Fix dragndrop & scrolling problems.
NL2BR for line feeds in the notification body
Editor.browser : url broken if there are paremeters in the current url
Editor.browser : Filehandle left open, was breaking download on CentOS

[Plugins]
Meta.simple_lock : Simple "locking" implementation : manually lock/unlock files to other users.
Action.skeleton: custom_target_url typo error
Auth.ftp  : Translate FTP dynamic login screen / Translate yes/no options
Uploader.flex : FlexUploadProcessor, double utf8 decoding was breaking special chars!
Uploader.html : Make sure no to close the uploader if some file is still loading
Uploader.html : Fix the allowed extension mechanism
Access.ajxp_conf : fix MIXIN_MESSAGE appearance in Wallet data
german translation for action.share
Fix uploaders ALLOWED_EXTENSIONS usage (comma separated list), and text for other uploaders to enable flex if it's the only one.

[Core & Language]
Add a new test for detecting the CLI php
Catch exception in webdav backend and encapsulate in a webdav error.
Fix compat version of json_decode, and make sure to expect the "assoc" version of the function, as the compat version only support this (not the stdClass). Was breaking upgrade for php5.1.X
Weirdness in serializations with the inferOptionsFromParent property, seem to be fixed by setting it private with getter/setter. Was breaking share metadata in templates children...
For php 5.1, the protected nature of the properties fail, do not call them directly, use the getter() instead.



AjaXplorer 4.0.1 Release Note
------------------------------------------------------
This is a bugfix release.

[New]
+ "Default Role" implementation : like "Default Rights", all newly created users will have this
role.
+ Command-line delegation for both "compress" and multiple "download" actions, using the server
"zip" command.
+ Option for delegating the dowloads to the server, using the X-SendFile server module
(external module to install, available for Apache, Lighttpd & Nginx).

[GUI]
Fix IE7 double click for opening in external window : closing the lightbox too fast was
creating error with the shadower script.
Default double click switch to "download" if no openable editor available.
Typo error onCancel / onComplete function

[Plugins]
[access.fs] Error in readFile was breaking multiple files download in any other browser than
Chrome (wrong headers sent)
[access.dropbox] Missing columns definitions for dropbox plugin / Update dropbox-php for API
1.0, plus patch to skip SSL certificate, plus OAuth negociation at repository initiation.
[conf.sql] Fix conf.sql for templates children
[downloader.http] Move upload>subMenu as a downloader.http override, thus no submenu if this
plugin is not active.
[editor.audio] Wrong tooltip for Volume Button
[access.mysql] Add DEFAULT_RIGHTS option for Mysql driver
[editor.diaporama] Handle "array" config case during serial/deserialization (only applicable in
editor.diaporama until now, was breaking its configuration)
[editor.jumploader] Jumploader old doc was not correctly reported
[log.sql] Forgotten DIBI Require


[Core Auth]
ALLOW_CROSSUSER_SHARING : Do not compare to === true
"guest" user handling when ALLOW_GUEST_BROWSING is not active. Better check for delegate
repository creation, check for errors before creating anything. New method
AuthServide::isReservedUserId() for a future modularization of the "guest" concept.

[Misc]
Fix background action when users are not enabled.
Fix metastore & meta plugin when no user enabled!
Rename default text file and update the content
Fix backgroundPanel style
Ability to transmit directly a javascript instruction to the backgroundManager


-------------------------------------------------------------
AjaXplorer 4.0 Release Note

This is a major version release. Check ajaxplorer.info for complete description.
Below are described the changes introduced since v3.3.5

[GUI]

Fix scrolling overlay in FilesList
DisableNavigation when search input text is focused
Correctly resolve icon source in Search Engine
Remove google API alert, as it’s now commercial
Avoid full gui blocking if referencing a wrong message ID for action text
Clean destroyElement() if method exists
Fire events before/after rows initialization and rows clearing
Various hacks : go through modifiers even is column is hidden, passing a fourth argument in that case. ChooseOther now implements a full mechanism to remember mimes to editors for the user. Clean destroy of SliderInput. SoundManager : display currently playing with specific class.
Fix InfoPanel currentPreviewElement destruction
Scroll overflowX in gridMode
Fix CodeEditor resize
Fix various issues with drag’n'drop, particularly polluting IE
Fix Share Users autocompleter not appearing in IE (insert the box in the body for good positionning)
Detect Modernizr.multiplebgs and disable overlay icons if not present, otherwise it makes an empty icon.

[CORE]

New method getUniqueActivePluginForType() and application in the metastore users
Silently test library searching, to avoid open_basedir errors, will return false anyway
Silently catch meta sources error
Implementation of editor.soundmanager
Filter the registry actions before outputting
ALLOW_GUEST_BROWSING broken
AJXP_FORCE_LOGPATH optional constant for easing RPM packaging
Fix : do not load extensions contribution of inactive plugins.
Various fixes for widget case (when SERVER_PREFIX_URI is set)
Create a separate template for the tests results…
Skip brute force login with a log when server is in Debug mode
AUTH_DRIVER drupal sample included
Ignore Disabled access plugins, either in the new driver list, or in the current repository list
silently set_time_limit

[DOCUMENTATION]

Display plugin doc if presentAdd a note to explain how to force the flash uploader usage
Re-organize Settings data
Massive PhpDocs comments
Massive Plugin_doc files & screenshots
Remove old README from webdav plugin, now the role of plugin_doc.html

[PLUGINS]

Editor.SoundManager : add an active condition to limit to browsers that support canvas, otherwise it’s buggy.
Gui.ios : Fix # in IOS URL parsing
access.ajxp_conf : Fix filenames again
auth.basic_http : Daniel Berteaud patch for configuring logout URL for basic http.
Index.lucene : Auto-remove false indexes at search time, does not seem to impact the timing
access.ftp : Fix « permission fixing » losing the folder nature, and remove the fix from ftp wrapper.