Skip to content

Commit

Permalink
Merge branch 'master' into issue-8-extension
Browse files Browse the repository at this point in the history
  • Loading branch information
micschk authored Apr 27, 2017
2 parents ecc7bb2 + 9550409 commit fba60c5
Show file tree
Hide file tree
Showing 4 changed files with 162 additions and 71 deletions.
17 changes: 17 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# For more information about the properties used in this file,
# please see the EditorConfig documentation:
# http://editorconfig.org

[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true

[{*.yml,package.json}]
indent_size = 2

# The indent size used in the package.json file cannot be changed:
# https://github.com/npm/npm/pull/3180#issuecomment-16336516
69 changes: 69 additions & 0 deletions .scrutinizer.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
inherit: true

checks:
php:
verify_property_names: true
verify_argument_usable_as_reference: true
verify_access_scope_valid: true
useless_calls: true
use_statement_alias_conflict: true
variable_existence: true
unused_variables: true
unused_properties: true
unused_parameters: true
unused_methods: true
unreachable_code: true
too_many_arguments: true
sql_injection_vulnerabilities: true
simplify_boolean_return: true
side_effects_or_types: true
security_vulnerabilities: true
return_doc_comments: true
return_doc_comment_if_not_inferrable: true
require_scope_for_properties: true
require_scope_for_methods: true
require_php_tag_first: true
psr2_switch_declaration: true
psr2_class_declaration: true
property_assignments: true
prefer_while_loop_over_for_loop: true
precedence_mistakes: true
precedence_in_conditions: true
phpunit_assertions: true
php5_style_constructor: true
parse_doc_comments: true
parameter_non_unique: true
parameter_doc_comments: true
param_doc_comment_if_not_inferrable: true
optional_parameters_at_the_end: true
one_class_per_file: true
no_unnecessary_if: true
no_trailing_whitespace: true
no_property_on_interface: true
no_non_implemented_abstract_methods: true
no_error_suppression: true
no_duplicate_arguments: true
no_commented_out_code: true
newline_at_end_of_file: true
missing_arguments: true
method_calls_on_non_object: true
instanceof_class_exists: true
foreach_traversable: true
fix_line_ending: true
fix_doc_comments: true
duplication: true
deprecated_code_usage: true
deadlock_detection_in_loops: true
code_rating: true
closure_use_not_conflicting: true
catch_class_exists: true
blank_line_after_namespace_declaration: false
avoid_multiple_statements_on_same_line: true
avoid_duplicate_types: true
avoid_conflicting_incrementers: true
avoid_closing_tag: true
assignment_of_null_return: true
argument_type_checks: true

filter:
paths: [code/*, tests/*]
6 changes: 4 additions & 2 deletions code/GridFieldPage.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<?php

require_once(__DIR__ . '/GridFieldPageTrait.php');

/**
Expand Down Expand Up @@ -30,5 +31,6 @@ class GridFieldPage extends Page {

}

class GridFieldPage_Controller extends Page_Controller {
}
class GridFieldPage_Controller extends Page_Controller
{
}
141 changes: 72 additions & 69 deletions code/GridFieldPageHolder.php
Original file line number Diff line number Diff line change
@@ -1,79 +1,82 @@
<?php

class GridFieldPageHolder extends Page {

class GridFieldPageHolder extends Page
{

private static $allowed_children = array('*GridFieldPage');
private static $default_child = "GridFieldPage";

private static $add_default_gridfield = true;
private static $apply_sortable = true;
private static $subpage_tab = "Root.Subpages";
private static $gridfield_title = "Manage Subpages";

public static function setAddDefaultGridField(Boolean $val){
Deprecation::notice('1.0', 'setAddDefaultGridField is deprecated please use Config instead');
self::config()->update('add_default_gridfield', $val);
}
private static $default_child = "GridFieldPage";

private static $add_default_gridfield = true;
private static $apply_sortable = true;
private static $subpage_tab = "Root.Subpages";
private static $gridfield_title = "Manage Subpages";

public static function setAddDefaultGridField(Boolean $val)
{
Deprecation::notice('1.0', 'setAddDefaultGridField is deprecated please use Config instead');
self::config()->update('add_default_gridfield', $val);
}

public function getCMSFields() {
$fields = parent::getCMSFields();

$PageTab = Config::inst()->get($this->owner->className, 'subpage_tab');

// GridFieldPage
if( Config::inst()->get($this->owner->className, 'add_default_gridfield') ){
$gridFieldConfig = GridFieldConfig::create()->addComponents(
new GridFieldToolbarHeader(),
new GridFieldAddNewSiteTreeItemButton('toolbar-header-right'),
new GridFieldSortableHeader(),
new GridFieldFilterHeader(),
$dataColumns = new GridFieldDataColumns(),
new GridFieldPaginator(20),
new GridFieldEditSiteTreeItemButton()
);
// Orderable is optional, as often pages may be sorted by other means
if( Config::inst()->get($this->owner->className, 'apply_sortable') ){
// OrderableRows will auto-deactivate when users Sort via SortableHeader
$gridFieldConfig->addComponent(new GridFieldOrderableRows());
$fields->addFieldToTab($PageTab, new LiteralField('SortWarning',
"<p class=\"message warning\" style=\"display: inline-block;\">"
. _t("GridFieldPages.PUBLISHAFTERSORTWARNING",
"After reordering, the new sort order will get active after one of the pages gets (re)published")
. "</p>"));
}
$dataColumns->setDisplayFields(array(
'Title' => 'Title',
'URLSegment'=> 'URL',
'getStatus' => 'Status',
//'LastEdited' => 'Changed',
));

// include both live and stage versions of pages
// use gridfield as normal
$gridField = new GridField("Subpages",
Config::inst()->get($this->owner->className, 'gridfield_title'),
//DataObject::get($this->defaultChild(), 'ParentID = '.$this->ID),
//SiteTree::get()->filter('ParentID', $this->ID),
$this->AllChildrenIncludingDeleted(),
$gridFieldConfig);

$gridField->setModelClass($this->defaultChild());

$fields->addFieldToTab($PageTab, $gridField);
}

return $fields;
}

// @TODO: A page still needs to be published for the sortorder to be updated,
// we need some kind of warning/info to inform CMS users about this
public function getCMSFields()
{
$fields = parent::getCMSFields();

$PageTab = Config::inst()->get($this->owner->className, 'subpage_tab');

// GridFieldPage
if (Config::inst()->get($this->owner->className, 'add_default_gridfield')) {
$gridFieldConfig = GridFieldConfig::create()->addComponents(
new GridFieldToolbarHeader(),
new GridFieldAddNewSiteTreeItemButton('toolbar-header-right'),
new GridFieldSortableHeader(),
new GridFieldFilterHeader(),
$dataColumns = new GridFieldDataColumns(),
new GridFieldPaginator(20),
new GridFieldEditSiteTreeItemButton()
);
// Orderable is optional, as often pages may be sorted by other means
if (Config::inst()->get($this->owner->className, 'apply_sortable')) {
// OrderableRows will auto-deactivate when users Sort via SortableHeader
$gridFieldConfig->addComponent(new GridFieldOrderableRows());
$fields->addFieldToTab($PageTab, new LiteralField('SortWarning',
"<p class=\"message warning\" style=\"display: inline-block;\">"
. _t("GridFieldPages.PUBLISHAFTERSORTWARNING",
"After reordering, the new sort order will get active after one of the pages gets (re)published")
. "</p>"));
}
$dataColumns->setDisplayFields(array(
'Title' => 'Title',
'URLSegment'=> 'URL',
'getStatus' => 'Status',
//'LastEdited' => 'Changed',
));

// include both live and stage versions of pages
// use gridfield as normal
$gridField = new GridField("Subpages",
Config::inst()->get($this->owner->className, 'gridfield_title'),
//DataObject::get($this->defaultChild(), 'ParentID = '.$this->ID),
//SiteTree::get()->filter('ParentID', $this->ID),
$this->AllChildrenIncludingDeleted(),
$gridFieldConfig);

$gridField->setModelClass($this->defaultChild());

$fields->addFieldToTab($PageTab, $gridField);
}

return $fields;
}

// @TODO: A page still needs to be published for the sortorder to be updated,
// we need some kind of warning/info to inform CMS users about this
// public function SortedChildren(){
// //return DataObject::get($this->defaultChild(), 'ParentID = '.$this->ID);
// return SiteTree::get()->filter('ParentID', $this->ID)->sort('Sort');
// //$pagetype = $this->defaultChild();
// //return $pagetype::get()->filter('ParentID', $this->ID);
// }

// public function onBeforeGridFieldReorder($grid){
//// $message = sprintf(
//// 'Published %s %s',
Expand All @@ -82,12 +85,12 @@ public function getCMSFields() {
//// );
// //$grid->Form->sessionMessage('TESTMESSAGE', 'good');
// }

// public function MostRecent($amount = 3){
// return BlogGridPage::get()->filter('ParentID', $this->ID)->sort('Date DESC')->limit($amount);
// }

}

class GridFieldPageHolder_Controller extends Page_Controller {
class GridFieldPageHolder_Controller extends Page_Controller
{
}

0 comments on commit fba60c5

Please sign in to comment.