mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
Merge remote-tracking branch 'origin/3'
This commit is contained in:
commit
34b71cf6c8
@ -1200,14 +1200,6 @@ li.class-ErrorPage > a .jstree-pageicon { background-position: 0 -112px; }
|
||||
.cms-content-controls.cms-preview-controls { z-index: 1; background: #eceff1; height: 30px; /* should be set in js Layout to match page actions */ padding: 12px 12px; }
|
||||
.cms-content-controls .icon-view, .cms-content-controls .preview-selector.dropdown a.chzn-single { white-space: nowrap; }
|
||||
.cms-content-controls .icon-view:before, .cms-content-controls .preview-selector.dropdown a.chzn-single:before { display: inline-block; float: left; width: 20px; overflow: hidden; color: #1f1f1f; }
|
||||
.cms-content-controls .icon-auto:before { background: url('../images/sprites-32x32-s47450c5f5b.png') 0 -898px no-repeat; }
|
||||
.cms-content-controls .icon-desktop:before { background: url('../images/sprites-32x32-s47450c5f5b.png') 0 -925px no-repeat; }
|
||||
.cms-content-controls .icon-tablet:before { background: url('../images/sprites-32x32-s47450c5f5b.png') 0 -1087px no-repeat; }
|
||||
.cms-content-controls .icon-mobile:before { background: url('../images/sprites-32x32-s47450c5f5b.png') 0 -1006px no-repeat; }
|
||||
.cms-content-controls .icon-split:before { background: url('../images/sprites-32x32-s47450c5f5b.png') 0 -1060px no-repeat; }
|
||||
.cms-content-controls .icon-edit:before { background: url('../images/sprites-32x32-s47450c5f5b.png') 0 -979px no-repeat; }
|
||||
.cms-content-controls .icon-preview:before { background: url('../images/sprites-32x32-s47450c5f5b.png') 0 -1033px no-repeat; }
|
||||
.cms-content-controls .icon-window:before { background: url('../images/sprites-32x32-s47450c5f5b.png') 0 -952px no-repeat; }
|
||||
.cms-content-controls .cms-navigator { width: 100%; }
|
||||
.cms-content-controls .preview-selector { float: right; border-bottom: none; position: relative; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; margin: 2px 0 0 4px; padding: 0; height: 28px; }
|
||||
.cms-content-controls .preview-selector a.chzn-single { width: 16px; padding: 6px; height: 16px; margin: -2px 0 0; filter: none; /* remove ie background */ background: none; border: none; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; }
|
||||
@ -1222,7 +1214,7 @@ li.class-ErrorPage > a .jstree-pageicon { background-position: 0 -112px; }
|
||||
.cms-content-controls .preview-selector .chzn-container { width: auto !important; }
|
||||
.cms-content-controls .preview-selector .chzn-container.chzn-with-rise .chzn-drop { padding: 0; border-bottom: 1px solid #aaa; margin-top: -5px; width: auto !important; }
|
||||
.cms-content-controls .preview-selector .chzn-container.chzn-with-rise .chzn-drop .chzn-search { display: none; }
|
||||
.cms-content-controls .preview-selector .chzn-container.chzn-with-rise .chzn-drop ul { padding: 0; margin: 0; }
|
||||
.cms-content-controls .preview-selector .chzn-container.chzn-with-rise .chzn-drop ul { padding: 0; margin: 0; overflow: visible; }
|
||||
.cms-content-controls .preview-selector .chzn-container.chzn-with-rise .chzn-drop ul li { font-size: 12px; line-height: 16px; padding: 7px 16px 7px 6px; color: #0073C1; border-bottom: 1px solid #DDD; background-color: #FFF; /* Description styling */ }
|
||||
.cms-content-controls .preview-selector .chzn-container.chzn-with-rise .chzn-drop ul li:before { margin-right: 2px; font-size: 16px; }
|
||||
.cms-content-controls .preview-selector .chzn-container.chzn-with-rise .chzn-drop ul li.description { padding-top: 5px; padding-bottom: 5px; }
|
||||
@ -1234,8 +1226,15 @@ li.class-ErrorPage > a .jstree-pageicon { background-position: 0 -112px; }
|
||||
.cms-content-controls .preview-selector .chzn-container.chzn-with-rise .chzn-drop ul li.restricted:before { opacity: 0.2; }
|
||||
.cms-content-controls .preview-selector .chzn-container.chzn-with-rise .chzn-drop ul li span { display: block; color: #6c6c6c; font-size: 0.85em; line-height: 1.1em; padding-left: 23px; }
|
||||
.cms-content-controls .preview-selector .chzn-container.chzn-with-rise .chzn-drop ul li .icon-view { margin-right: 4px; }
|
||||
.cms-content-controls .preview-selector .chzn-container.chzn-with-rise .chzn-drop ul .disabled-tooltip { position: absolute; top: 0; left: 0; right: 0; height: 32px; background: rgba(255, 255, 255, 0); }
|
||||
.cms-content-controls .preview-selector .chzn-container.chzn-with-rise .chzn-drop ul .disabled-tooltip::before { content: 'Screen size too small'; text-align: center; background: #555; color: white; padding: 4px 0; position: absolute; top: -24px; left: -1px; right: -1px; border-radius: 3px 3px 0 0; display: none; z-index: 2; }
|
||||
.cms-content-controls .preview-selector .chzn-container.chzn-with-rise .chzn-drop ul .disabled-tooltip::after { content: ''; position: absolute; width: 10px; height: 10px; -moz-transform: rotate(45deg); -ms-transform: rotate(45deg); -webkit-transform: rotate(45deg); transform: rotate(45deg); display: none; background: #555; left: 47%; top: -6px; }
|
||||
.cms-content-controls .preview-selector .chzn-container.chzn-with-rise .chzn-drop ul .disabled-tooltip:hover::after, .cms-content-controls .preview-selector .chzn-container.chzn-with-rise .chzn-drop ul .disabled-tooltip:hover::before { display: block; }
|
||||
.cms-content-controls .preview-selector .chzn-drop ul.chzn-results li.result-selected { background: #e6eaed; color: #66727d; }
|
||||
.cms-content-controls .preview-selector .chzn-drop ul.chzn-results li.result-selected.highlighted, .cms-content-controls .preview-selector .chzn-drop ul.chzn-results li.result-selected:hover, .cms-content-controls .preview-selector .chzn-drop ul.chzn-results li.result-selected:focus { background: #e6eaed; color: #66727d; }
|
||||
.cms-content-controls .preview-selector.split-disabled .chzn-container.chzn-with-rise .chzn-drop ul li.font-icon-columns { color: #aaa; pointer-events: none; }
|
||||
.cms-content-controls .preview-selector.split-disabled .chzn-container.chzn-with-rise .chzn-drop ul li.font-icon-columns.highlighted, .cms-content-controls .preview-selector.split-disabled .chzn-container.chzn-with-rise .chzn-drop ul li.font-icon-columns:hover, .cms-content-controls .preview-selector.split-disabled .chzn-container.chzn-with-rise .chzn-drop ul li.font-icon-columns:focus { color: #aaa; background: #fff; cursor: default; }
|
||||
.cms-content-controls .preview-selector.split-disabled .chzn-container.chzn-with-rise .chzn-drop ul li.font-icon-columns::before { color: #aaa; }
|
||||
.cms-content-controls .cms-preview-states { float: right; }
|
||||
.cms-content-controls .cms-preview-states select { max-width: 150px; }
|
||||
.cms-content-controls .cms-preview-states.dropdown { max-width: 150px; }
|
||||
|
File diff suppressed because one or more lines are too long
@ -137,6 +137,13 @@
|
||||
if (posthidden.content !== prehidden.content) spec.content.trigger('columnvisibilitychanged');
|
||||
if (posthidden.preview !== prehidden.preview) spec.preview.trigger('columnvisibilitychanged');
|
||||
|
||||
// Calculate whether preview is possible in split mode
|
||||
if (contentWidth + previewWidth < options.minContentWidth + options.minPreviewWidth) {
|
||||
spec.preview.trigger('disable');
|
||||
} else {
|
||||
spec.preview.trigger('enable');
|
||||
}
|
||||
|
||||
return container;
|
||||
};
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
(function($) {
|
||||
|
||||
$.entwine('ss.preview', function($){
|
||||
|
||||
/**
|
||||
@ -290,6 +291,20 @@
|
||||
}
|
||||
},
|
||||
|
||||
onenable: function () {
|
||||
var $viewModeSelector = $('.preview-mode-selector');
|
||||
|
||||
$viewModeSelector.removeClass('split-disabled');
|
||||
$viewModeSelector.find('.disabled-tooltip').hide();
|
||||
},
|
||||
|
||||
ondisable: function () {
|
||||
var $viewModeSelector = $('.preview-mode-selector');
|
||||
|
||||
$viewModeSelector.addClass('split-disabled');
|
||||
$viewModeSelector.find('.disabled-tooltip').show();
|
||||
},
|
||||
|
||||
/**
|
||||
* Set the preview to unavailable - could be still visible. This is purely visual.
|
||||
*/
|
||||
@ -620,8 +635,16 @@
|
||||
$('.cms-preview.column-hidden').entwine({
|
||||
onmatch: function() {
|
||||
$('#preview-mode-dropdown-in-content').show();
|
||||
// Alert the user as to why the preview is hidden
|
||||
if ($('.cms-preview .result-selected').hasClass('font-icon-columns')) {
|
||||
statusMessage(ss.i18n._t(
|
||||
'LeftAndMain.DISABLESPLITVIEW',
|
||||
"Screen too small to show site preview in split mode"),
|
||||
"error");
|
||||
}
|
||||
this._super();
|
||||
},
|
||||
|
||||
onunmatch: function() {
|
||||
$('#preview-mode-dropdown-in-content').hide();
|
||||
this._super();
|
||||
@ -771,6 +794,16 @@
|
||||
}
|
||||
}); */
|
||||
|
||||
$('.preview-mode-selector .chzn-drop li:last-child').entwine({
|
||||
onmatch: function () {
|
||||
if ($('.preview-mode-selector').hasClass('split-disabled')) {
|
||||
this.parent().append('<div class="disabled-tooltip"></div>');
|
||||
} else {
|
||||
this.parent().append('<div class="disabled-tooltip" style="display: none;"></div>');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Recalculate the preview space to allow for horizontal scrollbar and the preview actions panel
|
||||
*/
|
||||
@ -803,11 +836,9 @@
|
||||
/**
|
||||
* Rotate preview to landscape
|
||||
*/
|
||||
$('.preview-device-outer').click(function() {
|
||||
if(!$('.preview-device-outer').hasClass('rotate')) {
|
||||
$('.preview-device-outer').addClass('rotate');
|
||||
} else {
|
||||
$('.preview-device-outer').removeClass('rotate');
|
||||
$('.preview-device-outer').entwine({
|
||||
onclick: function () {
|
||||
this.toggleClass('rotate');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
@ -18,6 +18,8 @@ if(typeof(ss) == 'undefined' || typeof(ss.i18n) == 'undefined') {
|
||||
"ModelAdmin.REALLYDELETE": "Do you really want to delete?",
|
||||
"ModelAdmin.DELETED": "Deleted",
|
||||
"ModelAdmin.VALIDATIONERROR": "Validation Error",
|
||||
"LeftAndMain.PAGEWASDELETED": "This page was deleted. To edit a page, select it from the left."
|
||||
});
|
||||
"LeftAndMain.PAGEWASDELETED": "This page was deleted. To edit a page, select it from the left.",
|
||||
"LeftAndMain.DISABLESPLITVIEW": "Screen too small to show site preview in split mode"
|
||||
}
|
||||
);
|
||||
}
|
@ -13,5 +13,6 @@
|
||||
"ModelAdmin.REALLYDELETE": "Do you really want to delete?",
|
||||
"ModelAdmin.DELETED": "Deleted",
|
||||
"ModelAdmin.VALIDATIONERROR": "Validation Error",
|
||||
"LeftAndMain.PAGEWASDELETED": "This page was deleted. To edit a page, select it from the left."
|
||||
"LeftAndMain.PAGEWASDELETED": "This page was deleted. To edit a page, select it from the left.",
|
||||
"LeftAndMain.DISABLESPLITVIEW": "Screen too small to show site preview in split mode"
|
||||
}
|
@ -21,30 +21,7 @@
|
||||
color: $color-text-dark;
|
||||
}
|
||||
}
|
||||
.icon-auto:before {
|
||||
background: sprite($sprites32, preview_auto) no-repeat;
|
||||
}
|
||||
.icon-desktop:before {
|
||||
background: sprite($sprites32, preview_desktop) no-repeat;
|
||||
}
|
||||
.icon-tablet:before {
|
||||
background: sprite($sprites32, preview_tablet) no-repeat;
|
||||
}
|
||||
.icon-mobile:before {
|
||||
background: sprite($sprites32, preview_mobile) no-repeat;
|
||||
}
|
||||
.icon-split:before {
|
||||
background: sprite($sprites32, preview_split) no-repeat;
|
||||
}
|
||||
.icon-edit:before {
|
||||
background: sprite($sprites32, preview_edit) no-repeat;
|
||||
}
|
||||
.icon-preview:before {
|
||||
background: sprite($sprites32, preview_preview) no-repeat;
|
||||
}
|
||||
.icon-window:before {
|
||||
background: sprite($sprites32, preview_dual_window) no-repeat;
|
||||
}
|
||||
|
||||
.cms-navigator{
|
||||
width: 100%;
|
||||
}
|
||||
@ -118,9 +95,10 @@
|
||||
display: none;
|
||||
}
|
||||
|
||||
ul{
|
||||
padding:0;
|
||||
margin:0;
|
||||
ul {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
overflow: visible;
|
||||
|
||||
li{
|
||||
font-size: 12px;
|
||||
@ -177,6 +155,47 @@
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.disabled-tooltip {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 32px;
|
||||
background: rgba(255,255,255,0); // Prevent clicking on browsers that do not support pointer-events: none;
|
||||
|
||||
&::before {
|
||||
content: 'Screen size too small';
|
||||
text-align: center;
|
||||
background: #555;
|
||||
color: white;
|
||||
padding: 4px 0;
|
||||
position: absolute;
|
||||
top: -24px;
|
||||
left: -1px;
|
||||
right: -1px;
|
||||
border-radius: 3px 3px 0 0;
|
||||
display: none;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
@include rotate(45deg);
|
||||
display: none;
|
||||
background: #555;
|
||||
left: 47%;
|
||||
top: -6px;
|
||||
}
|
||||
|
||||
&:hover::after,
|
||||
&:hover::before {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -189,6 +208,23 @@
|
||||
color: $color-text;
|
||||
}
|
||||
}
|
||||
|
||||
&.split-disabled {
|
||||
.chzn-container.chzn-with-rise .chzn-drop ul li.font-icon-columns {
|
||||
color: $color-text-disabled;
|
||||
pointer-events: none;
|
||||
|
||||
&.highlighted, &:hover, &:focus {
|
||||
color: $color-text-disabled;
|
||||
background: #fff;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
&::before {
|
||||
color: $color-text-disabled;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.cms-preview-states{
|
||||
|
@ -33,7 +33,7 @@ Used in side panels and action tabs
|
||||
.cms .ss-gridfield .add-existing-autocompleter input.relation-search { width: 270px; height: 32px; margin-bottom: 12px; border-top-right-radius: 0; border-bottom-right-radius: 0; }
|
||||
.cms .ss-gridfield .add-existing-autocompleter button#action_gridfield_relationadd { height: 32px; margin-left: 0; border-top-left-radius: 0; border-bottom-left-radius: 0; border-left: none; }
|
||||
.cms .ss-gridfield .grid-csv-button, .cms .ss-gridfield .grid-print-button { margin-bottom: 0; font-size: 12px; display: inline-block; vertical-align: middle; *vertical-align: auto; *zoom: 1; *display: inline; }
|
||||
.cms table.ss-gridfield-table { display: table; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; padding: 0; border-collapse: separate; border-bottom: 0 none; width: 100%; }
|
||||
.cms table.ss-gridfield-table { display: table; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none; padding: 0; border-collapse: separate; border-bottom: 0 none; width: 100%; overflow: hidden; }
|
||||
.cms table.ss-gridfield-table thead { color: #323e46; background: transparent; }
|
||||
.cms table.ss-gridfield-table thead tr.filter-header .fieldgroup { max-width: 512px; }
|
||||
.cms table.ss-gridfield-table thead tr.filter-header .fieldgroup .fieldgroup-field { padding: 0; }
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"mappings": "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",
|
||||
"sources": ["../scss/GridField.scss","../admin/scss/themes/_default.scss","../../../../usr/local/share/gems/gems/compass-core-1.0.3/stylesheets/compass/css3/_text-shadow.scss","../../../../usr/local/share/gems/gems/compass-core-1.0.3/stylesheets/compass/css3/_inline-block.scss","../admin/scss/_mixins.scss","../../../../usr/local/share/gems/gems/compass-core-1.0.3/stylesheets/compass/_support.scss","../../../../usr/local/share/gems/gems/compass-core-1.0.3/stylesheets/compass/css3/_border-radius.scss","../../../../usr/local/share/gems/gems/compass-core-1.0.3/stylesheets/compass/css3/_images.scss","../scss/_elementMixins.scss"],
|
||||
"mappings": "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",
|
||||
"sources": ["../scss/GridField.scss","../admin/scss/themes/_default.scss","../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/css3/_text-shadow.scss","../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/css3/_inline-block.scss","../admin/scss/_mixins.scss","../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/_support.scss","../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/css3/_border-radius.scss","../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/css3/_images.scss","../scss/_elementMixins.scss"],
|
||||
"names": [],
|
||||
"file": "GridField.css"
|
||||
}
|
@ -408,4 +408,15 @@ class BulkLoader_Result extends Object {
|
||||
|
||||
return $set;
|
||||
}
|
||||
|
||||
/**
|
||||
* Merges another BulkLoader_Result into this one.
|
||||
*
|
||||
* @param BulkLoader_Result $other
|
||||
*/
|
||||
public function merge(BulkLoader_Result $other) {
|
||||
$this->created = array_merge($this->created, $other->created);
|
||||
$this->updated = array_merge($this->updated, $other->updated);
|
||||
$this->deleted = array_merge($this->deleted, $other->deleted);
|
||||
}
|
||||
}
|
||||
|
@ -37,6 +37,15 @@ class CsvBulkLoader extends BulkLoader {
|
||||
*/
|
||||
public $hasHeaderRow = true;
|
||||
|
||||
/**
|
||||
* Number of lines to split large CSV files into.
|
||||
*
|
||||
* @var int
|
||||
*
|
||||
* @config
|
||||
*/
|
||||
private static $lines = 1000;
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
@ -47,8 +56,115 @@ class CsvBulkLoader extends BulkLoader {
|
||||
/**
|
||||
* @param string $filepath
|
||||
* @param boolean $preview
|
||||
*
|
||||
* @return null|BulkLoader_Result
|
||||
*/
|
||||
protected function processAll($filepath, $preview = false) {
|
||||
$files = $this->splitFile($filepath);
|
||||
|
||||
$result = null;
|
||||
$last = null;
|
||||
|
||||
try {
|
||||
foreach ($files as $file) {
|
||||
$last = $file;
|
||||
|
||||
$next = $this->processChunk($file, false);
|
||||
|
||||
if ($result instanceof BulkLoader_Result) {
|
||||
$result->merge($next);
|
||||
} else {
|
||||
$result = $next;
|
||||
}
|
||||
|
||||
@unlink($file);
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
print "Failed to parse {$last}\n";
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Splits a large file up into many smaller files.
|
||||
*
|
||||
* @param string $path Path to large file to split
|
||||
* @param int $lines Number of lines per file
|
||||
*
|
||||
* @return array List of file paths
|
||||
*/
|
||||
protected function splitFile($path, $lines = null) {
|
||||
$previous = ini_get('auto_detect_line_endings');
|
||||
|
||||
ini_set('auto_detect_line_endings', true);
|
||||
|
||||
if (!is_int($lines)) {
|
||||
$lines = $this->config()->get("lines");
|
||||
}
|
||||
|
||||
$new = $this->getNewSplitFileName();
|
||||
|
||||
$to = fopen($new, 'w+');
|
||||
$from = fopen($path, 'r');
|
||||
|
||||
$header = null;
|
||||
|
||||
if ($this->hasHeaderRow) {
|
||||
$header = fgets($from);
|
||||
fwrite($to, $header);
|
||||
}
|
||||
|
||||
$files = array();
|
||||
$files[] = $new;
|
||||
|
||||
$count = 0;
|
||||
|
||||
while (!feof($from)) {
|
||||
fwrite($to, fgets($from));
|
||||
|
||||
$count++;
|
||||
|
||||
if ($count >= $lines) {
|
||||
fclose($to);
|
||||
|
||||
// get a new temporary file name, to write the next lines to
|
||||
$new = $this->getNewSplitFileName();
|
||||
|
||||
$to = fopen($new, 'w+');
|
||||
|
||||
if ($this->hasHeaderRow) {
|
||||
// add the headers to the new file
|
||||
fwrite($to, $header);
|
||||
}
|
||||
|
||||
$files[] = $new;
|
||||
|
||||
$count = 0;
|
||||
}
|
||||
}
|
||||
|
||||
fclose($to);
|
||||
|
||||
ini_set('auto_detect_line_endings', $previous);
|
||||
|
||||
return $files;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
protected function getNewSplitFileName() {
|
||||
return TEMP_FOLDER . '/' . uniqid('BulkLoader', true) . '.csv';
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $filepath
|
||||
* @param boolean $preview
|
||||
*
|
||||
* @return BulkLoader_Result
|
||||
*/
|
||||
protected function processChunk($filepath, $preview = false) {
|
||||
$results = new BulkLoader_Result();
|
||||
|
||||
$csv = new CSVParser(
|
||||
|
@ -201,14 +201,14 @@
|
||||
<div class="field">
|
||||
<label for="admin_username">Email:</label>
|
||||
<span class="middleColumn">
|
||||
<input type="text" class="text configured-by-env" name="admin[username]" id="admin_username" value="<?php echo $adminConfig['username']; ?>" <?php if($usingEnv && defined('SS_DEFAULT_ADMIN_USERNAME')) echo 'disabled="disabled"' ?>>
|
||||
<input type="text" class="text configured-by-env" name="admin[username]" id="admin_username" value="<?php echo htmlspecialchars($adminConfig['username'], ENT_QUOTES, 'UTF-8'); ?>" <?php if($usingEnv && defined('SS_DEFAULT_ADMIN_USERNAME')) echo 'disabled="disabled"' ?>>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label for="admin_password">Password:</label>
|
||||
<span class="middleColumn">
|
||||
<input type="password" class="text configured-by-env" name="admin[password]" id="admin_password" value="<?php echo $adminConfig['password']; ?>" <?php if($usingEnv && defined('SS_DEFAULT_ADMIN_PASSWORD')) echo 'disabled="disabled"' ?>>
|
||||
<input type="password" class="text configured-by-env" name="admin[password]" id="admin_password" value="<?php echo htmlspecialchars($adminConfig['password'], ENT_QUOTES, 'UTF-8'); ?>" <?php if($usingEnv && defined('SS_DEFAULT_ADMIN_PASSWORD')) echo 'disabled="disabled"' ?>>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1540,6 +1540,12 @@ ErrorDocument 404 /assets/error-404.html
|
||||
ErrorDocument 500 /assets/error-500.html
|
||||
|
||||
<IfModule mod_rewrite.c>
|
||||
|
||||
# Turn off index.php handling requests to the homepage fixes issue in apache >=2.4
|
||||
<IfModule mod_dir.c>
|
||||
DirectoryIndex disabled
|
||||
</IfModule>
|
||||
|
||||
SetEnv HTTP_MOD_REWRITE On
|
||||
RewriteEngine On
|
||||
$baseClause
|
||||
|
49
docs/en/04_Changelogs/3.1.14.md
Normal file
49
docs/en/04_Changelogs/3.1.14.md
Normal file
@ -0,0 +1,49 @@
|
||||
# 3.1.14
|
||||
|
||||
<!--- Changes below this line will be automatically regenerated -->
|
||||
|
||||
## Change Log
|
||||
|
||||
### Security
|
||||
|
||||
* 2015-09-07 [d8fd64c](https://github.com/silverstripe/silverstripe-framework/commit/d8fd64c3e25dbf500615ecbbe9580e234e1730d4) Fix XSS in install.php (Damian Mooyman) - See [ss-2015-016](http://www.silverstripe.org/software/download/security-releases/ss-2015-016)
|
||||
* 2015-09-07 [7192932](https://github.com/silverstripe/silverstripe-framework/commit/7192932022510d830d1fc2373a9edb80fee24f48) Fix insecure returnURL in DatabaseAdmin (Damian Mooyman) - See [ss-2015-015](http://www.silverstripe.org/software/download/security-releases/ss-2015-015)
|
||||
* 2015-09-07 [7367cf5](https://github.com/silverstripe/silverstripe-framework/commit/7367cf54c4069a8e296fafb511fb28e27a8efd7e) Prevent possible Privilege escalation (Damian Mooyman) - See [ss-2015-020](http://www.silverstripe.org/software/download/security-releases/ss-2015-020)
|
||||
|
||||
### API Changes
|
||||
|
||||
* 2015-01-28 [782c4cb](https://github.com/silverstripe/silverstripe-framework/commit/782c4cbf6f5cde2fa4d45cdbd17552773a67f88f) Enable single-column fulltext filter search as fallback (Damian Mooyman)
|
||||
|
||||
### Bugfixes
|
||||
|
||||
* 2015-09-07 [45b22c7](https://github.com/silverstripe/silverstripe-framework/commit/45b22c788eeb5d7501844ceb19395cc4e15e61b6) Fix missing framework/admin/tests (Damian Mooyman)
|
||||
* 2015-08-27 [899eb0b](https://github.com/silverstripe/silverstripe-framework/commit/899eb0b235859c843890c790e99c03f4fd4b825c) Use complete fieldlist for extracting data (Daniel Hensby)
|
||||
* 2015-08-26 [2d4b743](https://github.com/silverstripe/silverstripe-framework/commit/2d4b743090935e7c10bd95e00398df7bfb5763af) Members can access their own profiles in CMS (Daniel Hensby)
|
||||
* 2015-08-26 [0943b3b](https://github.com/silverstripe/silverstripe-framework/commit/0943b3b1a06e6c9130500532fd979c720b65c761) Recursion errors when sorting objects with circular dependencies (fixes #4464) (Loz Calver)
|
||||
* 2015-08-20 [fc212e0](https://github.com/silverstripe/silverstripe-framework/commit/fc212e030c474d966ffb1821423ddcb3ae361b72) Fix illegalExtensions breaking tests. (Damian Mooyman)
|
||||
* 2015-08-18 [8b638f5](https://github.com/silverstripe/silverstripe-framework/commit/8b638f56fb737dac18126c291297c87469eb7d0f) Using undefined var in ModelAdmin (Loz Calver)
|
||||
* 2015-07-26 [5f5ce8a](https://github.com/silverstripe/silverstripe-framework/commit/5f5ce8a82c2bb1a29f9f8b7011d5cd990c34f128) Disable cache to prevent caching of build target (Damian Mooyman)
|
||||
* 2015-07-16 [a3201d6](https://github.com/silverstripe/silverstripe-framework/commit/a3201d6ed9967179aa020802e6fb88d2a6a0e37e) $callerClass is undefined (Christopher Darling)
|
||||
* 2015-07-08 [c7bd504](https://github.com/silverstripe/silverstripe-framework/commit/c7bd50427a4e0ad446502547b81648d78d354062) Fix cookie errors when running in CLI (Damian Mooyman)
|
||||
* 2015-07-07 [5ace490](https://github.com/silverstripe/silverstripe-framework/commit/5ace4905c90be1373f49dbb0e1a579b279786a1c) Fix issue when SS_ALLOWED_HOSTS is run in CLI (Damian Mooyman)
|
||||
* 2015-07-05 [a556b48](https://github.com/silverstripe/silverstripe-framework/commit/a556b4854a44b9dfe86c40140ec03d781d354d19) Fix of multiple i18nTextCollector issues: #3797, #3798, #3417 (Damian Mooyman)
|
||||
* 2015-07-01 [6fabd01](https://github.com/silverstripe/silverstripe-framework/commit/6fabd0122be37faa671923b534a74e5684d58220) Fix potential XSS injection (Damian Mooyman)
|
||||
* 2015-06-26 [d78d325](https://github.com/silverstripe/silverstripe-cms/commit/d78d3250736c5d2f48c5cfc1690fba8b98cc222b) RedirectorPage_Controller shouldn't attempt redirection if the response is finished (fixes #1230) (Loz Calver)
|
||||
* 2015-06-18 [f7f92b3](https://github.com/silverstripe/silverstripe-installer/commit/f7f92b32260f31a5969dde4b1d8c55d81c289056) Invalid comment syntax for web.config (Daniel Hensby)
|
||||
* 2015-06-16 [6169bf2](https://github.com/silverstripe/silverstripe-framework/commit/6169bf2760366b0aebf255c973803621472ce1fb) No longer caching has_one after ID change (Daniel Hensby)
|
||||
* 2015-06-11 [6be0488](https://github.com/silverstripe/silverstripe-framework/commit/6be04887315522e5b95b83be1e301691441b985c) TreeDropdownField doesnt change label on unselect (Daniel Hensby)
|
||||
* 2015-05-28 [0319f78](https://github.com/silverstripe/silverstripe-framework/commit/0319f7855bc4e8a6eb71d2766ac24a7d760d502e) Incorrect env setting in 3.1.13 (Damian Mooyman)
|
||||
* 2015-05-22 [e0710ae](https://github.com/silverstripe/silverstripe-framework/commit/e0710ae4e4a03c191b841cc45a6c103a0e21ec7f) Fix DirectorTest failing when run with sake (Damian Mooyman)
|
||||
* 2015-05-20 [94f6a13](https://github.com/silverstripe/silverstripe-framework/commit/94f6a137297d6638065583c388dffeeb9eccb55b) Fixed setting LastEdited for DataObject with class ancestry (Gregory Smirnov)
|
||||
* 2015-05-20 [869e69a](https://github.com/silverstripe/silverstripe-framework/commit/869e69a9b2c1352e1fa6246432d9180eb81cf7e3) Clicking icon in site tree link fails (Jonathon Menz)
|
||||
* 2015-05-20 [f9bdf61](https://github.com/silverstripe/silverstripe-framework/commit/f9bdf61b6f4cdd2f55ff2729a5b6be0a200f876a) Fixed handling of numbers in certain locales (Gregory Smirnov)
|
||||
* 2015-05-19 [dbe2ad4](https://github.com/silverstripe/silverstripe-cms/commit/dbe2ad4f9fe818fe21755eff2ecf8d359c578736) Folder expansion icons (Jonathon Menz)
|
||||
* 2015-05-19 [a56d08b](https://github.com/silverstripe/silverstripe-framework/commit/a56d08b1aeeb0a2dfc16e134ddc3bd7b699bd606) TreeDropdownField Folder expansion (Jonathon Menz)
|
||||
* 2015-05-16 [c6bcfea](https://github.com/silverstripe/silverstripe-framework/commit/c6bcfea3e36a4211d2f69ff5c73db2fcab474ba8) FieldList::changeFieldOrder() leftovers discarded (Jonathon Menz)
|
||||
* 2015-05-04 [1cca37c](https://github.com/silverstripe/silverstripe-framework/commit/1cca37c9082ef53f02633d1bdac27f4a815d4208) File::getFileType() was case sensitive (fixes #3631) (Loz Calver)
|
||||
* 2015-04-01 [7ff131d](https://github.com/silverstripe/silverstripe-framework/commit/7ff131daa76d345cff90410469accdcca9049cf1) Fix default casted (boolean)false evaluating to true in templates (Damian Mooyman)
|
||||
* 2014-12-31 [71a14c3](https://github.com/silverstripe/silverstripe-framework/commit/71a14c30352e69e4c0ac59e5ea72e1da0c79009b) Prevent url= querystring argument override (Damian Mooyman)
|
||||
* 2014-10-25 [28be51c](https://github.com/silverstripe/silverstripe-framework/commit/28be51cab0b567b692632503e0f440d30a2fe09e) Config state leaking between unit tests (Loz Calver)
|
||||
* 2014-09-20 [bbc1cb8](https://github.com/silverstripe/silverstripe-framework/commit/bbc1cb82702b678b21bef15394f067c146e47625) #3458 iframe transport multi file upload FIX #3343, FIX #3148 (Thierry François)
|
||||
* 2014-05-25 [40c5b8b](https://github.com/silverstripe/silverstripe-framework/commit/40c5b8b6758676a3e2a5daf3c438a7720c49baaf) FulltextFilter did not work and was not usable (micmania1)
|
||||
* 2014-03-24 [fd755a7](https://github.com/silverstripe/silverstripe-framework/commit/fd755a7ff9de69802f04763570f69e4c3b68c08c) ChangePasswordForm validation message should render HTML correctly. (Sean Harvey)
|
@ -316,6 +316,8 @@
|
||||
indicator.remove();
|
||||
},
|
||||
success: function(data, status, xhr) {
|
||||
if (!data || $.isEmptyObject(data)) return;
|
||||
|
||||
self.fileupload('attach', {
|
||||
files: data,
|
||||
options: self.fileupload('option'),
|
||||
|
@ -230,7 +230,6 @@ af:
|
||||
DELETED: Was verwyder
|
||||
DropdownBatchActionsDefault: Aksies
|
||||
PERMAGAIN: 'Jy is uit die IBS uitgeteken. As jy weer wil inteken, moet jy ''n gebruikersnaam en wagwoord onder in tik'
|
||||
PLEASESAVE: 'Stoor asseblief die bladsy: Die bladsy kon nie opgedateer word nie omdat dit nog nie gestoor is nie'
|
||||
PreviewButton: Beskou
|
||||
REORGANISATIONSUCCESSFUL: 'Die ''site tree'' is suksesvol geheorganiseer'
|
||||
SAVEDUP: Gestoor
|
||||
|
@ -263,8 +263,6 @@ ar:
|
||||
FROMWEB: 'من الإنترنت'
|
||||
FindInFolder: 'ابحث في المجلد'
|
||||
IMAGEALT: 'النص البديل (بديل)'
|
||||
IMAGEALTTEXT: 'النص البديل (ألت) - يظهر إذا كان لا يمكن عرض الصورة'
|
||||
IMAGEALTTEXTDESC: 'تبين قارئي الشاشة أو إذا لم يمكن عرض الصورة'
|
||||
IMAGEDIMENSIONS: الأبعاد
|
||||
IMAGEHEIGHTPX: الطول
|
||||
IMAGETITLE: 'العنوان - لإضافة معلومات إلى الصورة'
|
||||
|
@ -291,8 +291,6 @@ cs:
|
||||
FROMWEB: 'Z webu'
|
||||
FindInFolder: 'Hledat ve složce'
|
||||
IMAGEALT: 'Alternativní text (alt)'
|
||||
IMAGEALTTEXT: 'Alternativní text (alt) - ukáže se, když obrázek nemúže být zobrazen'
|
||||
IMAGEALTTEXTDESC: 'Zobrazeno na obrazovce, anebo když obrázek nemůže být zobrazen'
|
||||
IMAGEDIMENSIONS: Rozměry
|
||||
IMAGEHEIGHTPX: Výška
|
||||
IMAGETITLE: 'Titul text (tooltip) - další informace o obrázku'
|
||||
@ -327,9 +325,7 @@ cs:
|
||||
DELETED: Smazáno.
|
||||
DropdownBatchActionsDefault: Akcie
|
||||
HELP: Nápověda
|
||||
PAGETYPE: 'Typ stránky'
|
||||
PERMAGAIN: 'Byli jste odhlášeni z CMS. Pokud se chcete znovu přihlásit, zadejte níže své uživatelské jméno a heslo.'
|
||||
PLEASESAVE: 'Uložte stránku, prosím. Tato stránka nemůže být aktualizována, protože ještě nebyla uložena.'
|
||||
PreviewButton: Náhled
|
||||
REORGANISATIONSUCCESSFUL: 'Strom webu reorganizován úspěšně.'
|
||||
SAVEDUP: Uloženo.
|
||||
|
@ -291,8 +291,6 @@ de:
|
||||
FROMWEB: 'Aus dem Web'
|
||||
FindInFolder: 'In Ordner suchen'
|
||||
IMAGEALT: 'Alternativtext (alt)'
|
||||
IMAGEALTTEXT: 'Alternativtext (alt) - erscheint, falls das Bild nicht angezeigt werden kann.'
|
||||
IMAGEALTTEXTDESC: 'Wird von Screenreadern vorgelesen oder angezeigt, falls das Bild nicht angezeigt werden kann.'
|
||||
IMAGEDIMENSIONS: Dimensionen
|
||||
IMAGEHEIGHTPX: Höhe (px)
|
||||
IMAGETITLE: 'Titeltext (Tooltip) - für zusätzliche Informationen über das Bild'
|
||||
@ -327,9 +325,7 @@ de:
|
||||
DELETED: Gelöscht.
|
||||
DropdownBatchActionsDefault: Aktionen
|
||||
HELP: Hilfe
|
||||
PAGETYPE: 'Seitentyp'
|
||||
PERMAGAIN: 'Sie wurden aus dem System ausgeloggt. Falls Sie sich wieder einloggen möchten, geben Sie bitte Benutzernamen und Passwort im untenstehenden Formular an.'
|
||||
PLEASESAVE: 'Diese Seite konnte nicht aktualisiert werden weil sie noch nicht gespeichert wurde - bitte speichern.'
|
||||
PreviewButton: Vorschau
|
||||
REORGANISATIONSUCCESSFUL: 'Der Seitenbaum wurde erfolgreich sortiert.'
|
||||
SAVEDUP: Gespeichert.
|
||||
|
@ -292,8 +292,8 @@ en:
|
||||
FROMWEB: 'From the web'
|
||||
FindInFolder: 'Find in Folder'
|
||||
IMAGEALT: 'Alternative text (alt)'
|
||||
IMAGEALTTEXT: 'Alternative text (alt) - shown if image can''t be displayed'
|
||||
IMAGEALTTEXTDESC: 'Shown to screen readers or if image can''t be displayed'
|
||||
IMAGEALTTEXT: 'Alternative text (alt) - shown if image cannot be displayed'
|
||||
IMAGEALTTEXTDESC: 'Shown to screen readers or if image can not be displayed'
|
||||
IMAGEDIMENSIONS: Dimensions
|
||||
IMAGEHEIGHTPX: Height
|
||||
IMAGETITLE: 'Title text (tooltip) - for additional information about the image'
|
||||
@ -328,11 +328,11 @@ en:
|
||||
DELETED: Deleted.
|
||||
DropdownBatchActionsDefault: Actions
|
||||
HELP: Help
|
||||
PAGETYPE: 'Page type'
|
||||
PAGETYPE: 'Page type: '
|
||||
PERMAGAIN: 'You have been logged out of the CMS. If you would like to log in again, enter a username and password below.'
|
||||
PERMALREADY: 'I''m sorry, but you can''t access that part of the CMS. If you want to log in as someone else, do so below.'
|
||||
PERMDEFAULT: 'You must be logged in to access the administration area; please enter your credentials below.'
|
||||
PLEASESAVE: 'Please Save Page: This page could not be updated because it hasn''t been saved yet.'
|
||||
PLEASESAVE: 'Please Save Page: This page could not be upated because it hasn''t been saved yet.'
|
||||
PreviewButton: Preview
|
||||
REORGANISATIONSUCCESSFUL: 'Reorganised the site tree successfully.'
|
||||
SAVEDUP: Saved.
|
||||
|
@ -291,8 +291,6 @@ eo:
|
||||
FROMWEB: 'El la TTT'
|
||||
FindInFolder: 'Serĉi en dosierujo'
|
||||
IMAGEALT: 'Alternativa teksto (alt)'
|
||||
IMAGEALTTEXT: 'Alternativa teksto (alt) - vidiĝas se ne eblas vidigi bildon'
|
||||
IMAGEALTTEXTDESC: 'Vidiĝas se ne eblas vidigi bildon'
|
||||
IMAGEDIMENSIONS: Dimensioj
|
||||
IMAGEHEIGHTPX: Alto
|
||||
IMAGETITLE: 'Titola teksto (ŝpruchelpilo) - por plua informo pri la bildo'
|
||||
@ -328,7 +326,6 @@ eo:
|
||||
DropdownBatchActionsDefault: Agoj
|
||||
HELP: Helpo
|
||||
PERMAGAIN: 'Vin adiaŭis la CMS. Se vi volas denove saluti, enigu salutnomon kaj pasvorton malsupre.'
|
||||
PLEASESAVE: 'Bonvolu konservi paĝon: ne povis ĝisdatigi ĉi tiun paĝon ĉar ĝi ankoraŭ estas nekonservita.'
|
||||
PreviewButton: Antaŭvido
|
||||
REORGANISATIONSUCCESSFUL: 'Sukcese reorganizis la retejan arbon.'
|
||||
SAVEDUP: Konservita.
|
||||
|
@ -290,8 +290,6 @@ es:
|
||||
FROMWEB: 'Desde la web'
|
||||
FindInFolder: 'Buscar en carpeta'
|
||||
IMAGEALT: 'Texto alternativo (alt)'
|
||||
IMAGEALTTEXT: 'Texto alternativo (alt) - es mostrado si la imagen no puede ser visualizada'
|
||||
IMAGEALTTEXTDESC: 'Texto alternativo (desc) - es mostrado si la imagen no puede ser visualizada o a los lectores de pantalla'
|
||||
IMAGEDIMENSIONS: Dimensiones
|
||||
IMAGEHEIGHTPX: Alto
|
||||
IMAGETITLE: 'Texto del título (tooltip) - para obtener más información acerca de la imagen'
|
||||
@ -326,9 +324,7 @@ es:
|
||||
DELETED: Borrado
|
||||
DropdownBatchActionsDefault: Acciones
|
||||
HELP: Ayuda
|
||||
PAGETYPE: 'Tipo de página'
|
||||
PERMAGAIN: 'Ha sido desconectado del CMS. Si quiere volver a entrar, introduzca su nombre de usuario y contraseña a continuación.'
|
||||
PLEASESAVE: 'Por favor guarde la página: Esta página no se ha podido actualizar porque aún no ha sido guardada.'
|
||||
PreviewButton: Vista previa
|
||||
REORGANISATIONSUCCESSFUL: 'Reorganizado el árbol del sitio con éxito.'
|
||||
SAVEDUP: Guardado
|
||||
|
@ -240,7 +240,6 @@ et_EE:
|
||||
FROMWEB: 'Veebist'
|
||||
FindInFolder: 'Otsi kaustast'
|
||||
IMAGEALT: 'Asetekst (alt)'
|
||||
IMAGEALTTEXT: 'Asetekst (alt) – kuvatakse, kui kujutist ei ole võimalik kuvada'
|
||||
IMAGEDIMENSIONS: Mõõtmed
|
||||
IMAGEHEIGHTPX: Laius
|
||||
IMAGETITLE: 'Pealkirja tekst (kohtspikker) – lisateabeks kujutise kohta'
|
||||
|
@ -291,8 +291,6 @@ fi:
|
||||
FROMWEB: 'Webistä'
|
||||
FindInFolder: 'Etsi kansiosta'
|
||||
IMAGEALT: 'Vaihtoehtoinen teksti (alt)'
|
||||
IMAGEALTTEXT: 'Vaihtoehtoinen teksti (alt) - näytetään jos kuvaa ei voida näyttää'
|
||||
IMAGEALTTEXTDESC: 'Näytetään ruudunlukuohjelmille tai jos kuvia ei voi näyttää'
|
||||
IMAGEDIMENSIONS: Mitat
|
||||
IMAGEHEIGHTPX: Korkeus
|
||||
IMAGETITLE: 'Otsikko (tooltip) - kuvan lisätietoja varten'
|
||||
@ -328,7 +326,6 @@ fi:
|
||||
DropdownBatchActionsDefault: Toimenpiteet
|
||||
HELP: Ohje
|
||||
PERMAGAIN: 'Olet kirjautunut ulos CMS:stä. Jos haluat kirjautua uudelleen sisään, syötä käyttäjätunnuksesi ja salasanasi alla.'
|
||||
PLEASESAVE: 'Tallenna sivu: tätä sivua ei voida päivittää, koska sitä ei ole vielä tallennettu.'
|
||||
PreviewButton: Esikatselu
|
||||
REORGANISATIONSUCCESSFUL: 'Hakemistopuu järjestettiin uudelleen onnistuneesti.'
|
||||
SAVEDUP: Tallennettu.
|
||||
|
@ -263,8 +263,6 @@ fr:
|
||||
FROMWEB: 'Du web'
|
||||
FindInFolder: 'Trouver dans un dossier'
|
||||
IMAGEALT: 'Texte alternatif (alt)'
|
||||
IMAGEALTTEXT: 'Texte alternatif (alt) - s''affiche si l''image ne peut être affichée.'
|
||||
IMAGEALTTEXTDESC: 'Proposé aux lecteurs d’écran ou si l’image ne peut pas être affichée'
|
||||
IMAGEDIMENSIONS: Dimensions
|
||||
IMAGEHEIGHTPX: Hauteur
|
||||
IMAGETITLE: 'Texte du titre (tooltip) - informations à propos de l''image'
|
||||
|
@ -291,8 +291,6 @@ id:
|
||||
FROMWEB: 'Dari situs lain'
|
||||
FindInFolder: 'Temukan di Folder'
|
||||
IMAGEALT: 'Teks alternatif (alt)'
|
||||
IMAGEALTTEXT: 'Teks alternatif (alt) - pengganti jika gambar tidak tampil'
|
||||
IMAGEALTTEXTDESC: 'Tampil ke pembaca layar, atau jika gambar tidak tampil'
|
||||
IMAGEDIMENSIONS: Dimensi
|
||||
IMAGEHEIGHTPX: Tinggi
|
||||
IMAGETITLE: 'Teks judul (tooltip) - untuk informasi tambahan tentang gambar'
|
||||
@ -328,7 +326,6 @@ id:
|
||||
DropdownBatchActionsDefault: Tindakan
|
||||
HELP: Bantuan
|
||||
PERMAGAIN: 'Anda telah keluar dari situs. Jika ingin kembali masuk, isikan nama pengguna dan kata kunci di bawah ini.'
|
||||
PLEASESAVE: 'Mohon Simpan Laman: Laman ini tidak dapat diperbarui karena belum disimpan.'
|
||||
PreviewButton: Pratinjau
|
||||
REORGANISATIONSUCCESSFUL: 'Pengaturan ulang struktur situs berhasil.'
|
||||
SAVEDUP: Tersimpan.
|
||||
|
@ -291,8 +291,6 @@ id_ID:
|
||||
FROMWEB: 'Dari situs lain'
|
||||
FindInFolder: 'Temukan di Folder'
|
||||
IMAGEALT: 'Teks alternatif (alt)'
|
||||
IMAGEALTTEXT: 'Teks alternatif (alt) - pengganti jika gambar tidak tampil'
|
||||
IMAGEALTTEXTDESC: 'Tampil ke pembaca layar, atau jika gambar tidak tampil'
|
||||
IMAGEDIMENSIONS: Dimensi
|
||||
IMAGEHEIGHTPX: Tinggi
|
||||
IMAGETITLE: 'Teks judul (tooltip) - untuk informasi tambahan tentang gambar'
|
||||
@ -328,7 +326,6 @@ id_ID:
|
||||
DropdownBatchActionsDefault: Tindakan
|
||||
HELP: Bantuan
|
||||
PERMAGAIN: 'Anda telah keluar dari situs. Jika ingin kembali masuk, isikan nama pengguna dan kata kunci di bawah ini.'
|
||||
PLEASESAVE: 'Mohon Simpan Laman: Laman ini tidak dapat diperbarui karena belum disimpan.'
|
||||
PreviewButton: Pratinjau
|
||||
REORGANISATIONSUCCESSFUL: 'Pengaturan ulang struktur situs berhasil.'
|
||||
SAVEDUP: Tersimpan.
|
||||
|
@ -291,8 +291,6 @@ it:
|
||||
FROMWEB: 'Dal web'
|
||||
FindInFolder: 'Trova nella Cartella'
|
||||
IMAGEALT: 'Testo alternativo (alt)'
|
||||
IMAGEALTTEXT: 'Testo alternativo (alt) - mostrato se l''immagine non può essere mostrata.'
|
||||
IMAGEALTTEXTDESC: 'Mostrato agli screen reader o se l''immagine non può essere visualizzata'
|
||||
IMAGEDIMENSIONS: Dimensioni
|
||||
IMAGEHEIGHTPX: Altezza
|
||||
IMAGETITLE: 'Titolo (tooltip) - per informazioni aggiuntive sull''immagine.'
|
||||
@ -327,9 +325,7 @@ it:
|
||||
DELETED: Eliminato.
|
||||
DropdownBatchActionsDefault: Azioni
|
||||
HELP: Aiuto
|
||||
PAGETYPE: 'Tipo di pagina'
|
||||
PERMAGAIN: 'Sei stato disconnesso dal CMS. Se desideri autenticarti nuovamente, inserisci qui sotto nome utente e password.'
|
||||
PLEASESAVE: 'Per favore salvare la pagina: potrebbe non venire aggiornata perché non è ancora stata salvata.'
|
||||
PreviewButton: Anteprima
|
||||
REORGANISATIONSUCCESSFUL: 'Albero del sito riorganizzato con successo.'
|
||||
SAVEDUP: Salvato.
|
||||
|
@ -261,8 +261,6 @@ ja:
|
||||
FROMWEB: 'Webから'
|
||||
FindInFolder: 'フォルダ内を探す'
|
||||
IMAGEALT: '代替テキスト(Alt)'
|
||||
IMAGEALTTEXT: '代替(Alt)テキスト - 画像が表示されなかった場合に表示されます'
|
||||
IMAGEALTTEXTDESC: 'スクリーンリーダー利用者やイメージが表示されなかった場合に表示されます'
|
||||
IMAGEDIMENSIONS: サイズ
|
||||
IMAGEHEIGHTPX: 高さ
|
||||
IMAGETITLE: 'タイトル(ツールチップ)テキスト - 画像に対する追加的情報'
|
||||
|
@ -260,7 +260,6 @@ lt:
|
||||
many_many_Members: Vartotojai
|
||||
GroupImportForm:
|
||||
Help1: '<p>Importuoti vieną ar kelias grupes <em>CSV</em> formatu (kableliu atskirtos reikšmės). <small><a href="#" class="toggle-advanced">Rodyti detalesnį aprašymą</a></small></p>'
|
||||
Help2: '<div class="advanced"><h4>Detalesnis aprašymas</h4><ul><li>Galimi stulpeliai: <em>%s</em></li><li>Esamos grupės yra surandamos su jų unikalia <em>Code</em> reikšme ir atnaujinamos duomenimis iš importuojamos bylos.</li><li>Grupių hierarchija gali būti sukurta naudojant <em>ParentCode</em> stulpelį.</li><li>Leidimų kodai gali būti priskirti naudojant <em>PermissionCode</em> stulpelį. Esami leidimai nebus pakeisti.</li></ul></div>'
|
||||
ResultCreated: 'Sukurta {count} grupių'
|
||||
ResultDeleted: 'Ištrinta %d grupių'
|
||||
ResultUpdated: 'Atnaujinta %d grupių'
|
||||
@ -292,8 +291,6 @@ lt:
|
||||
FROMWEB: 'Iš interneto'
|
||||
FindInFolder: 'Rasti kataloge'
|
||||
IMAGEALT: 'Alternatyvus tekstas (alt)'
|
||||
IMAGEALTTEXT: 'Alternatyvus tekstas (alt) - rodomas, jeigu nepavyko parodyti paveikslėlio'
|
||||
IMAGEALTTEXTDESC: 'Rodomas, jeigu nepavyko parodyti paveikslėlio'
|
||||
IMAGEDIMENSIONS: Matmenys
|
||||
IMAGEHEIGHTPX: Aukštis
|
||||
IMAGETITLE: 'Pavadinimo tekstas (tooltip) - papildomai informacijai apie paveikslėlį'
|
||||
@ -328,11 +325,9 @@ lt:
|
||||
DELETED: Ištrinta.
|
||||
DropdownBatchActionsDefault: Veiksmai
|
||||
HELP: Pagalba
|
||||
PAGETYPE: 'Puslapio tipas'
|
||||
PERMAGAIN: 'Jūs atsijungėte. Norėdami vėl prisijungti, įveskite savo duomenis į žemiau esančius laukelius.'
|
||||
PERMALREADY: 'Deja, bet Jūs negalite patekti į šią TVS dalį. Jeigu norite prisijungti kitu vartotoju, tai atlikite žemiau.'
|
||||
PERMDEFAULT: 'Jūs turite būti prisijungę, norėdami pasiekti administravimo zoną; prašome suvesti prisijungimo duomenis į žemiau esančius laukelius.'
|
||||
PLEASESAVE: 'Prašome išsaugoti puslapį: Šis puslapis negali būti atnaujintas, nes jis dar nėra išsaugotas.'
|
||||
PreviewButton: Peržiūra
|
||||
REORGANISATIONSUCCESSFUL: 'Puslapių medis pertvarkytas sėkmingai.'
|
||||
SAVEDUP: Išsaugota.
|
||||
@ -420,7 +415,6 @@ lt:
|
||||
Toggle: 'Rodyti formatavimo aprašymą'
|
||||
MemberImportForm:
|
||||
Help1: '<p>Importuoti vartotojus <em>CSV</em> formatu (kableliu atskirtos reikšmės). <small><a href="#" class="toggle-advanced">Rodyti detalesnį aprašymą</a></small></p>'
|
||||
Help2: '<div class="advanced"><h4>Detalesnis aprašymas</h4><ul><li>Galimi stulpeliai: <em>%s</em></li><li>Esami vartotojai yra surandami su jų unikalia <em>Code</em> reikšme ir atnaujinami duomenimis iš importuojamos bylos.</li><li>Grupės gali būti priskirtos naudojant <em>Groups</em> column. stulpelį. Grupės yra atpažįstamos pagal <em>Code</em> stulpelį, kelios grupės nurodomos per kablelį. Jau priskirtos vartotojui grupės nebus pakeistos.</li></ul></div>'
|
||||
ResultCreated: 'Sukurta {count} vartotojų'
|
||||
ResultDeleted: 'Ištrinta %d vartotojų'
|
||||
ResultNone: 'Nėra jokių pakeitimų'
|
||||
|
@ -263,8 +263,6 @@ mi:
|
||||
FROMWEB: 'Mai i te tukutuku'
|
||||
FindInFolder: 'Rapu i te Kōpaki'
|
||||
IMAGEALT: 'Tuhinga kē (alt)'
|
||||
IMAGEALTTEXT: 'Kuputuhi kē (alt) - ka whakaaturia ki te kore e taea te atahanga te whakaatu'
|
||||
IMAGEALTTEXTDESC: 'Ka whakaaturia ki ngā pūpānui mata ki te kore e taea te atahanga te whakaatu'
|
||||
IMAGEDIMENSIONS: Ngā Rahinga
|
||||
IMAGEHEIGHTPX: Teitei
|
||||
IMAGETITLE: 'Tuhinga taitara (ākiutauta) - mō ngā mōhiohio tāpiri mō te atahanga'
|
||||
|
@ -265,8 +265,6 @@ nb:
|
||||
FROMWEB: 'Fra internett'
|
||||
FindInFolder: 'Finn i mappe'
|
||||
IMAGEALT: 'Alternativ tekst (alt)'
|
||||
IMAGEALTTEXT: 'Alternativ tekst (alt) - blir brukt hvis bildet ikke kan vises'
|
||||
IMAGEALTTEXTDESC: 'Blir vist til skjermlesere eller hvis bildet ikke kan vises'
|
||||
IMAGEDIMENSIONS: Dimensjoner
|
||||
IMAGEHEIGHTPX: Høyde
|
||||
IMAGETITLE: 'Titteltekst (tooltip) - for tilleggsinformasjon om bildet'
|
||||
|
@ -266,8 +266,6 @@ nl:
|
||||
FROMWEB: 'Vanaf een website'
|
||||
FindInFolder: 'Zoek in map'
|
||||
IMAGEALT: 'Alternatieve tekst (alt tekst)'
|
||||
IMAGEALTTEXT: 'Alternatieve tekst (alt-tekst) - wordt gebruikt als de afbeelding niet geladen kan worden '
|
||||
IMAGEALTTEXTDESC: 'Voor schermlezers, of als de afbeelding niet weergegeven kan worden '
|
||||
IMAGEDIMENSIONS: Dimensies
|
||||
IMAGEHEIGHTPX: Hoogte
|
||||
IMAGETITLE: 'Tooltip (title) - Toon extra informatie over de afbeelding'
|
||||
|
@ -265,8 +265,6 @@ pl:
|
||||
FROMWEB: 'Z WWW'
|
||||
FindInFolder: 'Znajdź w Folderze'
|
||||
IMAGEALT: 'Tekst alternatywny (alt)'
|
||||
IMAGEALTTEXT: 'Alternatywny tekst (alt) - pokazuje się gdy zdjęcie nie może się wyświetlić'
|
||||
IMAGEALTTEXTDESC: 'Używane przez czytniki ekranu lub gdy obraz nie może zostać wyświetlony'
|
||||
IMAGEDIMENSIONS: Rozmiar
|
||||
IMAGEHEIGHTPX: Wysokość (px)
|
||||
IMAGETITLE: 'Tytuł (tooltip) - dodatkowe informacje o obrazku'
|
||||
|
@ -265,8 +265,6 @@ ru:
|
||||
FROMWEB: 'Из интернета'
|
||||
FindInFolder: 'Найти в папке'
|
||||
IMAGEALT: 'Альтернативный текст (alt)'
|
||||
IMAGEALTTEXT: 'Альтернативный текст (alt) - показывается, если изображение недоступно'
|
||||
IMAGEALTTEXTDESC: 'Передается программе чтения экрана или отображается, если изображение недоступно'
|
||||
IMAGEDIMENSIONS: Размеры
|
||||
IMAGEHEIGHTPX: Высота
|
||||
IMAGETITLE: 'Текст (всплывающая подсказка) - для дополнительной информации об изображении'
|
||||
|
@ -291,8 +291,6 @@ sk:
|
||||
FROMWEB: 'Z webu'
|
||||
FindInFolder: 'Vyhľadať v priečinku'
|
||||
IMAGEALT: 'Atlernatívny text (alt)'
|
||||
IMAGEALTTEXT: 'Atlernatívny text (alt) - zobrazí sa ak obrázok nemože byť zobrazený '
|
||||
IMAGEALTTEXTDESC: 'Zobrazí sa na obrazovke, ak obrázok nemôže byť zobrazený'
|
||||
IMAGEDIMENSIONS: Rozmery
|
||||
IMAGEHEIGHTPX: Výška
|
||||
IMAGETITLE: 'Text titulky (tooltip) - pre doplňujúce informácie o obrázku'
|
||||
@ -327,9 +325,7 @@ sk:
|
||||
DELETED: Zmazané.
|
||||
DropdownBatchActionsDefault: Akcie
|
||||
HELP: Pomoc
|
||||
PAGETYPE: 'Typ stránky'
|
||||
PERMAGAIN: 'Boli ste odhlásený'
|
||||
PLEASESAVE: 'Uložte stránku, prosím. Táto stránka nemôže byť aktualizovaná, pretože eště nebola uložená.'
|
||||
PreviewButton: Náhľad
|
||||
REORGANISATIONSUCCESSFUL: 'Strom webu bol reorganizovaný úspešne.'
|
||||
SAVEDUP: Uložené.
|
||||
|
@ -265,8 +265,6 @@ sr:
|
||||
FROMWEB: 'Са веба'
|
||||
FindInFolder: 'Пронађи у фасцикли'
|
||||
IMAGEALT: 'Алтернативни текст (alt)'
|
||||
IMAGEALTTEXT: 'Алтернативни текст (alt) - приказује се ако слика не може бити приказана'
|
||||
IMAGEALTTEXTDESC: 'Приказује се читачима екрана или ако слика не може бити приказана'
|
||||
IMAGEDIMENSIONS: Димензије
|
||||
IMAGEHEIGHTPX: Висина
|
||||
IMAGETITLE: 'Текст наслова (tooltip) - за додатне информације о слици'
|
||||
|
@ -265,8 +265,6 @@ sr@latin:
|
||||
FROMWEB: 'Sa veba'
|
||||
FindInFolder: 'Pronađi u fascikli'
|
||||
IMAGEALT: 'Alternativni tekst (alt)'
|
||||
IMAGEALTTEXT: 'Alternativni tekst (alt) - prikazuje se ako slika ne može biti prikazana'
|
||||
IMAGEALTTEXTDESC: 'Prikazuje se čitačima ekrana ili ako slika ne može biti prikazana'
|
||||
IMAGEDIMENSIONS: Dimenzije
|
||||
IMAGEHEIGHTPX: Visina
|
||||
IMAGETITLE: 'Tekst naslova (tooltip) - za dodatne informacije o slici'
|
||||
|
@ -265,8 +265,6 @@ sr_RS:
|
||||
FROMWEB: 'Са веба'
|
||||
FindInFolder: 'Пронађи у фасцикли'
|
||||
IMAGEALT: 'Алтернативни текст (alt)'
|
||||
IMAGEALTTEXT: 'Алтернативни текст (alt) - приказује се ако слика не може бити приказана'
|
||||
IMAGEALTTEXTDESC: 'Приказује се читачима екрана или ако слика не може бити приказана'
|
||||
IMAGEDIMENSIONS: Димензије
|
||||
IMAGEHEIGHTPX: Висина
|
||||
IMAGETITLE: 'Текст наслова (tooltip) - за додатне информације о слици'
|
||||
|
@ -265,8 +265,6 @@ sr_RS@latin:
|
||||
FROMWEB: 'Sa veba'
|
||||
FindInFolder: 'Pronađi u fascikli'
|
||||
IMAGEALT: 'Alternativni tekst (alt)'
|
||||
IMAGEALTTEXT: 'Alternativni tekst (alt) - prikazuje se ako slika ne može biti prikazana'
|
||||
IMAGEALTTEXTDESC: 'Prikazuje se čitačima ekrana ili ako slika ne može biti prikazana'
|
||||
IMAGEDIMENSIONS: Dimenzije
|
||||
IMAGEHEIGHTPX: Visina
|
||||
IMAGETITLE: 'Tekst naslova (tooltip) - za dodatne informacije o slici'
|
||||
|
@ -290,8 +290,6 @@ sv:
|
||||
FROMWEB: 'Från webben'
|
||||
FindInFolder: 'Hitta i mapp'
|
||||
IMAGEALT: 'Alternativ text (alt)'
|
||||
IMAGEALTTEXT: 'Alternativ text (alt) - visas om bilden inte kan visas'
|
||||
IMAGEALTTEXTDESC: 'Visas för skärmläsare eller om bilden inte kan visas'
|
||||
IMAGEDIMENSIONS: Dimensioner
|
||||
IMAGEHEIGHTPX: Höjd
|
||||
IMAGETITLE: 'Titel text (tooltip) - för ytterligare information om bilden'
|
||||
@ -327,7 +325,6 @@ sv:
|
||||
DropdownBatchActionsDefault: Åtgärder
|
||||
HELP: Hjälp
|
||||
PERMAGAIN: 'Du har blivit utloggad. Om du vill logga in igen anger du dina uppgifter nedan.'
|
||||
PLEASESAVE: 'Var god spara sidan. Den kan inte uppdateras eftersom den har inte sparats ännu.'
|
||||
PreviewButton: Förhandsgranska
|
||||
REORGANISATIONSUCCESSFUL: 'Omorganisationen av sidträdet luyckades.'
|
||||
SAVEDUP: Sparad.
|
||||
|
@ -265,8 +265,6 @@ zh:
|
||||
FROMWEB: '从网站上'
|
||||
FindInFolder: '在文件夹中寻找'
|
||||
IMAGEALT: '替代性文本 (alt)'
|
||||
IMAGEALTTEXT: '替代文字 (alt) - 用于图像无法显示时'
|
||||
IMAGEALTTEXTDESC: '向显示屏读者显示,或者用于图像无法显示时'
|
||||
IMAGEDIMENSIONS: 体积
|
||||
IMAGEHEIGHTPX: 高度
|
||||
IMAGETITLE: '标题文字(工具提示)- 关于该图像的更多信息'
|
||||
|
@ -90,17 +90,37 @@ class DatabaseAdmin extends Controller {
|
||||
// Get all our classes
|
||||
SS_ClassLoader::instance()->getManifest()->regenerate();
|
||||
|
||||
if(isset($_GET['returnURL'])) {
|
||||
$url = $this->getReturnURL();
|
||||
if($url) {
|
||||
echo "<p>Setting up the database; you will be returned to your site shortly....</p>";
|
||||
$this->doBuild(true);
|
||||
echo "<p>Done!</p>";
|
||||
$this->redirect($_GET['returnURL']);
|
||||
$this->redirect($url);
|
||||
} else {
|
||||
$this->doBuild(isset($_REQUEST['quiet']) || isset($_REQUEST['from_installer']),
|
||||
!isset($_REQUEST['dont_populate']));
|
||||
$quiet = $this->request->requestVar('quiet') !== null;
|
||||
$fromInstaller = $this->request->requestVar('from_installer') !== null;
|
||||
$populate = $this->request->requestVar('dont_populate') === null;
|
||||
$this->doBuild($quiet || $fromInstaller, $populate);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the url to return to after build
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
protected function getReturnURL() {
|
||||
$url = $this->request->getVar('returnURL');
|
||||
|
||||
// Check that this url is a site url
|
||||
if(empty($url) || !Director::is_site_url($url)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// Convert to absolute URL
|
||||
return Director::absoluteURL($url, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if database needs to be built, and build it if it does.
|
||||
*/
|
||||
|
@ -144,6 +144,7 @@ $gf_grid_x: 16px;
|
||||
border-collapse: separate;
|
||||
border-bottom: 0 none;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
|
||||
thead {
|
||||
color: darken($color-base, 50%);
|
||||
|
@ -108,7 +108,7 @@ class Group extends DataObject {
|
||||
|
||||
if($this->ID) {
|
||||
$group = $this;
|
||||
$config = new GridFieldConfig_RelationEditor();
|
||||
$config = GridFieldConfig_RelationEditor::create();
|
||||
$config->addComponent(new GridFieldButtonRow('after'));
|
||||
$config->addComponents(new GridFieldExportButton('buttons-after-left'));
|
||||
$config->addComponents(new GridFieldPrintButton('buttons-after-left'));
|
||||
|
@ -251,7 +251,11 @@ class Member extends DataObject implements TemplateGlobalProvider {
|
||||
|
||||
// Ensure this user is in the admin group
|
||||
if(!$admin->inGroup($adminGroup)) {
|
||||
$admin->Groups()->add($adminGroup);
|
||||
// Add member to group instead of adding group to member
|
||||
// This bypasses the privilege escallation code in Member_GroupSet
|
||||
$adminGroup
|
||||
->DirectMembers()
|
||||
->add($admin);
|
||||
}
|
||||
|
||||
return $admin;
|
||||
@ -872,6 +876,8 @@ class Member extends DataObject implements TemplateGlobalProvider {
|
||||
public function onAfterWrite() {
|
||||
parent::onAfterWrite();
|
||||
|
||||
Permission::flush_permission_cache();
|
||||
|
||||
if($this->isChanged('Password')) {
|
||||
MemberPassword::log($this);
|
||||
}
|
||||
@ -898,21 +904,22 @@ class Member extends DataObject implements TemplateGlobalProvider {
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter out admin groups to avoid privilege escalation,
|
||||
* If any admin groups are requested, deny the whole save operation.
|
||||
*
|
||||
* @param Array $ids Database IDs of Group records
|
||||
* @return boolean
|
||||
* @return boolean True if the change can be accepted
|
||||
*/
|
||||
public function onChangeGroups($ids) {
|
||||
// Filter out admin groups to avoid privilege escalation,
|
||||
// unless the current user is an admin already OR the logged in user is an admin
|
||||
if(!(Permission::check('ADMIN') || Permission::checkMember($this, 'ADMIN'))) {
|
||||
if(Permission::check('ADMIN') || Permission::checkMember($this, 'ADMIN')) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// If there are no admin groups in this set then it's ok
|
||||
$adminGroups = Permission::get_groups_by_permission('ADMIN');
|
||||
$adminGroupIDs = ($adminGroups) ? $adminGroups->column('ID') : array();
|
||||
return count(array_intersect($ids, $adminGroupIDs)) == 0;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1145,6 +1152,7 @@ class Member extends DataObject implements TemplateGlobalProvider {
|
||||
* Use {@link DirectGroups()} to only retrieve the group relations without inheritance.
|
||||
*
|
||||
* @todo Push all this logic into Member_GroupSet's getIterator()?
|
||||
* @return Member_Groupset
|
||||
*/
|
||||
public function Groups() {
|
||||
$groups = Member_GroupSet::create('Group', 'Group_Members', 'GroupID', 'MemberID');
|
||||
@ -1662,6 +1670,47 @@ class Member_GroupSet extends ManyManyList {
|
||||
// in this class, otherwise we end up selecting all inherited groups
|
||||
return parent::foreignIDFilter($id);
|
||||
}
|
||||
|
||||
public function add($item, $extraFields = null) {
|
||||
// Get Group.ID
|
||||
$itemID = null;
|
||||
if(is_numeric($item)) {
|
||||
$itemID = $item;
|
||||
} else if($item instanceof Group) {
|
||||
$itemID = $item->ID;
|
||||
}
|
||||
|
||||
// Check if this group is allowed to be added
|
||||
if($this->canAddGroups(array($itemID))) {
|
||||
parent::add($item, $extraFields);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if the following groups IDs can be added
|
||||
*
|
||||
* @param array $itemIDs
|
||||
* @return boolean
|
||||
*/
|
||||
protected function canAddGroups($itemIDs) {
|
||||
if(empty($itemIDs)) {
|
||||
return true;
|
||||
}
|
||||
$member = $this->getMember();
|
||||
return empty($member) || $member->onChangeGroups($itemIDs);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get foreign member record for this relation
|
||||
*
|
||||
* @return Member
|
||||
*/
|
||||
protected function getMember() {
|
||||
$id = $this->getForeignID();
|
||||
if($id) {
|
||||
return DataObject::get_by_id('Member', $id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -805,7 +805,11 @@ class Security extends Controller implements TemplateGlobalProvider {
|
||||
$member = Member::create();
|
||||
$member->FirstName = _t('Member.DefaultAdminFirstname', 'Default Admin');
|
||||
$member->write();
|
||||
$member->Groups()->add($adminGroup);
|
||||
// Add member to group instead of adding group to member
|
||||
// This bypasses the privilege escallation code in Member_GroupSet
|
||||
$adminGroup
|
||||
->DirectMembers()
|
||||
->add($member);
|
||||
}
|
||||
|
||||
return $member;
|
||||
|
@ -229,6 +229,17 @@ class CsvBulkLoaderTest extends SapphireTest {
|
||||
return $i;
|
||||
}
|
||||
|
||||
public function testLargeFileSplitIntoSmallerFiles() {
|
||||
Config::inst()->update('CsvBulkLoader', 'lines', 3);
|
||||
|
||||
$loader = new CsvBulkLoader('CsvBulkLoaderTest_Player');
|
||||
$path = $this->getCurrentAbsolutePath() . '/CsvBulkLoaderTest_LargeListOfPlayers.csv';
|
||||
|
||||
$results = $loader->load($path);
|
||||
|
||||
$this->assertEquals(10, $results->Count());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class CsvBulkLoaderTest_CustomLoader extends CsvBulkLoader implements TestOnly {
|
||||
|
11
tests/dev/CsvBulkLoaderTest_LargeListOfPlayers.csv
Normal file
11
tests/dev/CsvBulkLoaderTest_LargeListOfPlayers.csv
Normal file
@ -0,0 +1,11 @@
|
||||
"Name","Biography","Birthday","IsRegistered"
|
||||
"Name0","Biography0","Birthday0","1"
|
||||
"Name1","Biography1","Birthday1","1"
|
||||
"Name2","Biography2","Birthday2","1"
|
||||
"Name3","Biography3","Birthday3","1"
|
||||
"Name4","Biography4","Birthday4","1"
|
||||
"Name5","Biography5","Birthday5","1"
|
||||
"Name6","Biography6","Birthday6","1"
|
||||
"Name7","Biography7","Birthday7","1"
|
||||
"Name8","Biography8","Birthday8","1"
|
||||
"Name9","Biography9","Birthday9","1"
|
|
@ -166,7 +166,8 @@ class DataListTest extends SapphireTest {
|
||||
. 'CASE WHEN "DataObjectTest_TeamComment"."ClassName" IS NOT NULL '
|
||||
. 'THEN "DataObjectTest_TeamComment"."ClassName" ELSE '
|
||||
. $db->quoteString('DataObjectTest_TeamComment')
|
||||
. ' END AS "RecordClassName" FROM "DataObjectTest_TeamComment"';
|
||||
. ' END AS "RecordClassName" FROM "DataObjectTest_TeamComment"'
|
||||
. ' ORDER BY "DataObjectTest_TeamComment"."Name" ASC';
|
||||
$this->assertSQLEquals($expected, $list->sql($parameters));
|
||||
}
|
||||
|
||||
@ -189,7 +190,9 @@ class DataListTest extends SapphireTest {
|
||||
. $db->quoteString('DataObjectTest_TeamComment')
|
||||
. ' END AS "RecordClassName" FROM "DataObjectTest_TeamComment" INNER JOIN '
|
||||
. '"DataObjectTest_Team" AS "Team" ON "DataObjectTest_Team"."ID" = '
|
||||
. '"DataObjectTest_TeamComment"."TeamID"';
|
||||
. '"DataObjectTest_TeamComment"."TeamID"'
|
||||
. ' ORDER BY "DataObjectTest_TeamComment"."Name" ASC';
|
||||
|
||||
|
||||
$this->assertSQLEquals($expected, $list->sql($parameters));
|
||||
$this->assertEmpty($parameters);
|
||||
@ -218,7 +221,8 @@ class DataListTest extends SapphireTest {
|
||||
. ' END AS "RecordClassName" FROM "DataObjectTest_TeamComment" INNER JOIN '
|
||||
. '"DataObjectTest_Team" AS "Team" ON "DataObjectTest_Team"."ID" = '
|
||||
. '"DataObjectTest_TeamComment"."TeamID" '
|
||||
. 'AND "DataObjectTest_Team"."Title" LIKE ?';
|
||||
. 'AND "DataObjectTest_Team"."Title" LIKE ?'
|
||||
. ' ORDER BY "DataObjectTest_TeamComment"."Name" ASC';
|
||||
|
||||
$this->assertSQLEquals($expected, $list->sql($parameters));
|
||||
$this->assertEquals(array('Team%'), $parameters);
|
||||
@ -242,7 +246,9 @@ class DataListTest extends SapphireTest {
|
||||
. 'THEN "DataObjectTest_TeamComment"."ClassName" ELSE '
|
||||
. $db->quoteString('DataObjectTest_TeamComment')
|
||||
. ' END AS "RecordClassName" FROM "DataObjectTest_TeamComment" LEFT JOIN "DataObjectTest_Team" '
|
||||
. 'AS "Team" ON "DataObjectTest_Team"."ID" = "DataObjectTest_TeamComment"."TeamID"';
|
||||
. 'AS "Team" ON "DataObjectTest_Team"."ID" = "DataObjectTest_TeamComment"."TeamID"'
|
||||
. ' ORDER BY "DataObjectTest_TeamComment"."Name" ASC';
|
||||
|
||||
|
||||
$this->assertSQLEquals($expected, $list->sql($parameters));
|
||||
$this->assertEmpty($parameters);
|
||||
@ -266,7 +272,8 @@ class DataListTest extends SapphireTest {
|
||||
. 'ELSE ' . $db->quoteString('DataObjectTest_TeamComment') . ' END AS "RecordClassName" '
|
||||
. 'FROM "DataObjectTest_TeamComment" '
|
||||
. 'LEFT JOIN "DataObjectTest\NamespacedClass" ON '
|
||||
. '"DataObjectTest\NamespacedClass"."ID" = "DataObjectTest_TeamComment"."ID"';
|
||||
. '"DataObjectTest\NamespacedClass"."ID" = "DataObjectTest_TeamComment"."ID"'
|
||||
. ' ORDER BY "DataObjectTest_TeamComment"."Name" ASC';
|
||||
$this->assertSQLEquals($expected, $list->sql($parameters), 'Retains backslashes in namespaced classes');
|
||||
$this->assertEmpty($parameters);
|
||||
|
||||
@ -295,7 +302,8 @@ class DataListTest extends SapphireTest {
|
||||
. ' END AS "RecordClassName" FROM "DataObjectTest_TeamComment" LEFT JOIN '
|
||||
. '"DataObjectTest_Team" AS "Team" ON "DataObjectTest_Team"."ID" = '
|
||||
. '"DataObjectTest_TeamComment"."TeamID" '
|
||||
. 'AND "DataObjectTest_Team"."Title" LIKE ?';
|
||||
. 'AND "DataObjectTest_Team"."Title" LIKE ?'
|
||||
. ' ORDER BY "DataObjectTest_TeamComment"."Name" ASC';
|
||||
|
||||
$this->assertSQLEquals($expected, $list->sql($parameters));
|
||||
$this->assertEquals(array('Team%'), $parameters);
|
||||
|
@ -1916,6 +1916,7 @@ class DataObjectTest_TeamComment extends DataObject implements TestOnly {
|
||||
'Team' => 'DataObjectTest_Team'
|
||||
);
|
||||
|
||||
private static $default_sort = '"Name" ASC';
|
||||
}
|
||||
|
||||
class DataObjectTest_Fan extends DataObject implements TestOnly {
|
||||
|
@ -584,7 +584,6 @@ class MemberTest extends FunctionalTest {
|
||||
|
||||
public function testOnChangeGroups() {
|
||||
$staffGroup = $this->objFromFixture('Group', 'staffgroup');
|
||||
$adminGroup = $this->objFromFixture('Group', 'admingroup');
|
||||
$staffMember = $this->objFromFixture('Member', 'staffmember');
|
||||
$adminMember = $this->objFromFixture('Member', 'admin');
|
||||
$newAdminGroup = new Group(array('Title' => 'newadmin'));
|
||||
@ -619,6 +618,76 @@ class MemberTest extends FunctionalTest {
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test Member_GroupSet::add
|
||||
*/
|
||||
public function testOnChangeGroupsByAdd() {
|
||||
$staffMember = $this->objFromFixture('Member', 'staffmember');
|
||||
$adminMember = $this->objFromFixture('Member', 'admin');
|
||||
|
||||
// Setup new admin group
|
||||
$newAdminGroup = new Group(array('Title' => 'newadmin'));
|
||||
$newAdminGroup->write();
|
||||
Permission::grant($newAdminGroup->ID, 'ADMIN');
|
||||
|
||||
// Setup non-admin group
|
||||
$newOtherGroup = new Group(array('Title' => 'othergroup'));
|
||||
$newOtherGroup->write();
|
||||
|
||||
// Test staff can be added to other group
|
||||
$this->assertFalse($staffMember->inGroup($newOtherGroup));
|
||||
$staffMember->Groups()->add($newOtherGroup);
|
||||
$this->assertTrue(
|
||||
$staffMember->inGroup($newOtherGroup),
|
||||
'Adding new non-admin group relation is allowed for non-admin members'
|
||||
);
|
||||
|
||||
// Test staff member can't be added to admin groups
|
||||
$this->assertFalse($staffMember->inGroup($newAdminGroup));
|
||||
$staffMember->Groups()->add($newAdminGroup);
|
||||
$this->assertFalse(
|
||||
$staffMember->inGroup($newAdminGroup),
|
||||
'Adding new admin group relation is not allowed for non-admin members'
|
||||
);
|
||||
|
||||
// Test staff member can be added to admin group by admins
|
||||
$this->logInAs($adminMember);
|
||||
$staffMember->Groups()->add($newAdminGroup);
|
||||
$this->assertTrue(
|
||||
$staffMember->inGroup($newAdminGroup),
|
||||
'Adding new admin group relation is allowed for normal users, when granter is logged in as admin'
|
||||
);
|
||||
|
||||
// Test staff member can be added if they are already admin
|
||||
$this->session()->inst_set('loggedInAs', null);
|
||||
$this->assertFalse($adminMember->inGroup($newAdminGroup));
|
||||
$adminMember->Groups()->add($newAdminGroup);
|
||||
$this->assertTrue(
|
||||
$adminMember->inGroup($newAdminGroup),
|
||||
'Adding new admin group relation is allowed for admin members'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test Member_GroupSet::add
|
||||
*/
|
||||
public function testOnChangeGroupsBySetIDList() {
|
||||
$staffMember = $this->objFromFixture('Member', 'staffmember');
|
||||
|
||||
// Setup new admin group
|
||||
$newAdminGroup = new Group(array('Title' => 'newadmin'));
|
||||
$newAdminGroup->write();
|
||||
Permission::grant($newAdminGroup->ID, 'ADMIN');
|
||||
|
||||
// Test staff member can't be added to admin groups
|
||||
$this->assertFalse($staffMember->inGroup($newAdminGroup));
|
||||
$staffMember->Groups()->setByIDList(array($newAdminGroup->ID));
|
||||
$this->assertFalse(
|
||||
$staffMember->inGroup($newAdminGroup),
|
||||
'Adding new admin group relation is not allowed for non-admin members'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that extensions using updateCMSFields() are applied correctly
|
||||
*/
|
||||
|
@ -1,6 +1,8 @@
|
||||
<?php
|
||||
class SecurityDefaultAdminTest extends SapphireTest {
|
||||
|
||||
protected $usesDatabase = true;
|
||||
|
||||
protected $defaultUsername = null;
|
||||
protected $defaultPassword = null;
|
||||
|
||||
@ -16,10 +18,12 @@ class SecurityDefaultAdminTest extends SapphireTest {
|
||||
$this->defaultPassword = Security::default_admin_password();
|
||||
Security::clear_default_admin();
|
||||
Security::setDefaultAdmin('admin', 'password');
|
||||
Permission::flush_permission_cache();
|
||||
}
|
||||
|
||||
public function tearDown() {
|
||||
Security::setDefaultAdmin($this->defaultUsername, $this->defaultPassword);
|
||||
Permission::flush_permission_cache();
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user