Last modified 3 years ago
2.3.0-rc1 Changelog
New Features
- [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
- [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
- [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 & 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
- [63915] #2588 Fix issue with IIS not stripping GET variables from the URL (mackeyn)
- [63909] Prevent misconfigured redirector pages from breaking static publishing
- [63890] Validation result was ignoring the $valid flag passed as the first argument.
- [63858] Fixed js i18n entity names for TableField (see #2916)
- [63857] Properly merging different dictionaries for javascript i18n implementation (see #2916)
- [63839] Added missing default english text to i18n call in TableField and TableListField javascript
- [63828] MemberTableField_Popup had an odd way of overloading saveComplexTableField() - this should be on MemberTableField instead, since that's the direct subclass of ComplexTableField for where saveComplexTableField() is defined. This broke the "Add Member" button in CMS Security, probably due to the way the form URLs have been changed. See ticket #2907 for the reported problem.
- [63825] Don't let Director::test() clobber current stage
- [63824] Fix !FieldSet::replaceField() so that it doesn't clobber tabs
- [63823] SiteTree::onAfterPublish() will still pass an object to the handlers on the first publish
- [63819] Fixed pagination in TableListField after hsmith's changes
- [63813] Fixed array_key_exists check in DataObject->setField that was failing when DataObject->record was not yet initialised by DataObject->setField.
- [63809] PHP Notice in !InlineFormAction_Readonly
- [63804] Side reports weren't working on initial opening of the side tab
- [63799] Fixed blatant error where $SNG_member wasn't defined
- [63797] Member->getCMSFields() should use scaffoldCMSFields() instead of scaffoldFormFields() - currently it is operating in the wrong context.
- [63793] MemberTableField?->AddLink() was calling &methodName=add - this should be just "add", as per changes to the forum URLs in sapphire
- [63786] Removed query that was causing issues displaying members in the security groups. Open ticket #2591
- [63785] URLs to security groups in CMS were not linked correctly. Removed Director::link() references and replaced with strings. Director::link() is deprecated and shouldn't be used.
- [63769] Fixed paths to CSV fixtures for case-sensitive file systems.
- [63768] Fixed $fixture_file for Ext2fs and other case-sensitive file systems.
- [63748] Use of getOwnerID() in ReportAdmin which doesn't make sense, since ID() is sufficient.
- [63739] Fixed bug in getCMSFields scaffolding of relations
- [63716] Fixed createTag for proper generation of DropdownField blank items
- [63698] Only include i18n.js if javascript files are included - and to be safe, include the required prototype.js along with the library
- [63691] Removed old reference to ?executeForm=EditForm
- [63681] Requiring a parentController for RecordController
- [63649] Fixed unclear SQL escaping responsibilities in SearchFilter subclasses - it now expects unescaped data, and escapes automatically when adding to the query)
- [63647] Making "add %s" translatable for ComplexTableField
- [63640] Automatically including sapphire/javascript/i18n.js in Requirements::process_i18n_javascript() to avoid errors when Requirements are manually overwritten
- [63635] #2901 - !RootURLController didn't properly manipulate the Controller stack
- [63634] Reverted earlier change to ModelAdmin.js statusMessage() display
- [63629] Translated Member formfields through fieldLabels()
- [63627] php notice in CountryDropdownField
- [63622] Disabled user_error in ComplexTableField->sourceID() when no formfield 'ID' is found in ComplexTableField->$detailFormFields - not strictly required as we can deduce it from the URL. It was causing conflicts with DataObject->scaffoldFormFields() not returning an 'ID' field
- [63621] Making sure that Dataobject->getManyManyJoin() inserts a valid database table for the relation - not all component classes returned by ComponentSet->ownerClass are valid tables (see r54797 and r60909 for previous commits on this issue)
- [63618] Escaping added database columns in queries for TableListField
- [63611] typo mentioned in #2775
- [63602] Fixed bounce-address generation so that it doesn't have a human component to the email address
- [63593] #1816: Added a little padding to page version table
- [63581] Fixed ComplexTableField export
- [63571] typo in js file
- [63570] typo in js file
- [63549] Updated TreeSelectorField to work properly within CTF popups
- [63527] Removed notice-level errors in ListboxField
- [63525] #2883 - Remove use of short tag
- [63509] Fixed !DataObject::dbObject() operation with CompositeDbFields
- [63467] Fixed Upload->isValidExtension() - was checking array keys instead of array values ....
- [63464] Fixed hardcoded HTTP protocol information in BasicAuth
- [63457] AssetAdmin?->Link() returned a trailing slash that was not necessary. See ticket #2884
- [63452] Fixed ReportAdmin breakages - changes to HTTPRequest required that show($params) be changes to show($request) and then check $request->allParams() for the URL parameters - this caused major breakages as this code was not updated to reflect the new URL handling changes.
- [63432] #2753: Couldn't have fields named the same as methods
- [63304] #2529: Fixed HTTP/1.0 support
- [63297] Fixed loading indicator in for add form in ModelAdmin.js
- [63296] wrong jsparty PATH references
- [63295] wrong jsparty PATH references
- [63294] Fixed ModelAdmin Requirements path references
- [63291] Don't try to use HTTP_HOST environment variable if its not set in Director::protocolAndHost(). Throw a warning, then return false - before if script execution was not set to stop on WARNING, you'll get a NOTICE as well.
- [63290] Moved *_PATH and PR_*constants from main.php/cli-script.php back to Core.php - was causing problems with installer (directly includes Core.php, but doesn't run through main.php) - see ticket #2867 for improvement suggestions in bootstrapping code to avoid these bugs
- [63204] Moved TEMP_FOLDER define back from main.php/cli-script.php to Core.php, as it was causing problems with the installer
- [63157] Reverted Director class using BASE_PATH instead of dirname(dirname(SCRIPT_FILENAME?)), originally committed in r63154
- [63079] decrease width of elements in image/flash/link panel on right-hand side to avoid close-button being shoved off to the void (#1669)
- [62910] #2390: Not indexed pages are removed from sitemap.xml
- [62909] Fixed bug introduced into AssetTableField by previous CTF change
- [62892] #2721 - Show decent preview on !FileIFrameField
- [62885] Fixed a number of really basic problems with a number of date fields - got basic loading and saving working across them all
- [62875] More robust setting of defaults; necessary due to altered !ViewableData::isset()
- [62868] #2697 - Removed junk slash from login message
- [62701] Changed URL format for password sent confirmation display, to avoid issues with new request handling trying to detect the email-TLD as a pseudo-file-extension (which resulted in truncated email-addresses in display). Old: /Security/passwordsent/myemailaddress. New: Security/passwordsent/?email=myemailaddress
- [62490] createTag() on FormField subclasses should use getTabIndex() instead of getTabIndexHTML() as createTag() is responsible for generating the HTML, and all we need is the tabindex value
- [62471] Allowing HTTPRequest::match() to match rules with extensions (e.g. /sitemap.xml used for GoogleSitemap)
- [62463] Pushing current controller into stack in !RootURLController->handleRequest to Session-usage in Translatable if enabled. Session::get() is dependent on controllers, and is needed to determine the current language for any Translatable queries (like !RootURLController::get_homepage_urlsegment())
- [62381] Type checking problem in LookupField->Field(), merged in from r62387
- [62325] Removed DataReport.js calls in LeftAndMain until we figure out a better way of doing
- [62324] Removed DataReport.js calls in LeftAndMain until we figure out a better way of doing
- [62320] Allow creation of a tab and a field of the same name; bug cause by the duplicate field merging code introduced recently.
- [61975] not all decorators has a summary_fields defined, so the code need to deal with this.
- [61699] Fixed bulk loader constructor
- [61686] Fixed styling, searching, and pagination of CommentTableField
- [61505] Fix direct access of (class)/(id)/edit on the !ModelAdmiN
- [61395] SetHeight?() was calling SetWidth using getFormattedImage()
- [61292] fixed ManyMany relation for same object
- [61202] Reverted change r61158 which stopped scrollbars working
- [61195] Asset area in CMS refused to load because of error in code from r60920 - #2751
- [61162] sourceFilter should be a string, not an array
- [61155] HtmlEditorField_Toolbar->LinkForm() for editing a link inside an HtmlEditorField instance was showing page titles using the "Title"
- [61151] ComplexTableField_popup.css "overflow: auto" should only be applied to the container HTML element instead of HTML and BODY which can
- [60920] #1458 - GEOIP now does not return any error if it cannot look up the ip address (as it uses a shell command this is not enabled on many WAMP systems)
- [60897] fixed Member name not being saved in database with ReadonlyField()
- [60757] Fixed TableListField->Link() to allow for instanciation without a form/controller (e.g. for unit tests)
- [60756] Fixed !ScaffoldINGComplexTableField file name
- [60726] Fixed !DataObject::fieldLabels() to detect labels on inherited database fields
- [60723] Fixed partial merge from nzct (originally from r47039, partially merged in r60440)
- [60712] Fixed ModelAdmin typo in $searchCriteria method parameter
- [60710] Fixed $this reference in static Member call
- [60643] Reinstated error_handling(E_ALL) for dev environments in main.php after clarifying with sam - we want to force developers to recard notice-level errors unless they expicitly opt-out in their _config.php
- [60636] Disabled mandatory override of default PHP error handler to E_ALL when in dev mode (which means you have no way of overriding error_reporting() in your _config.php, and by that no way of disabling e.g. E_NOTICE level errors)
- [60635] Fixed CMSMainTest to use /admin/crm as a standard URL rather than /admin (which could be overloaded by other admins for application-like interfaces without CMS components)
- [60573] Fixed bug with unpaginated TableListFields. Added tests for TableListField pagination
- [60415] Added Requirements::path_for_file() to support external URLs in required paths (incl. unit test)
- [60413] Fixed RequirementsTest combine_files() testing to accept new javascript inclusion format with added modified flags
- [60412] Fixed JSON.php include path in Convert.php
- [60410] Fixed test runner's handling of errors
- [60404] Further fixes to Director::test()
- [60397] Changes to !DataObject::get_one() caching to try and fix segfaults
- [60393] Fixed superglobal masquerading in Director::test()
- [60388] Fixed Yaml fixtures for SapphireTest
- [60382] Re-added additional GroupTest tests (merge error from branches/roa)
- [60378] Removed duplicate GroupTest.php files
- [60224] Fixed merge error in ModelAsController
- [60219] Fixed reverted access checks in Controller->handleAction() due to merge error
- [60213] Javascript error in !ComplexTableField_popup.js - missing a comma in an object literal which broke ajax updates in the CMS
- [60092] Using $extraClass in AutocompleteTextField
- [59340] Fixed TableListField->setClick_PopupLoad() to parse ID-value out of new <td> identifiers
- [59285] Changed span.middleColumn to .middleColumn in cms_right.css in preparation for building proper HTML/XHTML nesting in formfields
- [59284] Changed span.middleColumn to .middleColumn in cms_right.css in preparation for building proper HTML/XHTML nesting in formfields
- [59283] Fixed i18n namespacing issue in !TableListField_Item.ss - was using _t('Form.DELETE'), but templates don't allow to re-use variables outside their own namespace
- [59282] Removed duplicate SecurityID fields on each row of a TableField (calls $myForm->Fields() which by default will include more than the actual form fields passed to the constructor)
- [59281] Fixed colspan on <td class="actions"> in MemberTableField.ss
Enhancement
- [65582] Using actual classname in DataObjectSet->debug()
- [65581] Added unit tests for FieldSet->insertBefore()/insertAfter()
- [65513] Using currently used content languages for options in the TinyMCE spellchecker (see http://open.silverstripe.com/ticket/2498#comment:2)
- [65508] Added language tables for tinymce_ssbuttons Plugin, incl. German translation
- [65495] Calling UpgradeSiteTreePermissionSchemaTask from SiteTree->requireDefaultRecords as a temporary workaround for missing migration infrastructure. This means that upgrading the schema for 2.3 can be done without manual task triggers, just the usual dev/build (see http://open.silverstripe.com/ticket/2847#comment:4)
- [65494] Added DatabaseTest
- [65464] Better CLI output for browsing dev/tests
- [65463] Allowing strings instead of arrays in !ModelAdmin::$managed_models to make it less error-prone for beginners
- [65457] Allowing to pass strings instead of arrays into FunctionalTest->assert*() methods, and convert them internally to arrays
- [65455] Adjusted AssetAdmin to Folder->can*() changes
- [65454] Added LeftAndMainDecorator
- [65453] Added stub methods to DataObjectDecorator for documentation purposes
- [65452] Allowing decoration of can*() methods in File and Folder
- [65361] Added unit tests for i18n template parsing
- [65266] Folder name can now be used for uploading files. Ticket #3026 - Thanks simon_w!
- [65181] Updated LeftAndMain->getMenuTitle() to use classname as fallback if $menu_title is not defined - one less thing to specify in a minimalist ModelAdmin subclass
- [65173] Refactored CSS applied to filter boxes by using common selector
- [65153] Added UpgradeSiteTreePermissionSchemaTask as a manual migration of SiteTree schema upgrades in 2.3 (see #2847)
- [65150] Added unit tests for SiteTree permissions
- [65147] Only logging out users on Security::permissionFailure() is called in non-ajax context. For ajax requests, we now return a 403 HTTP Status in a HTTPResponse Object, with a ":NOTLOGGEDIN" body for backwards compatibility. If a logout+redirection is required after an ajax-request, this should be handled by the clientside.
- [65125] Added a "strict-mode" for Member->inGroup() and Member->inGroups() to determine true membership to a group (without inheritance)
- [65092] Scaffolding TextField instead of TextareaField in Text DBField due to size
- [65073] Added fieldLabels() overloading to various DataObject subclasses. Use this method instead of directly calling _t() in getCMSFields(), and use fieldLabel('MyField') to get the label for a specific FormField. This way, we can transparently support formfield scaffolding and re-use the labels for search fields automatically.
- [65072] Added fieldLabels() overloading to various DataObject subclasses. Use this method instead of directly calling _t() in getCMSFields(), and use fieldLabel('MyField') to get the label for a specific FormField. This way, we can transparently support formfield scaffolding and re-use the labels for search fields automatically.
- [65056] Removed DataObjectDecorator->updateSummaryFieldsExcludeExtra() - was a straight copy of updateSummaryFields()...
- [65055] More solid fulltext checks against master language tables in i18nTextCollectorTest
- [65054] Using eval() in textcollector to test for valid PHP syntax
- [65051] Added unit tests for i18nTextCollector handling of newlines in entity values
- [65029] Using namespaces for filenames in RequirementsTest
- [65027] Using safer get_by_id() call in SecurityAdmin->getMemberForm()
- [65022] Added i18nEntityProvider interface (see comments in #1625) incl. unit tests
- [65020] Allowing translation of some static properties on DataObject and subclasses through DataObject->fieldLabels(). Part of the provideI18nEntities() work which was started in r64881 (see #1625)
- [64881] Ignoring entity-names with $ signs (most likely dynamic properties) in i18nTextCollector->collectFromCode()
- [64878] Added unit tests for i18n.js
- [64682] Changed FormField->Field() to make use of FormField->createTag() over complicated dynamic string building
- [64596] Allow use of RestfulService->setQueryString() and test to support it. Patch from ticket #2973. Thanks to simon_w!
- [64558] Used _t() entity instead of hardcoded "not set" string in TextareaField->Field()
- [64556] Clearer indication of setting disabled attribute in DropdownField->Field() since the disabled attribute shouldn't be set if the field isn't to be disabled
- [64553] Clearer indication of setting disabled attribute in CheckboxField->Field() since the disabled attribute shouldn't be set if the field isn't to be disabled
- [64552] If TextField->disabled has been set to true, then add the "disabled" attribute to the input type text attribute list
- [64551] Made use of FormField->createTag() functionality for creating a textarea field in TextareaField->Field()
- [64494] Using ksort() in textcollector to get alphabetized language master files (=easier to compare and debug)
- [64493] Made _t() global function in Core.php an alias for the new i18n::_t() method
- [64492] Refactored i18nTextCollector and added unit tests
- [64489] Added !ClassInfo::classes_for_file()
- [64447] Moving i18n->textcollector() and related methods to new class i18nTextCollector and i18nTextCollectorTask - enabling running textcollector through CLI, refactored to instance methods for better testability
- [64446] Improved TaskRunner and BuildTask metadata and styling
- [64421] Using createTag() to create HeaderField and LabelField, which adds support for HTML id attributes and extra css classes through addExtraClass()
- [64410] Made use of createTag() on FormAction->Field()
- [64408] Added ID to allow CSS styling of forgot password link on MemberLoginForm
- [64406] Added a message if no email address was specified, for user feedback purposes on MemberLoginForm->forgotPassword()
- [64405] Changed the "I've lost my password" action to a link instead, since the button is too prominent, and usability is poor having this as a form submit button.
- [64397] Versioned::get_one_by_stage() and Versioned::get_by_stage() were missing parameters from their get_one() and get() counterparts in DataObject. Those parameters have been added. See ticket #2965 for the origin of this patch.
- [64366] Pulled out Newsletter specific stuff from Member, the changes in the newsletter module were done on r64365
- [64356] Added additional known file types, for audio and video files
- [64311] Added unit tests for Silverstripe's custom static handling (with lots of commented out failing tests)
- [64306] is_array() checks in DataFormatter to respect empty arrays as a form of denying permissions on fields
- [64305] Added !BankAccountField::is_valid_array_structure() to avoid PHP Notices when converting empty array values
- [64304] Added DropdownFieldTest
- [64252] Making confirmation message in ConfirmedFormAction translatable
- [64238] Showing image thumb before input field in a separate block <div class="thumbnail"> in SimpleImageField
- [64236] Added unit tests for form session messages and session validation, FormTest->testSessionValidationMessage() and FormTest->testSessionSuccessMessage()
- [64229] Storing a "fake referer" in TestSession->lastURL to allow for redirectBack() calls, e.g. after failed form validation
- [64224] Disrecard $includeRelations setting when scaffolding $has_one relationships in FormScaffolder - use $restrictFields to limit instead
- [64223] Making URL accessible through HTTPRequest->getURL()
- [64157] Added $params parameter to all DBField->scaffoldFormField() subclasses
- [64144] Setting default level for ContentController->getMenu($level = 1) to allow for calls without arguments
- [64078] Using $locale in _t() instead of repeatedly calling i18n::get_locale()
- [64075] Replaced hardcoded "en_US" references in i18n class with $default_locale
- [64073] Supporting titles in FieldSet->findOrMakeTab()
- [64071] Added german translation for ModelAdmin
- [64067] Using i18n fieldlabels for column-headlines in TableListField
- [64041] Re-enabled RSSFeedTest - seems to work now due to Director::baseURL() fixes (#2861)
- [64012] Improved error message on invalid classname for TestRunner
- [64003] Added DataFormatter->setCustomRelations()
- [64001] Made FormTest fixtures more expressive
- [63999] Re-enabled two test cases in DataObjectSet as a result of the above fixes
- [63996] Added unit test CheckboxSetFieldTest?->testLoadDataFromObject()
- [63995] Using fixtures in CheckboxSetFieldTest?, restructured from hard-to-debug manymany-join on self to a Article<->Tag relation
- [63955] Pulled out Report::has_reports() which was hardcoded into LeftAndMain, and put into cms/_config.php which makes more sense
- [63763] Reformatted and documented Form->loadDataFrom() - no functionality changed
- [63762] Added unit tests for "_unchanged" handling in Form->loadDataFrom()
- [63761] Added unit tests for Form->loadDataFrom()
- [63748] Added missing "abstract" Report class to compliment ReportAdmin. Currently it is unclear what abstract base class you're supposed to implement from.
- [63681] Custom getViewer() methods to use Page main templates if CollectionController is nested in a ContentController
- [63680] Added SSViewer->getTemplateFileByType() and SSViewer->setTemplateFile()
- [63679] Added HTTPRequest::detect_method()
- [63653] Added Controller->getRequest()
- [63652] Added Controller->render($params) as a shortcut for Controller->customise($params)->renderWith(array('MyTemplate','MySubTemplate')) - templates are auto-detected by Controller->getViewer() and Controller->getAction()
- [63651] Consistently allowing for $restrictFields and $fieldClasses parameters passed to DataObject->scaffoldFormFields(), DataObject->scaffoldSearchFields(), DataObject->scaffoldCMSFields()
- [63650] Added RequestHandlingTest->testNestedBase()
- [63648] Added support for customize parameters to ViewableData->renderWith() to avoid unnecessary chaining ($this->customize($params)->renderWith($template))
- [63633] Better i18n for TableField and ComplexTableField
- [63632] Using DataObject->Title for has_one dropdowns generated in DataObject->scaffoldFormFields()
- [63630] Added DataObject->fieldLabel() and removed $fieldname parameter from DataObject->fieldLabels($fieldName) to simplify overloading of fieldLabels() for i18n
- [63628] Added FieldSet->hasTabSet() incl. unit test
- [63626] Removed overloaded MemberTableField->DetailForm() and reduced overloaded constructor logic - same behaviour found in parent classes
- [63624] Scaffolding Member->getCMSFields() to allow for easy extension
- [63623] Calling DataObjectDecorator->updateCMSFields() in DataObject->getCMSFields() - was previously only called in SiteTree instances
- [63620] Only list ID field in DataObject->summaryFields() if no summaryfields are defined (or can be autodetected). Listing all fields was not feasible, as some subclasses have more fields than fits the column layout
- [63619] Added ObjectTest->testSingletonCreation()
- [63615] Added FieldSetTest->testRemoveTab()
- [63614] Updated translations from translate.silverstripe.com
- [63613] Updated translations from translate.silverstripe.com
- [63572] Removed project-specific requirements from CMSMain
- [63569] Started using ss.i18n clientside javascript in LeftAndMain classes (only a fraction made translatable)
- [63567] Using ss.i18n in all sapphire form fields with clientside language strings
- [63566] Added javascript i18n support through Requirements::process_i18n_javascript() and ss.i18n javascript lib
- [63565] Added ViewableData->i18nLocale, used in LeftAndMain.ss to determine interface language through meta tags (see r63564)
- [63564] Added ViewableData->i18nLocale, used in LeftAndMain.ss to determine interface language through meta tags
- [63554] Checking for instanceof DataObject instead of has_one() in DataObject->update() to support virtual relations as well (fix to r63531)
- [63528] #1848 - Select the title field for new pages
- [63526] #2875: Make CLI execution more robust when FILE_TO_URL_MAPPING not set
- [63493] Added support for dot syntax to !DataObject::update()
- [63470] Setting SimpleImageField->allowedExtensions to sensible defaults
- [63468] Added Form->resetField()
- [63465] Showing contact information in Debug::friendlyError() from Email::getAdminEmail()
- [63463] Added Director::get_environment_type()
- [63452] Better URL handling. Instead of "admin/showreport/something", we do "admin/report/show/something", which is more consistent with the rest of the CMS.
- [63388] Director::forceWWW() now does a 301 redirect for SEO (to be consistent with Director::forceSSL())
- [63337] Added DataObjectTest test cases for checking various field existence levels
- [63327] #2172: Added counts to comment admin submenu items
- [63321] Updated cli-script handling to be more in line with web calls, and improved Director::setBaseURL() calls.
- [63289] Tidied up DropdownField->Field() by making use of FormField->createTag() as other FormField subclasses such as TextField do
- [63249] Moved UserDefinedForm and related code, templates, CSS and javascript out of cms and sapphire classes into userforms/trunk
- [63198] Added user_error() if RebuildStaticCacheTask is called without a Page->allPagesToCache() method defined
- [63182] Added !ManifestBuilder::$cache_expiry_mins
- [63181] Using HTTP Status 301 for RedirectorPage class, to be nice to search engines and improve SEO (with 200 page rank gets split between pages, with 301 its all transferred to the target page)
- [63175] Introduced constants for system paths like /sapphire in preparation for a more flexible directory reorganisation. Instead of hardcoding your path, please use the following constants: BASE_PATH, BASE_URL, SAPPHIRE_DIR, SAPPHIRE_PATH, CMS_DIR, CMS_PATH, THIRDPARTY_DIR, THIRDPARTY_PATH, ASSETS_DIR, ASSETS_PATH, THEMES_DIR, THEMES_PATH
- [63154] Introduced constants for system paths like /sapphire in preparation for a more flexible directory reorganisation. Instead of hardcoding your path, please use the following constants: BASE_PATH, BASE_URL, SAPPHIRE_DIR, SAPPHIRE_PATH, CMS_DIR, CMS_PATH, THIRDPARTY_DIR, THIRDPARTY_PATH, ASSETS_DIR, ASSETS_PATH, THEMES_DIR, THEMES_PATH
- [63153] Moved procedural bootstrapping code hiding away between function definitions in Core.php to main.php and cli-script.php (TEMP_FOLDER and PR_* constants)
- [63057] Updated argument handling for sake
- [63025] Better CLI output of 'sake dev'
- [63022] #2853 - Added dev/build as a the new name for db/build; prettied it up
- [62995] Prevent CMS session timing out and losing content - Added a ping to Security/ping every 5 mins, and altered the onSessionLost behaviour to open login form in a pop-up instead of closing the CMS (see #2242)
- [62994] Prevent CMS session timing out and losing content - Added Security/ping as a destination for session-preserving ajax pings
- [62894] #2700 - Added section title to CMS title tag
- [62883] ComplexTableFilters? used to edit relations have their filter automatically set, as well as the foreign key on new records.
- [62867] #2417: Replaced http://www.yoursite.com with the actual base URL
- [62848] Allowing to specify dropdown title field in TypeDropdown->setTitleFieldName() - patch by nicolaas (#2689)
- [62847] Allowing usage of ID, Code-String or Object as $group parameter in Member::inGroup()
- [62844] Allowing usage of $member parameter for Member::check() as ID, Code or Object
- [62843] Added Debug::send_warnings_to()
- [62841] Using optional $member parameter for !DataObject::can*() methods
- [62477] Improved ajax error display within the CMS: Using Firebug (or Firebug Lite) for plaintext output instead of cramming everything into the CMS-status field
- [62468] In Debug::showError(), if error is displayed through ajax with CliDebugView, use plaintext output
- [62467] Removed "ERROR:" prefix hack for ajax error responses - clientside evaluation should inspect HTTP status codes instead
- [62397] Adjusted ModelAdmin->import() to new !BulkLoader_Result API (see r62403)
- [62267] Added DBFieldTest to test prepValueForDB()
- [61685] You can now use Controller::join_links() to add querystring arguments to a URL
- [61627] Added dev/tests/startsession and dev/tests/endsession to allow the use of fixtures with external test frameworks, such as Windmill
- [61618] wakeless - Added SQLQuery::filtersOnID()
- [61485] DropdownField? now allows for <optgroup> elements in the field source by passing in a two dimensional array - this was taken from GroupedDropdownField
- [61420] RequiredFields?->php() uses quotes around title of field, falling back to the name of the field if title isn't available
- [61415] Added LowerCase() to DBField to return the raw2xml converted value as lower case for any type of field if applicable
- [61394] Added SetHeight() to the Image class, so we can call it from the templates
- [61392] Added SetSize() to the Image class so we can use it in the templates
- [61166] Consistent styling of TypeDropdown in the CMS
- [61165] Added h3, h4 and h5 CSS styles
- [61157] Added FieldSet->removeFieldsFromTab() which does exactly what removeFieldFromTab() does, but with an array of field names
- [61154] Director::forceSSL() redirects are now 301 instead of 302 redirects, which is better for SEO
- [61153] ErrorPage:: should also list ShowInSearch as 0, since it is not required to be searched
- [61149] Added getter method for CompositeField->children
- [61147] If title not passed into TextareaField constructor, it defaults to the name value
- [60724] Removed recently added !DataObject::$result_permissions and replaced with more specific !TableListField::permissions_for_object()
- [60645] Added Maori to i18n::$common_languages
- [60637] Showing error level in custom error handlers on DebugView and CliDebugView
- [60635] Added default /admin/cms route to cms/_config.php to clear default namespace for other controllers
- [60395] Using Requirements instead of hardcoded template logic to include some LeftAndMain js/css
- [59286] Added <div class=""middleColumn"> around TableListField templates and all subclasses
Minor changes
- [65616] Removed unused code from SearchForm, commented out junk etc
- [65537] removed debug commits from r65523 in Folder.php
- [65516] Updated merge-info
- [65485] type enviroment -> environment
- [65484] Removed obsolete code from !MySQLDatabase
- [65458] Removed duplicate dev/simpletest, already present in thirdparty/simpletest
- [65457] PHPDoc for FunctionalTest
- [65446] Tidied up ThumbnailStripField->getimages() formatting
- [65445] Tidied up ThumbnailStripField->getflash() formatting
- [65444] Tidied up ThumbnailStripField->getimages() formatting
- [65443] Tidied up formatting - spaces to tabs
- [65437] Changed die() to user_error() so that correct error level is returned
- [65418] Tidied up messy code formatting
- [65409] Tidied up AssetAdmin->!SiteTreeAsUL()
- [65398] images for the new imageeditor which didnt get included in the patch
- [65292] JS translations in LeftAndMain
- [65233] Removed redundant code
- [65205] phpDoc of HtmlEditorField
- [65190] Improve robustness of some of the widget definition
- [65149] Moved tasks from sapphire/cli to new folder sapphire/tasks
- [65146] Fixed PHP Notices in Member.php
- [65145] Fixed PHP Notices in TreeMultiSelectField
- [65135] Check if OldPassword data exists before running checkPassword()
- [65127] Code formatting in ComplexTableField
- [65126] Code formatting in CMSMenuItem
- [65124] Formatting in Group.php
- [65095] Disabled LeftAndMainTest, now covered by CMSMenuTest
- [65075] Updated master language tables
- [65074] Updated master language tables
- [65067] formatting
- [65058] Restructured code in Object.php to consistently have properties and important methods like call() at the top of definitions (no logic changes). Added minor documentation.
- [65052] rearranged methods in i18nTextCollector
- [65043] Collecting entities for language master table with new i18nTextCollector functionality. The table is now sorted alphabetically by namespace and entity. Entities now include more translatable statics from DataObject subclasses like $db, $has_one etc.
- [65035] Collecting entities for language master table with new i18nTextCollector functionality. The table is now sorted alphabetically by namespace and entity. Entities now include more translatable statics from DataObject subclasses like $db, $has_one etc.
- [65025] Moved i18n tests into sapphire/tests/i18n subfolder
- [65022] documentation for i18nTextCollector
- [65021] package information for ModuleManager
- [65019] Moved js unit tests from sapphire/javascript/tests to sapphire/tests/javascript to ha
