2.3.0 Changelog

New Features

  • [71761] Allow combined files to be disabled
  • [70697] CRM Security with two levels: viewable and writeable.
  • [70422] added silverstripe version number to meta generator tag
  • [70142] add permission control for AddForm and EditForm
  • [69687] added Smiliey support to BBCode / forum. Now BBCode supports :) :P :D :( 8-) and :). Yays for icons. Should move from BBCodeParser to TextParser so its available in tinymce but this will do for the forum
  • [66163] #1531 - Allow moving files in root assets file (hamish)
  • [65904] #1614: Allow use of admin/addpage?ParentID=(ID)&PageType=(Class) url to quick-add pages
  • [65690] #594: Added javascript-on-demand support
  • [65689] #594: Added javascript-on-demand support
  • [65688] #594: Added javascript-on-demand support
  • [65555] #2767 wakeless: Allow popuplation of non-DataObject tables with YamlFixture
  • [65351] merged back patch for image editor. Currently completely broken on trunk this patch does nothing to fix it sadly. I think its a prototype thing
  • [65095] Added CMSMenu and CMSMenuItem and adjusted existing LeftAndMain subclasses to use new notation.See #2872 (thanks to hamish for the patch!)
  • [64881] Making DataObject attributes translatable through i18n class, e.g. $db and all relation statics. Use DataObject->fieldLabels() to access translated attributes.
  • [64877] Added JavaScript unit tests with jQuery QUnit. Can be viewed similiarly to PHPUnit tests through dev/jstests URL. Uses an <iframe> to include all tests.
  • [64758] Update to TinyMCE 3.2 - CMS changes
  • [64492] Support for i18n entity namespaces in templates
  • [64480] Added support for 'sake dev/tests/all --showslow' to list slow tests
  • [64473] Added ?debug_memory=1 flag
  • [64461] Show max memory usage on dev/tests/all
  • [64444] Flush template cache before running tests
  • [64417] Added SiteTreeMaintenanceTask
  • [64345] #2956 seaeagle1: Added If-Modified-Since support to HTTP::add_cache_headers() [16:00:18]
  • [64308] Allowing for field-level permissions in !DataObject::$api_access - respecting those permissions for reading and writing in RestfulServer (#2918)
  • [64307] Allowing for field-level permissions in !DataObject::$api_access - respecting those permissions for reading and writing in RestfulServer (#2918)
  • [64231] #2951 simon_w: Use 301 redirect on Director::forceWWW()
  • [64157] Added FormScaffolder for more flexible scaffolding of FieldSets from DataObject metadata
  • [64103] #2601 - More template handlers
  • [63679] Added HTTP method override support to HTTPRequest and Form (through $_POST_method? or $_SERVERX-HTTP-Method-Override?), incl. unit tests
  • [63659] Frontend CRUD scaffolding with RecordController and CollectionController (not fully functional yet, needs correct Link() methods)
  • [63637] Added coloured output to dev/tests/all
  • [63623] Added DataObject->getFormFields() - uses DataObject->scaffoldFormFields() by default. Added DataObjectDecorator->updateFormFields() for easy customization
  • [63462] Added Email::obfuscate()
  • [62477] Including Firebug Lite when requested by ?debug_firebug=1 for easy debugging in IE/Opera/Safari- otherwise including fake-objects with FirebugX by default to enable usage of console.* commands without javascript errors
  • [62472] Added !GoogleSitemap::enable()
  • [62467] Formatting MySQL error messages with newlines through new SQLFormatter class (used in !MySQLDatabase)
  • [62458] Allow Use of ?fields=ID,Name,OtherField,RelName get variable on RESTful server queries, to restrict the fields and relations returned int the data set
  • [62396] Added BulkLoader_Result for better inspection of import results, replacing the simple numeric count result format.
  • [62333] TableListField?'s TRs can now have class=loading added to them to show a loading icon. (Used by ModelAdmin)
  • [62286] Allow customisation of HTTPResponse status text, as well as status code
  • [62284] Files & Images tree now shows filename rather than meta-data title, to make it easier to find the file you're looking for
  • [62211] #1403 - addFieldToTab(), push(), insertBefore(), etc will allow duplicates - the old field is replaced with the new.
  • [61824] #2594 - Allow decoration of getCMSActions() (simon_w)
  • [61605] relate groups with column selections in SearchForm of CRM Admin
  • [61444] xml2array now works with recursion so it will actually work with most xml files. Unit tests to comei
  • [60396] Added configurable Requirements::$write_js_to_body for performance improvements (turned off by default)
  • [60368] Improved debugging view on CLI interface, by having a separate DebugView subclass that takes care of error output for this situation.
  • [60220] Merged in !CompositeDBField

API Change

  • [70697] add Group::canView() so that give group object a different level of security control.
  • [70150] we move the filedata generation part of export() function to a new function generateExportFileData, so that, a child class could reuse the function when overload export function
  • [70057] Decimal->requireField now includes 'not null' constraint, as Sapphire doesn't expect the value to be null. MySQL switches null values to 0.00 on build.
  • [69730] Removed access to broken image editor feature
  • [69688] Enforcing usage of a Validator instance in Forms if its not explicitly passed to the Form constructor. By default a new RequiredField instance is used without any fields marked as required. This was necessary because some FormField implementations rely on their validate() method, sometimes as a wrongly placed processing hook, but mostly for security reasons. One example are file extension checks in FileField subclasses.
  • [69363] Added ModelAdmin_!CollectionController::columsnAvailable() and ModelAdmin_!CollectionController::columnsSelectedByDefault() that can be overridden to customise the fields available in the column selection control.
  • [69360] Add keyField and titleField arguments to SQLMap
  • [68484] ContentNegotiator? is now disabled by default, unless you include the xml header in your template. (merged from r68482)
  • [67426] Added SSViewer::set_source_file_comments() to allow disabling of comments in SSViewer output
  • [67380] Deprecated Email->setFormat()
  • [66894] Move some of the installer into the sapphire directory.
  • [66394]
  • [66392] if a DataObject has getCMSActions, its model admin should be able to add them.
  • [66268] Deprecated Controller::PastVisitor(), it generates a lot of unused cookies
  • [66266] Improve encapsulation of cookies in Director::test()
  • [66264] Revamped CMSMenu system to not instantiate any objects, so that _config.php doesn't get fskd
  • [66175] Moving GoogleSitemap functionality into new "googlesitemaps" module
  • [65744] make CreateForm be able to disable
  • [65742] introduce !SearchFilter::getDbFormattedValue() and GreateThanFilter will used this method to make the qurey so that it can apply to a field that input format is different that its db format, such as CalendarDateField.
  • [65669] even when no results found, the HTTPResponse should return a "200" HTTPResponse rather than "404" HTTPResponse, otherwise, the right panel didn't refresh the result table, and the error message shows up.
  • [65581] Deprecated CompositeField->insertBeforeRecursive(), use CompositeField->insertBefore()
  • [65554] tidy up NewsletterAdmin.
  • [65454] Deprecated DataObjectDecorator->augmentInit(), use LeftAndMainDecorator->init()
  • [65453] Deprecated DataObjectDecorator->alternateCanCreate(), use DataObjectDecorator->canCreate()
  • [65452] Removed Folder->userCan*() and File->userCan*()permissions and added more consistent behaviour with Folder->can*() and File->can*()
  • [65451] Don't include NULL returns in decorated methods called through Object->extend(), meaning empty method bodies in decorators won't confuse permission checks through $myObj->extend('canView') etc.
  • [65388] make !DataObject::getField() visible to the public
  • [65385] Removed manifest's dependency on database, by removing hastable information [17:47:04]
  • [65229] Use return value of alternateCanPublish()
  • [65150] Changed SiteTree->EditorsGroup has_one relationship to SiteTree->EditorGroups has_many relationship (see #2847)
  • [65095] Removed !LeftAndMain::add_menu_item(), !LeftAndMain::remove_menu_item(), !LeftAndMain::replace_menu_item(), !LeftAndMain::clear_menu()
  • [65068] Removed DataObjectSet->consolidate(), use DataObjectSet->toNestedArray()
  • [65066] Removed DataObjectSet->consolidateString()
  • [65065] Renamed DataObjectDecorator->extraDBFields() to extraStatics()
  • [65060] Moved !DataObject::get_by_url() to !SiteTree::get_by_url()
  • [65059] Marked DataObject->filledOut() deprecated
  • [64958] #2922: !RequestHandler:: now inherit
  • [64954] #2857 - Renamed RequestHandlingData to RequestHandler
  • [64953] #2857 - Renamed RequestHandlingData to RequestHandler
  • [64951] #2698 ajshort: URL handler only passes control to subclasses of RequestHandlingData
  • [64807] Added LastChange() method to BulkLoader_Result
  • [64806] Updated CsvBulkLoader to have hasHeaderRow = true by default, even when a columnMap is specified
  • [64805] add updateFieldLabels() to DataObjectDecorator, so as that a dataobject could update fieldLables by its decorator.
  • [64792] A Text db field, by default, should be rendered as a TextareaField in its scaffoldForm
  • [64528] delete GenericDataAdmin, RelatedDataEditor, DropdownField_WithAdd and their related code (js, css, etc) from cms, sapphire, "GenericDataAdmin" name space has also been deleted from lang files. They are all added in the new module "genericdataadmin"
  • [64504] Changed HTMLVarchar->scaffoldFormField() to use HtmlEditorField instead of HtmlOneLineField, which does not work.
  • [64428] Moved CheckboxFieldDisabled class to more common CheckboxField_Disabled notation
  • [64426] Removed NoScriptField, please use LiteralField
  • [64425] Removed EncryptField, use PasswordField
  • [64421] Moved setAllowHTML() to DataLessField
  • [64420] Removed NamedLabelField, use LabelField
  • [64416] Removed SiteTree->makelinksunique() and SiteTree->makelinksuniquequick() - use new SiteTreeMaintenanceTask
  • [64407] Removed NoScriptFormAction, use unobtrusive scripting
  • [64402] Removed deprecated File::loadallcontent(), use Upload class
  • [64401] Removed Filesystem::moverootfilesto()
  • [64399] Removed deprecated ComplexRequiredFields, use RequiredFields and custom javascript instead
  • [64398] Removed SecurityAdmin->listmembers()
  • [64394] Removed deprecated Datetime class, use SSDatetime instead (was conflicting with PHP 5.2 integrated classes)
  • [64384] Removed Email_Template, use Email
  • [64383] Removed ViewableData->setVal(), use ViewableData->setValue()
  • [64381] Removed Debug::mailBuffer()
  • [64380] Removed Director::isLiveMode(), use Director::isLive()
  • [64379] Removed FormField->setExtraClass(), use FormField->addExtraClass()
  • [64378] Removed DataObjectSet->append(), use DataObjectSet->push() or DataObjectSet->merge()
  • [64377] Removed Controller->LinkTo(), use Controller->join_links()
  • [64376] Removed Image->transferlegacycontent()
  • [64375] Removed DataObject->getLastWriteFields(), use DataObject->getChangedFields()
  • [64374] Removed Convert::raw2attr(), use Convert::raw2att()
  • [64373] Removed deprecated RestfulService->connect(), use RestfulService->request()
  • [64372] Removed deprecated CustomValidator class
  • [64371] Removed deprecated EditForm classa
  • [64351] #551: Move code from CMSMain to SiteTree
  • [64350] #551: Move code from CMSMain to SiteTree
  • [64332] Removed deprecated methods related to CanCMS and !CanCMSAdmin which are now removed from the Group class in favour of the Permission system
  • [64330] Removed deprecated method isAdmin() on Member - use Permission::check('ADMIN') instead
  • [64327] Removed references to CanCMS and !CanCMSAdmin in Group, including references to it in Member. See ticket #2959 for more details.
  • [64157] Added third optional parameter $object to DBField::create() to comply with ForeignKey and PrimaryKey constructors
  • [63997] Deprecated GhostPage
  • [63922] Added support for dot syntax to !FieldSet::fieldByName()
  • [63827] Added initial CMS tests to the system. These will execute tests on the data model provided by a user's project code
  • [63764] Deprecated Form->loadNonBlankDataFrom() - it was duplicating loadDataFrom() without allowing for the same options, and it was buggy in its definition of "blank" by doing non-typesafe checks with if($value) $field->setValue($value) which resulted in '0' strings not being loaded
  • [63759] Moved PostBackup class to module (see r63758)
  • [63637] Added SSCli class to help with outputting coloured text on the command line
  • [63579] Deprecated HTTP::sendFileToBrowser() in favour of more testable HTTPRequest::send_file()
  • [63563] Created CSVParser class and updated CSVBulkLoader to use it
  • [63468] Deprecated Form->resetData() - use Form->resetField()
  • [63465] Changed parameters for Debug::friendlyError()
  • [63337] Deprecated DataObject->listOfFields() - use custom code instead
  • [63310] Removed SiteTree->canView_page() - originally created under the false assumption that SiteTree->can('view_page') is still valid. Every canView() can be instance specific. Original patch by simon_w in r53183 and #2198
  • [63182] Deprecated URL parameter ?buildmanifest=1 (please use ?flush=1)
  • [63177] Removed Text->Att(), use Text->ATT_val() instead
  • [63176] Deprecated Varchar->Attr(), use Varchar->ATT_val() instead
  • [63077] Removed useless File->test() method
  • [62883] TableListField::sourceFilter() can be overloaded to change the querying logic.
  • [62847] Deprecated Member::isInGroup() - use Member::inGroup() instead
  • [62846] Deprecated Member::isInGroup() - use Member::inGroup() instead
  • [62843] Removed Debug::warning()
  • [62325] Moved DataReport and SQLReport into the ecommerce module, since this is the only place it is used, plus it's going to be deprecated soon anyway
  • [62324] Moved DataReport and SQLReport into the ecommerce module, since this is the only place it is used, plus it's going to be deprecated soon anyway
  • [62316] Deprecated LabelledLiteralField by adding a @deprecated note with alternate approaches, and added a PHP notice for people currently using it
  • [62309] Moved ProgressBar and support files to newsletter/trunk module, as this is the module where it's used
  • [61683] TableListField::ajax_refresh is deprecated. Removed all calls to it from the core, instead getting HTML fragments by visiting the field's URL.
  • [61632] BasicAuth? is now disabled by default on test sites
  • [61505] Allow definition of !DataObject::getCMSAddFormFields() to alter modeladmin step 1
  • [61485] Deprecated GroupedDropdownField, DropdownField should now be used instead
  • [60894] Added Validator::set_javascript_validation_handler() and ->setJavscriptValidatorHandler(), to choose a different way of dealing with javascript validation. Currently 'none' and 'prototype' are the only legal options, but 'jquery' would be an obvious thing to implement.
  • [60711] Template precedence changed. Page_results now takes precedence over HomePage. That is, all action templates of parent classes take precedence over the actionless templates.
  • [60665] TableListField? utility links no longer have target=_blank
  • [60405] Removed merged USZipCode field - should be custom code until we figure out proper localization
  • [60392] Renamed static Member::autologinhash() to static Member::member_from_autloginhash() to be more in line with naming convnetions, and not conflict with Member.AutoLoginHash in the database
  • [60376] Allow the definition of SS_ERROR_LOG in _ss_environment.php to set up Debug::log_errors_to().
  • [60368] Added Debug::log_errors_to(), to log errors to a file.

Bugfixes

  • [71923] In SSViewer::parseTemplateContent($content, $template=""), when the $content is a xml template, we should not wrap anything around it, for web browser able to correct parse the xml
  • [71872] #3491 - Fix nonexistant plugin stopping tinymce from working in safari.
  • [71846] #3481 - Check if classes exist before trying to instantiate a singleton on database build, to work around stale manifest errors
  • [71841] #2723 - Allow more than more subclass of RelationComplexTableField on a page at a time.
  • [71797] removed doubled up pipes and border on switch view links in footer.
  • [71764] Fix wrong conditional
  • [71709] BUGFIX Fixed redirection to external URLs through Security/login with BackURL parameter (merged from trunk
  • [71642] Disable DataObject validation temporarily while importing yaml fixtures
  • [71568] CRM "select all" and "select none" doesn't work when the crm manages multiple models.
  • [71499] i18n::include_by_locale() should skip check the web root level and ../webroot level for language file, this is not only "not necessary" but also "must" because some server configuration prevent from any file access above the site root folder.
  • [71436] Error adding custom header in Email because of non-existant array key. Thanks ed! Ticket #3485
  • [71348] Removed unused ComplexTableField->unpagedSourceItems - was already commented out in r70956, and doesn't seem to be used across parent- or subclasses. Added ticket #3484 to re-enable popup pagination, which was broken and disabled due to the deprecation of $unpagedSourceItems (see r53830)
  • [71250] fixed site page restoration
  • [71177] cms ui, fixed loading spinner style
  • [71024] #3429: Fixed CMS change detection
  • [71023] #3443: Fixed refreshing of relation CTFs after editing data
  • [71018] #3442: Fix pagination in HasManyComplexTable, HasOneComplexTableField, ManyManyComplexTable
  • [70997] #3441 funkygibbon: Stop ThumbnailStripField breaking on orphaned images
  • [70994] CMS UI site content > search > add criteria select element now returns back to prompt & tweaked layout
  • [70935] adjust positioning of SilverStripeNavigator published/draft message
  • [70895] Ensure string "0" is not considered a NULL value when CsvBulkLoader imports values from a CSV file
  • [70893] reinstating silverstripe navigator and restyling to match cms ui
  • [70891] removed extra colon appearing in SilverStripeNavigator
  • [70848] Removed reference to Requirements::javascript() for including jquery as it's already included, and causes JS errors in MemberLoginForm
  • [70847] Fixed correct path to jquery.js in MemberLoginForm
  • [70832] $hide_ancestor hides Page as well when set from multiple subclasses of Page. Thanks dio5!
  • [70784] #3415 ajshort: Requesting root page via ajax now preserves isAjax value.
  • [70781] #3430 page versions don't appear automatically in Safari - versions DOM panel was floated behind the edit form
  • [70775] Fixed "cancel" button for inline "create folder" functionality (was not stopping event in IE7)
  • [70773] Disabled faulty usage of setStyle() with object literals instead of strings in SWFUpload
  • [70766] Removed hack that hid the Avatar field for the forum
  • [70750] Fix incorrect URL when adding a new Member via the MemberTableField
  • [70747]
  • [70743] 1. TableListField exportfunality random bug. 2. make Email_!BounceRecord::canCreate() return false; so that it can not be manully create from CRM, instead, it should create through email buncing system.
  • [70741]
  • [70729] Add EditForm to list of allowed actions
  • [70725]
  • [70724] Fixed loader_frame.html scrollbar madness. Removed hacked CSS and tidied up popup to work in IE6/7 and Firefox consistently
  • [70698] Group::AllChildrenIncludingDeleted() should filter on canEdit() rather than a can() call
  • [70695] $_POST[$this->Name] in !TableField::SubmittedFieldSet are not always set
  • [70691] show flash icon and box if flash file exists. MINOR: created a default editor.css file which has base css styles for the CMS.
  • [70683] cms ui added colon to image upload prompt (inline with other step)
  • [70682] cms ui remove errant dashed borders in IE6
  • [70681] cms ui text size in righthand image panel
  • [70680] Fixed behaviour.reapply() call in TableListField->refresh() javascript to applyToParent (the actual DOM container). Otherwise methods of the TableListField prototypes aren't properly attached to the DOM nodes, which causes problems like #3377
  • [70671] Fixed newsletter send button alignment
  • [70616] stopped double scrollbars on popups in IE7 (IE6 still broken)
  • [70613] Fixed styling for "Delete selected files" in the left-hand tree actions for AssetAdmin. Thanks ajshort!
  • [70609] Defined jsValidation() and validate() so that inherited validation from DateField doesn't break PopupDateTimeField - this still needs fixing, and PopupDateTimeField shouldn't inherit from CalendarDateField
  • [70604] autocomplete style change.
  • [70603] cms ui fix files & images upload images styling
  • [70602] cms ui fix files & images table styling
  • [70601] cms ui removed backgound from delete button on files & images
  • [70583] cms ui fixing up treetool
  • [70573] cms ui removed extra padding from bottom of tools
  • [70572] cms ui fix styling of tools on files & images section
  • [70567] cms ui fix styling of tools on files & images section
  • [70566] reverted previous tree tool change
  • [70565] when the total number of rows is 0 the pagination says 1 to 0 of 0
  • [70563] cms ui fix styling of tools on files & images section
  • [70561] cms ui padding on tree
  • [70545] Hidden field needs to exist for DateField_Disabled in order for validation to pass correctly
  • [70541] cms ui padding on tree in right pane (eg. image selector)
  • [70508] cms ui tidying up tree tools
  • [70507] cms ui tidying up tree tools
  • [70497] merged patch from ajshort. Fixed getURL() so it preserved the extension
  • [70496] cms ui tidying up padding of tree tools elements
  • [70495] cms ui fix specifivity of alignment of radio buttons and labels in right pane
  • [70486] cms ui fix alignment of radio buttons and labels in right pane
  • [70481] If form.elements.ID is not defined, don't cause an error in the CMS under certain circumstances
  • [70479] cms ui site tree tools style fix
  • [70474] Fixed float issue caused by change in r70303
  • [70445] fixed size of popup on 1024x768 resolutions
  • [70441] added scroll bars
  • [70404] site tree form element alignment
  • [70397] stopped swfupload div appearing behind cms ui in firefox 2 on windows
  • [70396] cms ui sitetree tools padding
  • [70395] IE6 cms login remember me alignment
  • [70393] cms ui sitetree padding across cms sections
  • [70392] centered GreyBox popup in the CMS
  • [70390] cms ui form site tree input alignments
  • [70389] cms ui form site tree input alignments
  • [70388] cms ui fixed width of tools at top of site tree
  • [70377] fixed site tree padding issue
  • [70376] URL input validation for RestfulServer
  • [70356] fixed positioning on site tree actions on left tree for Security and comment tags
  • [70172] due to changeset 65289 by phalkunz, the ImportForm() and import() functions need to move from CRMAdmin class to CRMAdmin_CollectionController class, fix relative bugs by the move.
  • [70160] Add workaround for PHP bug #46753
  • [70135] Fixed spacing at the top of right forms in the CMS caused by the <legend> element. Fixed by hiding it via CSS instead of removing it completely
  • [70130] Fixed issue of not enough space in the AssetAdmin "Upload" tab for multiple file uploading, mostly affecting IE6/7
  • [70127] Changed the FieldHolder method to use explicit functionality instead of statically calling !FormField::FieldHolder()
  • [70117] Fixed clearing issue in IE7 for the left hand tree
  • [70077] Removed ANSI compatible SQL that shouldn't be in branches/2.3 - this feature is available in trunk
  • [70063] Removed ID for back links table which is ambiguous, unncessary and caused the CSV export to break
  • [70052] Deleted setting of $content variable that broke HTTP::findByTagAndAttribute()
  • [70049] Strip out any "~" characters that may stop the staging link from working in IE6/IE7
  • [70046] Check for form object before calling observe() on the element. The CheckBoxRange constructor allows for a null form, so a check for a form object is essential.
  • [70026] Disallow execution from DailyTask and HourlyTask by website visitors.
  • [69988] <% end_if %> was breaking the template where it should've been a <% end_control %>. This fixes the export link in #3333
  • [69986] Added page-limiting back to CMS tree querying
  • [69975] Fixed FileField->getFolderName() - it was not returning $this->folderName, instead it was returning an undefined variable in error
  • [69973] error when creating a form
  • [69951] More solid string-parsing through regular expressions in SQLQuery->filtersOnID() and SQLQuery->filtersOnFK(), incl. unit tests
  • [69943] #3329: Improved speed of folder creation in files + images
  • [69931] Fixed flash HTML that gets inserted into the content so it's cross browser compatible with browsers that don't support the <object> tag (<embed> is added inside)
  • [69930] Checkbox "Remeber me next time?" now works because of a missing method call logIn() on Member
  • [69927] #3024 - Stopped style dropdowns from getting stuck by making them regular dropdowns. Not as pretty but more stable.
  • [69921] Fixed minor error on dev/buildcache
  • [69910] Allowing to pass $context into Hierarchy->markPartialTree() and Hierarchy->markChildren()
  • [69909] Making sure a valid DataObjectSet is returned from Hierarchy->stageChildren()
  • [69899] Explicitly setting "lang" as a GET var when getting a page within the CMS (if the language chooser DOM object is available, hence translation mode is enabled). Used in CMSMain->init() to set the "current language". (merged from branches/translatable in r64523, thanks wakeless!)
  • [69894] Using baseDataClass() in Translatable::get_existing_content_languages()
  • [69893] Added extension point for augmentAllChildrenIncludingDeleted(), augmentNumChildrenCountQuery(), augmentStageChildren() in Hierarchy (merged from branches/translatable in r64523, thanks wakeless!)
  • [69891] Using SQL DISTINCT in get_existing_content_languages()
  • [69879] Fixed label positioning in CompositeFields for original language fields in translation mode (was shifted left before)
  • [69878] Fixed $add_action behaviour for SiteTree classes (through i18n_singular_name() method). Deprecated in favour of "<myclassname>.TITLE" entity to enable localized page titles. Limited add_action behaviour to SiteTree (was implemented on DataObject before)
  • [69872] Fixed status checking in SiteTree->getIsDeletedFromStage()/getIsModifiedOnStage()/getIsAddedToStage() for new pages with non-numeric IDs
  • [69870] Fixed use of undefined constant error, and undefined variable error in TableField stopping CMS user from adding records to a TableField
  • [69832] #3235: Fixed linking of images and other HTML tags
  • [69830] #3219: dev/buildcache showing up in static links
  • [69828] Fixed styling for caption checkbox field on the right hand image panel in CMSMain
  • [69803] If TreeDropdownField source object is "Folder", don't show "File" tree items unless the marking filter function is explicitly set. This fixes the bug where files were appearing for selecting a folder in the thumbnailstrip field in CMS
  • [69752] somtimes +/- icons hidden. ticket #893
  • [69728] #3254 - Fixed fatal errors when creating subclass of member
  • [69720] #3199: No longer warned about saving changes if you have actually pressed save.
  • [69718] #2550 - Fixed bug with draggability of newly created nodes.
  • [69715] #2342: Database names with hyphens and other special characters can now be used.
  • [69700] #3224 ajshort: Get HTTP::setGetVar() working with variables that contain array indexes
  • [69697] #3165 nicolaas: Fixed Director::history() in some cases.
  • [69696] #3248: Fixed TreeDropdownField when using non-ID key field
  • [69695] #3188: Fixed default HeaderField name to be non-conflicting with other fields, for backward compat
  • [69694] #3097: Removed buggy template feature
  • [69693] #3249: Allow altering of encryption algorithm
  • [69690] #3081 simon_w: Fixed pagination on spam comments
  • [69689] Don't include Validator.js if Validator->javascriptValidationHandler is set to 'none' (in Validator::construct()).
  • [69681] Fixed HTML insertion through TinyMCE in Safari - TextArea fallback for lacking Codepress-support wasn't working. Known bug in Codepress JS Highlighter, see http://sourceforge.net/tracker/index.php?func=detail&aid=1913725&group_id=186981&atid=919470
  • [69657] Fixed js error due to inlined inclusion of CMSMain_upload.js which was conflicting with inline initialization. Disabled initializiation as the flash uploader was pulled out a while ago anyway (see #3251)
  • [69504] Fixed SiteTreeHandlers.loadTree_url url concatenation
  • [69442] Fixed permissions in CMSMain->revert() - only needs edit permissions, not publish permissions
  • [69378] CountryDropdownField? now allows for title to be optional, which uses the name of the field if not set. This makes it consistent with DropdownField
  • [69377] Added check before foreach() to fix potential HMCTF bugs
  • [69360] Get !DrodpownField::$emptyString working when used with a SQLMap source
  • [69321] Added <td class="action"> to AssetTableField.ss to comply with template semantics of parent classes (necessary to detect javascript actions)
  • [69222] Strip potential whitespace from the beginning and end of string before limiting word count in Text->LimitWordCount(), fixing potential interference with truncation process
  • [69220] Fixed Text->LimitWordCount() not returning the correct number of words in the truncated text.
  • [69204] Making Password formfield in Member->getCMSFields() translatable
  • [69203] Making "Main" tab in FormScaffolder translatable
  • [69065] Fixed notice-level error in no-get-var URL processing when there is no querystring.
  • [68999] Make sure the website URL that the commenter posts has a correct "http://" or "http://" bit at the start of the string
  • [68940] Fixed bug in SQLQuery::unlimitedRowCount() when used with grouped queries, that should fix a lot of pagination situations.
  • [68935] Fixed PHP notice potential error in MemberTableField->addtogroup()
  • [68921] Turned english text into translatable entity for PageCommentInterface link for RSS feed of all comments for all pages
  • [68890] "console not defined" error in IE in en_US.js, check typeof(console) is not undefined before calling console.error()
  • [68881] remove Debug::message
  • [68875] Fix uglyness when title is longer than the tree dropdown field
  • [68858] Added closing tags to relation XML in XMLDataFormatter. Was relying on ContentNegotiator fixing self-closing tags automatically, but this form of content parsing is disabled for xml content by default now (see r68484)
  • [68834] Make sure date is a string before trying to use strtotime
  • [68817] Fixed sprintf detection bug in SiteTree->getClassDropdown()
  • [68810] Making only formfields readonly (not formactions) when comparing versions and showing historical versions within CMSMain
  • [68809] Check hasChanged method exists before calling it
  • [68764] Fixed translation of CommentAdmin_SiteTree.ss
  • [68762] Fixed label spacing in Date->TimeDiff()
  • [68757] Fixed additional tabs for image popus in AssetTableField. They we're not being generated in non-english interfaces due to the translated title being used as the tab identifier
  • [68754] Limiting readonly transformation of form in CMSMain->EditForm() to fields only (excluding actions). FormAction readonly transformations were fixed a while ago, which meant that they were actually enforced now, causing unavailable cms actions in certain scenarios (e.g. with a page deleted from live, which should make the fields readonly, but leave buttons functional)
  • [68752] Fixed TranslatableTest to instanciate Page instead of SiteTree fixtures - pages in the database should never have ClassName=SiteTree. This was causing failing tests due to the changes in SiteTree->getClassDropdown()
  • [68751] Including all translated language tables by default in i18n::_t() instead of selectively including modules based on filename. This caused bugs where entities were located in language tables in a different module than their filepath would suggest. Example: Page.SINGULARNAME is stored in sapphire/lang/en_US.php, while Page.php is stored in mysite/Page.php
  • [68746] Don't overwrite existing module arrays in i18nTextcollector - fixing bug with entities for "foreign modules" being reset during parsing
  • [68702] Updated CMS to support HtmlEditorField changes in r68701
  • [68662] #3166 jam13: Fixed caching in RestfulService
  • [68628] Fixed HasManyComplexTableField/ManyManyComplexTableField issue with source items which broke from changes in r66080. Thanks hamish!
  • [68627] Fixed javascript error in the CMS
  • [68626] Fixed javascript error in the CMS
  • [68603] Fixed new searchform changes for Live/Stage
  • [68515] Making sure phpinstaller works on subdomains (see #3167)
  • [68463] Fixed PHP notice in RebuildStaticCacheTask
  • [68331] Fixed ModelAdmin import success message (too few arguments for sprintf())
  • [68194] Allowing FormAction instances to be readonly by setting disabled="disabled". Adding CSS class "disabled".
  • [68177] Moved creation of "help" menu entry from cms/_config.php to !LeftAndMain::init() to get localized titles (locale isn't set at _config.php level)
  • [68176] Fixed i18n display of menu titles rendered by CMSMenu in LeftAndMain->MainMenu()
  • [68170] Escape table name in versioned to allow creation of page type classes with the same names as SQL reserved words
  • [68159] Changing i18n entity format in CMSMenu->provideI18nEntities() to have actual class as namespace (related: r66264)
  • [68155] Added stub PDODatabase->renameField() implementation to avoid errors when batch-instanciating singletons
  • [68130] Supporting URLs with folder-structure in "sake -start <myprocessname> <myurl>"
  • [68039] Improved DataObjectSet->PaginationSummary() to show full context (instead of halved) when on first or last page
  • [68027] Don't show template comments in RSSFeed, or it'll break the XML document
  • [68026] Fixed undefined variable $matches in SSViewer::parseTemplateContent()
  • [68024] SSViewer::set_source_file_comments(false) wasn't working because of lack of checking if enabled.
  • [67777] Added check ot i18n::include_by_class() to prevent repeated calls.
  • [67681] Add a unique identifier to the "direction" method for Email::obfuscate() to avoid duplicate custom CSS being included in the page header
  • [67678] Method not found error. Requirements::customCSS() should be calling self::backend()->customCSS() not custom()
  • [67609] #3182 - Fix URL fixing on machines where url is case insensitive (hamish)
  • [67605] #3204 - Broken link tracking is broken (ajshort)
  • [67587] #3174 - Unable to drop widgets into widget areas in CMS (marcink)
  • [67584] #3218 - Spelling mistake in RestfulService (hamish)
  • [67582] Fixed a check for CSV field formatting.
  • [67580] Fixed an aliasing problem when saving popup items, and a bug with when associating a new record with the parent ID associated with the field.
  • [67530] SSDatetime can handle being given a NZ date in dd/mm/yyyy format
  • [67529] Only setting LockedOutUntil to NULL in Member->logIn() if the column is actually present in the database. Otherwise this setting will case an UPDATE Member SQL query to fail on the first /dev/build call on a 2.2->2.3 upgrade if not in dev-mode (=requiring login) (see #3171)
  • [67526] Added $CurrentLink to templates of AssetTableField and MemberTableField in order to support auto-refreshing after popup-close (see #2925)
  • [67520] Fixed i18n::get_owner_module() to detect template paths in themes (array notation) correctly (see #3022)
  • [67519] Added GoogleSitemap.ss from sapphire
  • [67506] Avoid ugly border in CMS forms by adding "border: none" in CSS to cms/css/layout.css
  • [67503] disabling template comments for xml output like sitemap.xml
  • [67455] Fixed incorrect parameter variable name in Mailer->sendPlain()
  • [67417] Added <legend> element immediately after <fieldset> for SearchForm and Form templates. This is required to validate these templates as W3C compliant
  • [67401] Moving Requirements::combine_files() calls from cms/_config.php to LeftAndMain->init() to avoid side-effects in non-CMS contexts. Examples:
  • [67363] $allowHTML argument was not passed to !DatalessField::construct
  • [67304] Since ModelAsController->handleRequest() expects a URLSegment, we make the ErrorPage Link() return a relative URLSegment in ErrorPage->publish()
  • [67299] Changed Director::test($this->URLSegment) to Director::test($this->Link()) in ErrorPage->publish() to be more robust
  • [67290] Added parent::setUp() and parent::tearDown() calls to various tests, in preparation for push/pop a mock controller the controller-stack
  • [67271] dev/build should function even when new classes are referenced in _config.php
  • [67268] Filter on the baseclassid in Hierachy, not the class id, in case the class doesnt have a table (aoneil)
  • [67221] Save default locale for new members, so the profile form doesn't show first available locale in dropdown because its defaults are overwritten by Member->Locale = NULL (see #3159)
  • [67201] Declared behaviour.js variables as local for better recursive functionality
  • [67199] Fixed incorrect permission checking when the current member isn't being used
  • [67162] Scrollbars didn't appear properly in CMS without resizing the window manually, so used jQuery to properly detect when document is ready before attempting resize. Ticket #3089
  • [67150] Checking for "$this instanceof VirtualPage" instead of "$this->class == 'VirtualPage' to support subclassing in VirtualPage->onBeforeWrite()
  • [67147] Fix requirements not being restored after an email is sent
  • [67140] Checking for existence of $this->record in VirtualPage_Controller->init()
  • [67137] Fix publishing of error pages
  • [67083] Fixed StaticExporter output format
  • [67078] Put the order of save and publish buttons back to normal (so save and publish are next to eachother)
  • [67045] Fixed Enum::scaffoldSearchForm() to always include an (All) option
  • [67035] Fixed error in javascript (because of commented out code) that broke IE6/7 in the CMS
  • [66946] Fixing tests
  • [66940] Fixed warning on AssetAdmin (merged from trunk)
  • [66922] #3100: Graceful degradation for codepress in safari
  • [66918] #3115 ajshort: Fixed backslashes in temp folder location in manifest builder
  • [66894] Friendlier error when you have a site running on a PHP4 server, or a server without PHP.
  • [66891] Don't make blank dates show 1/1/1970
  • [66888] Better generation of PastMember cookie when you have stale login info
  • [66828] Fixed sortWidgets() function in WidgetAreaEditor not working because it was picking up comment nodes
  • [66820] Added extension to email address when accessing Security/passwordsent since the . (dots) are split into extensions when the URL is parsed
  • [66799] Fixed importer not working because of i18n_singular_name(), just use the class name of the model instead
  • [66793] Made use of Convert::raw2att() before returning the ModelName for Import spec fields
  • [66791] Fixed "Show specification..." link not working because ModelName had spaces in it
  • [66784] Only including ModelAdmin->ImportForm() if an actual importer was specified
  • [66740] Passing through $member param from SiteTree->canPublish() to SiteTree->canEdit()
  • [66723] fixed typo in filesystem
  • [66707] Fixed notice-level errors in PhoneNumberField
  • [66701] Add !LeftAndMain:$url_rule to minimise bugs in modules
  • [66698] Fixed sake bug when checking for an argument in bash script. Ticket #3112. Thanks simon_w.
  • [66638] Fixed flaw logic checking for $member variable, since it's always set the alternative for choosing Member::currentUser() would never work.
  • [66635] Fixed SiteTree->getCMSActions() so it returns a FieldSet, instead of a DataObjectSet. This makes it consistent with DataObject->getCMSActions() as well as SiteTree->getCMSFields()
  • [66632] Fixed SiteTree->getCMSActions() not extending properly because it was passing an array to the extend() 2nd argument, which expected a FieldSet object
  • [66629] Fixed incorrect class name in user_error message for deprecated function HTTP::sendFileToBrowser()
  • [66608] ModelAdmin? clear search now preserves the result column selection
  • [66505] Consistenly returning cloned instances for all FormField classes when calling performReadonlyTransformation() or performDisabledTransformation(). Making sure that these instances are actually flagged as readyonly/disabled. Addd unit tests to dynamically instanciate most FormField classes to check for this behaviour. Originally, this bugfix was necessary to avoid changed FormField state when recursively calling replaceField() on FieldSet->dataFields() in Translatable->updateCMSFields()
  • [66431] Removed SearchForm->FormMethod() and used $this->setFormMethod() in SearchForm constructor instead which is a nicer solution instead of overloading a Form method
  • [66334] Hiding "change password" fields by default in admin/myprofile, they shouldn't validate the input by default. Replaced with a link to toggle those fields (#3106)
  • [66332] Include jquery_improvements.js whenever jquery.js is required, so jQuery.noConflict() is set. This is required to ensure $() behaves in the prototypey way (alias for document.getElementByID()) rather than jQuery style (document.getElementsBySelector())
  • [66331] Removed overloaded $() function which added support for multiple string arguments in behaviour.js - was conflicting with argument usage in jQuery when not in noConflict() mode. As far as i can tell, multiple string arguments in $() were never used anyway.
  • [66319] Removed dependency on ComplexTableField JS in LeftAndMain for "My Profile" popup
  • [66318] Check if $member variable isn't empty before looking for first name in MemberLoginForm
  • [66317] Fixed call to incorrect case of function name, Member::currentUser() should be used
  • [66313] Fixed ForeignKey->scaffoldFormField() usage of model class instead of relation class to generate dropdown list
  • [66309] Fixed far too small height and width of "Profile" popup in CMS, popupHeight and popupWidth should be defaultPopupHeight and defaultPopupWidth instead according to the ComplexTableField prototype
  • [66306] Fixed HasManyComplexTableField, and subclass fields HasOneComplexTableField and ManyManyComplexTableField saving bug because javascript wasn't being included properly
  • [66305] Fixed recursion bug with !FieldSet::fieldPosition
  • [66274] Improved reliability of LeftAndMain->CMSVersion() - not failing on empty $URL$ placeholder with subversion path to determine version numbers
  • [66269] Merged from trunk; fix !DataObject::hasDatabaseFields()
  • [66266] Fix test/cookie conflict in ErrorPage rendering
  • [66252] Immediately apply behaviours that are added after the Behaviour.apply() call, in Behaviour.register() calls as well as Class.applyTo() calls
  • [66251] Removed unnecessary and bug-causing Behaviour.apply() call.
  • [66250] Made Behaviour.apply calls more specific
  • [66229] Added flash button to tinymce_ssbuttons
  • [66196] #2714 - Cookie::set doesn't operate correctly with expiryDays 0 (wakeless)
  • [66195] #2694 - Mathspam question clear
  • [66194] Fixed draggable bug in AssetTableField - thanks for ajshort for the patch - ticket #3051
  • [66162] #118 - Fixed count of marked pages (hamish)
  • [66137] Fixed editable formfields not showing up in translation mode (#3083). Updated Translatable->updateCMSFields() by partially merging wakeless' patch from (r64523)
  • [66136] Disabled js code in CMSMain->switchlanguage() which was assuming wrong DOM structure (TODO: Replace with more robust selectors)
  • [66135] Fixed field labels for original readonly fields in translation mode
  • [66107] Fixed PHP variable initialization in SiteTree->getClassDropdown() which broke class dropdown in behaviour tab (regression from r66092)
  • [66091] $cache flag wasn't passend through from ViewableData_Customised->XML_val() to ViewableData->XML_val()
  • [66079] #3051 ajshort: Improved layout of assettablefield drag icon
  • [66070] Fixed HTTP->findByTagAndAttribute missing variable error causing HtmlEditorField to break since it used HTTP::getLinksIn()
  • [66067] #3065: Fixed restore page
  • [66066] #3012 jam13: Fixed tabstrip default tab selection when working with querystrings
  • [66065] Fixed security tabs for JSoD code
  • [66062] #3063: Allow old-school method of adding menu items to LeftAndMiain:
  • [66052] #3087 simon_w: Added !ResfulService::connect() back, for backward compatability
  • [66049] Fixed unescaped html display in DevelopmentAdmin (#3080)
  • [66044] Fixed <% require %> call in ModelAdmin_left.ss
  • [66043] Fix PHP notice where variable with array didn't exist in HTTP->findByTagAndAttribute()
  • [66029] use a undefined variable $member.
  • [66027] Fixed incorrect call to Permission::checkMember() - missing second argument, first argument should've been a Member object or Member ID
  • [66026] Fixed PHP notice level error in some circumstances in DataObject->buildDataObjectSet()
  • [65944] #3073: Fixed !LeftAndMain::deleteitems()
  • [65923] #3066: Fix ?isDev=1 option
  • [65900] #2868: Fix after-popup-close behaviour on security member table
  • [65899] #2820: Fixed use of buggy reflection in Object::uninherited()
  • [65896] #2706: Fixed JS error in multi-nested pages deletion
  • [65895] #2232: Prevent requirements from breaking ErrorPage publication
  • [65894] #1721: Fixed del/ins styling in page comparison
  • [65881] Don't let permission errors on assets/ folder completely prevent javascript from loading
  • [65865] Fixed tabstrip JS error in ReportAdmin
  • [65863] Ensure that menu items of the same priority show the first added item closes to the left
  • [65860] Fixed JS error in ReportAdmin
  • [65851] #3062: Fixed ondemand support for jQuery responses as well as prototype
  • [65850] Alow decoration of Member with has_many relationships
  • [65843] #3062: Fixed ondemand support for jQuery responses as well as prototype
  • [65842] #3061: Text.FirstSentence returns '.' instead of empty string on an empty field
  • [65827] Fixed flash uploader not searching for the correct files, due to changes in r65820
  • [65825] Tidied up messages in flash uploader right hand panel in CMS
  • [65769] Fixed deletion of RedirectorPage
  • [65763] Missing variable in some circumstances caused Requirements::include_in_response() to break
  • [65761] Missing variable in some circumstances caused Requirements::include_in_response() to break
  • [65711] Added support for CSS media types to CSS on demand
  • [65680] there is no horizontal scroll bar for Model Admin right panel if the results table is long.
  • [65671] temp fix for flash inserter.
  • [65616] Fixed searching on sapphire/trunk due to Form changes - FormAction was useless on SearchForm anyway
  • [65612] Removed offending $this->canEdit() which returned a boolean, not appropriate to be passed into Member::mapInCMSGroups()
  • [65583] Adjusted Translatable to api changes from r65581
  • [65554] a lot of methods in this class now passed $params as HTTPRequest object, rather than as a array if the function is called from Ajax or top-level of front-end, some method is called in both manner, ie. called from Ajax and called internally as well, so we need to check $params type and do further process. This is a partial fix of open source ticket #3035
  • [65539] Setting correct user locale in ImageField and FileIframeField - the controller is separate from the CMS context, so wasn't initialized with i18n (see #1727)
  • [65538] Using 'SiteTree' classname instead of 'Page' in UpgradeSiteTreePermissionSchemaTask to avoid clashes in schema when Page.php has its own tables
  • [65536] Making Metadata fields writeable in translation mode (see #2993)
  • [65518] Removed project-specific hack in DataObject->getManyManyComponentsQuery() as it was breaking Translatable saving
  • [65517] Fixed breadcrumb exploding in DebugView when base-URL is "/" - was confusing the str_replace() logic
  • [65515] Fixed Translatable::default_lang() call in CMSMain
  • [65512] Fixed SiteTreeMaintenanceTask from extending unkown class Task to extending Controller
  • [65510] #3015: Fixed close buttons on tinymce side panels
  • [65502] Fixed bug with // placement in CMSMenu Director rule generation
  • [65469] Better initial-site-setup boundary condition checking needed after the manifest builder update
  • [65462] Setting Director::set_site_mode('site') in !RootURLController in newly added init() method, which fixes Translatable::choose_site_lang(). The original bug was a wrong selected language in the <meta> tags through SiteTree->MetaTags()
  • [65456] Using uncached !DataObject::get_one() calls in ModelAsController to avoid stale data with subsequent Director::test() calls which alter the page relations inbetween
  • [65424] #2987 - IE8 support via IE7 compatability mode
  • [65394] Fixed broken dev/build compilation of manifest
  • [65361] Added SSViwer support for i18n namespaces in templates with <% _t('MyNamespace.MyEntity', ... %>, to work around magically added namespaces from the parsed template file. Those auto-namespaces were logically not working in includes, as the parsing context is always the including template. Legacy support for auto-namespaces is still present due to its high usage.
  • [65336] Making ModelAdmin labels in left panel translatable again (regression from moving them into one common panel)
  • [65335] Respecting $dontEscape in FormAction
  • [65293] Using empty title in TreeDropdownField->Field() if the related DataObject cannot be found
  • [65291] Reverted text replacement performance improvement in SQLQuery - it was replacing more ocurrences via str_replace() than the previous implementation based on arrays, which broke queries augmented by Translatable (originally committed in r60468 and r54044)
  • [65282] Fixed page comment javascript to suit new Form name
  • [65275] #2243: Fixed !ViewableData::Odd
  • [65271] #2630 - Removed notice-level error
  • [65269] #2954 - Fixed support for negative numbers in decimal fields
  • [65250] #2992: Fixed T_PAAMAYIM_NEKUDOTAYIM error in RequestHandler
  • [65242] fixed canPublish() so it actually got the member if none was passed and fixed notice with $results not existing
  • [65232] #2056: Removed all references to deprecated Member::isAdmin()
  • [65229] Allow DBField::construct() without a name
  • [65214] Remove LeftAndMain entry from CMSMenu (#3014). Thanks to hamish for the patch!
  • [65213] Only enforcing record-level permissions in LeftAndMain if passed ID is numeric to avoid breaking AssetAdmin with string-based IDs (regression from r65152). See #3017
  • [65212] Calling parent constructor in ComplexTableField_ItemRequest, was confusing RequestHandler
  • [65180] Add magic methods on ModelAdmin to $allowed_actions (regression from r64988)
  • [65174] MemberTableField? use of sourceFilter should be treated as a string, not an array as per the API of TableListField
  • [65152] Enforce permission checks in LeftAndMain and CMSMain through SiteTree->canView()/canEdit()/canAddChildren()/canPublish()/canDelete() (see #2701)
  • [65151] Fixed SiteTreeAccess.js DOM IDs to field changes made in r65150
  • [65150] Disallow SiteTree->canEdit() if SiteTree->canView() is not granted
  • [65148] Fixed js error in LeftAndMain_right.js when displaying readonly pages
  • [65141] TableField? delete row inconsistency with TableListField which caused table fields to not fade the row out
  • [65135] Fixed call to Member function that didn't exist
  • [65127] Fix potential PHP notice opening a ComplexTableField popup
  • [65123] Fixed bug with ID-less generation of YamlFixture entries that trigger $this->write() in setters
  • [65106] Setting menu titles for CMSMenu items in !LeftAndMain::init() to get translated values for the current user locale (see #2873)
  • [65104] Fixed menu titles entity references in CMSMain and AssetAdmin
  • [65094] Fixed SearchContextTest to comply to new scaffolded searchfield in Text DBFIeld
  • [65071] Reverted auto-detection of i18n statics like $db in DataObject through provideI18nEntities() - was getting too complicated with decorated properties. Overload DataObject->fieldLabels() or DataObjectDecorator->updateFieldLabels() instead
  • [65063] Checking for array existence before iterating through DataObjectDecorator->provideI18nEntities()
  • [65062] Dont instanciate abstract classes in i18nTextCollector
  • [65061] Using !SiteTree::get_by_url() (see r65060)
  • [65057] Collecting i18n entities for decorators separately from the decorated classes, as decorated properties like $db have to be stored in the module of the decorated, not in the module of the decorated class.
  • [65030] Different class_implements() usage without instanciating the class in i18nTextCollector - not all classes are instanciatable without arguments. This raises the minimum requirement for text collection to PHP 5.1+
  • [65028] Fixed SecurityAdminTest to work with i18n enabled
  • [65026] Fixed CsvBulkLoaderTest to comply to hasHeaderRow API change (r64806)
  • [65024] Fixed CMSMainTest to check for translated entities to avoid failing tests with i18n enabled
  • [65023] Changed i18nTextCollectorTest to only trigger _t() calls in instance methods (they don't fully work in construct()). Manually adding ClassInfo state for the fakewebroot needed to test textcollection - ManifestBuilder/ClassInfo currently don't support setting of other webroots, or flexible inclusion/exclusion of certain subfolders which would be necessary to do this without hacks.
  • [64981] Don't allow calling of magically added methods via URL unless explicitly listed in allowed_actions
  • [64976] Fixed wrong case of class names for !ImageIFrameField causing errors
  • [64879] Fixed title-handling in FormAction, regression from r64410
  • [64878] Fixed missing $H() reference in i18n.js (#2989)
  • [64850] Avoid ajax evaluator errors by checking if $resizedImage actually exists before calling relativePath() on it
  • [64812] Content wasn't saving on subsequent page loads, after TinyMCE3 upgrade
  • [64798] Fix !DataObject::write() with a specified ID and forceInsert to be true
  • [64788] in IE, overflow left pane is hidden and cannot enable scrollbar
  • [64771] Made ContentController work properly if it doesn't have a dataRecord
  • [64770] merged patch from ajshort to fix checkbox fields in the cms
  • [64754] Fixed old references to GenericDataAdmin in ModelAdmin.php and ModelAdmin_Results.ss
  • [64739] Security->passwordsent() didn't get the "Email" variable from the URL properly, because of updates to HTTPRequest
  • [64736] Fixed non-object or not null error in TreeSelectorField
  • [64732] New folders weren't getting their name set correctly, instead they would just be called "NewFolder". This occurred in the Site Content section of the CMS, creating a folder using the right hand panel in that section.
  • [64604] Fixed incorrectly reverted methods related to sizing of the popup.
  • [64601] Fixed extra class addition on various FormField->Field() methods
  • [64562] Using include_once() instead of include() for _ss_environment.php in install.php and Core.php to avoid PHP notice errors about double constant defines (see r64561)
  • [64506] Renamed "Save & Publish" to "Save and Publish" since this value is used in the value attribute of input elements, properly parsed, this would produce &amp; instead of &
  • [64494] Fixed distribution of textcollector files to modules (was collecting all entities into all modules before) - added unit tests
  • [64491] Fixed wrongly formatted _t() call in Security class
  • [64490] Fixed $module parameter for i18nTextCollectorTask
  • [64471] Fix issue with language files not being included
  • [64467] Removed duplicate setValue() method on Time (was supposed to be deleted instead of renamed from setVal() to setValue())
  • [64466] posix_isatty sometimes returns a benign error
  • [64462] Don't run migration code for permissions if the old field doesn't exist.
  • [64443] Fixed RestfulServerTest fixture path
  • [64440] Unit tests for RestfulServer (see r64439)
  • [64439] Returning 409 Conflict HTTP Header when trying to create a resource on an existing URL through RestfulServer
  • [64438] Removed $headingLevel reference from LabelField (was supposed to go into HeaderField)
  • [64437] Second constructor argument $title for HeaderField should be optional for legacy reasons
  • [64427] Using PasswordField instead of deprecated EncryptField
  • [64423] Adjusted HeaderField and LabelField implementation to new constructor arguments (see r64421)
  • [64422] Adjusted HeaderField and LabelField implementation to new constructor arguments (see r64421)
  • [64361] #2963 - Fix RSSFeed to work with new add_cache_headers
  • [64334] Reverted Member->isAdmin() removal since it's being used in a lot of places, we shouldn't deprecated it... yet.
  • [64329] correct wrong syntax of TableField class in its frontend javascript
  • [64328] avoid a CSSClass is added to a veiwable data twice.
  • [64325] $this->extraData is not alway set for an TableField_Item
  • [64320] If DropdownField->Field() lack of source checking before looping through it
  • [64318] Fixed DropdownField handling of Iterator objects rather than arrays in the newly created getSource()
  • [64314] If ajaxActionsOnTop is called twice, the actions are removed.
  • [64313] Don't use singleton() to create DataFormatter instances, as it will cause weird side-effects with multiple formatter instances with different parameters (broke subsequent test runs of RestfulServerTest and SoapModelAccessTest) - all aboard the failboat!
  • [64310] Unsetting $_SERVER globals in RestfulServerTest to avoid side-effects across unit tests
  • [64309] Added RestfulServerTest->testApiAccessBoolean()
  • [64307] Fixed RestfulServerTest->testAuthenticatedGET()
  • [64275] fixed default_country_value so that it will actually call the default country if IP lookup doesnt work
  • [64263] Fix disappearing fields when a field without a name was being pushed onto a FieldSet (eg a CompositeField)
  • [64251] Fixed ComplexTableField->saveComplexTableField() success message object link - was assuming same context as ComplexTableField_ItemRequest
  • [64239] Adjusted ForeignKey->scaffoldFormField() to new scaffolding notation ("ajaxSafe" instead of "ajax")
  • [64237] Fixed FormScaffolder string literal parsing FALE in getFieldSet()
  • [64229] Storing HTTP "Referer" header from $_SERVER in Director::direct() and passing it along in Director::test()
  • [64228] Checking for an empty array for $postVars in Director::test() to determine HTTP method - an existing array should cause POST rather than GET, even if its empty
  • [64227] Fixed stupid ommission from r64223 which caused HTTPRequest to construct without a proper URL
  • [64224] Using fieldLabel() for $has_one relationships in FormScaffolder
  • [64173] Fixed wrong call to scaffoldCMSFields() in Member->getCMSFields(), removed addScaffoldRelationFields() call as this is done by the newly called parent::getCMSFields() already
  • [64153] #2906 - Fixed manifest conflict in web-tests
  • [64142] fixed ss.i18n.sprintf() call in Validator.js
  • [64124] #2936: Define STDOUT if it's not already defined...
  • [64109] Fixed order of arguments.
  • [64099] Bad XHTML in en_US language file (#2624) - thanks tiwoc!
  • [64098] Director::fileExists() fails on windows with absolute paths (#2935) - thanks to ajshort!
  • [64097] Fixed CSSContentParser to only use tidy on CLI mode if its available, and first check for existence of PHP tidy extension. Fixes failing unit tests on standard WAMP windows installations.
  • [64096] Fixed CSVParser assumptions about absolute unix-style filepaths - using Director::absFile() instead now
  • [64081] Consistent usage of ss.i18n.sprintf() instead of ss.i18n.printf() - the method is returning a string rather than outputting directly, so should be sprintf()
  • [64077] Fixing AssetAdmin translations which were previously moved to Folder.php - i18n::include_by_class() doesn't like filenames/namespaces which are in a different folder than the language file they're referenced in (see #2359) - started in r64076
  • [64076] Fixing AssetAdmin translations which were previously moved to Folder.php - i18n::include_by_class() doesn't like filenames/namespaces which are in a different folder than the language file they're referenced in (see #2359)
  • [64074] Fixed AssetTableField javascript errors caused by r64049
  • [64072] Fixed DebugView Breadcrumbs to not include query string as separate link, and don't append an arrow after the last element
  • [64049] fix the bug that add some rules for summary columns even when they are not there.
  • [64042] Using _t() to check content strings in unit tests and avoid tests failing when i18n is enabled
  • [64038] Removed $_ALL_CLASSES in !ReportAdmin::has_reports() - this doesn't need to be here anymore, due to changes in ManifestBuilder
  • [64013] Limited error message scope on invalid classname for TestRunner
  • [64011] Ignore TestOnly classes when collecting permissions
  • [64010] Removed dependency of ss.i18n.js on other libraries by replacing $$ with document.getElementsByTagName() and implementing a custom event attacher - see #2927
  • [64007] Making less assumptions about object structure in FieldSet->addFieldToTab() error messages
  • [64005] YamlFixture?->saveIntoDatabase(): In order to support reflexive relations which need a valid object ID, the record is written twice: first after populating all non-relational fields, then again after populating all relations (has_one, has_many, many_many). Fixes a bug where FileTest was testing onBeforeWrite() behaviour
  • [64004] Writing record from yml before parsing relations in YamlFixture->saveIntoDatabase() to avoid missing lookups for reflexive relations on the same object
  • [64002] Moved RecordController and CollectionController to external module (see r63905)
  • [64001] Adjusted FormTest->testLoadDataFromObject() to new assumptions about changed behaviour on loadDataFrom() from $loadBlanks to $clearMissingFields - which means that form fields are cleared regardless if they have blank values in the passed object or not
  • [64000] Making sure that DataObject->has*Field() methods always return an array, in order not to fail any array_key_exists() checks
  • [63999] Fixing DataObject->hasField() to detect dynamic getters by using hasMethod("get$fieldName")
  • [63998] Fixed Form->loadDataFrom() to properly populate FormField->setValue() when an object is passed as the first parameter (needed e.g. for CheckboxSetField->setValue()) - see mailinglist discussion at http://groups.google.com/group/silverstripe-dev/browse_thread/thread/717bada8ccafdd70
  • [63983] Fixes so ?flush=1 doesn't stop showing the Reports tab in CMS
  • [63981] Allow use of ClassInfo methods in _config.php when manifest is being rebuilt
  • [63945] Added missing slash in TableListField_Item->Link()
  • [63939] Improved RedirectorPage's handling of invalid configuration options to prevent infinite loops and segfaults
  • [63927] Improved detection of CLI colour support
  • [63920] Fix broken breadcrumbs

Go to page 2