From 4166d025e484c4b1174c0f1a861b411c4ad75800 Mon Sep 17 00:00:00 2001 From: vagrant Date: Thu, 11 Dec 2014 10:42:36 +0000 Subject: [PATCH] NEW Decouple gridfield stuff into lumberjack module --- .travis.yml | 25 +++- _config.php | 15 +-- .../extensions}/BlogFilter.php | 31 ++--- .../extensions}/BlogPostFilter.php | 2 - .../extensions}/URLSegmentExtension.php | 0 .../gridfield/GridFieldAddByDBField.php | 0 .../gridfield/GridFieldBlogPostState.php | 58 +++----- .../gridfield/GridFieldConfig_BlogPost.php | 6 +- {model => code/model}/Blog.php | 54 +++----- {model => code/model}/BlogCategory.php | 0 {model => code/model}/BlogPost.php | 57 +++++--- {model => code/model}/BlogTag.php | 0 .../widgets}/BlogArchiveWidget.php | 0 .../widgets}/BlogCategoriesWIdget.php | 0 .../widgets}/BlogRecentPostsWidget.php | 0 {widgets => code/widgets}/BlogTagsWidget.php | 0 composer.json | 3 +- css/cms.css | 41 ++---- .../GridFieldBlogPostAddNewButton.php | 126 ------------------ .../gridfield/GridFieldSiteTreeEditButton.php | 31 ----- images/blog-icon-s0a5ab5f851.png | Bin 0 -> 680 bytes images/blog-icon-s1d712fffa2.png | Bin 800 -> 0 bytes images/blog-icon/timer.png | Bin 781 -> 844 bytes javascript/GridField.js | 16 --- lang/en.yml | 2 - scss/cms.scss | 42 +----- .../{forms => }/GridFieldAddByDBField.ss | 0 templates/forms/BlogDropdownField_holder.ss | 3 - templates/forms/GridFieldSiteTreeAddNew.ss | 3 - .../forms/GridFieldSiteTreeAddNewButton.ss | 3 - 30 files changed, 119 insertions(+), 399 deletions(-) rename {extensions => code/extensions}/BlogFilter.php (52%) mode change 100755 => 100644 rename {extensions => code/extensions}/BlogPostFilter.php (96%) mode change 100755 => 100644 rename {extensions => code/extensions}/URLSegmentExtension.php (100%) mode change 100755 => 100644 rename {forms => code/forms}/gridfield/GridFieldAddByDBField.php (100%) mode change 100755 => 100644 rename {forms => code/forms}/gridfield/GridFieldBlogPostState.php (50%) mode change 100755 => 100644 rename {forms => code/forms}/gridfield/GridFieldConfig_BlogPost.php (79%) mode change 100755 => 100644 rename {model => code/model}/Blog.php (85%) mode change 100755 => 100644 rename {model => code/model}/BlogCategory.php (100%) mode change 100755 => 100644 rename {model => code/model}/BlogPost.php (76%) mode change 100755 => 100644 rename {model => code/model}/BlogTag.php (100%) mode change 100755 => 100644 rename {widgets => code/widgets}/BlogArchiveWidget.php (100%) mode change 100755 => 100644 rename {widgets => code/widgets}/BlogCategoriesWIdget.php (100%) mode change 100755 => 100644 rename {widgets => code/widgets}/BlogRecentPostsWidget.php (100%) mode change 100755 => 100644 rename {widgets => code/widgets}/BlogTagsWidget.php (100%) mode change 100755 => 100644 delete mode 100755 forms/gridfield/GridFieldBlogPostAddNewButton.php delete mode 100755 forms/gridfield/GridFieldSiteTreeEditButton.php create mode 100644 images/blog-icon-s0a5ab5f851.png delete mode 100755 images/blog-icon-s1d712fffa2.png delete mode 100755 javascript/GridField.js rename templates/{forms => }/GridFieldAddByDBField.ss (100%) mode change 100755 => 100644 delete mode 100755 templates/forms/BlogDropdownField_holder.ss delete mode 100755 templates/forms/GridFieldSiteTreeAddNew.ss delete mode 100755 templates/forms/GridFieldSiteTreeAddNewButton.ss diff --git a/.travis.yml b/.travis.yml index 41a68a4..fd8eba2 100755 --- a/.travis.yml +++ b/.travis.yml @@ -1,21 +1,32 @@ -language: php - -php: - - 5.3 +language: php env: - - DB=MYSQL CORE_RELEASE=3.1 + global: + - DB=MYSQL CORE_RELEASE=3.1 matrix: include: + - php: 5.6 + env: DB=MYSQL + - php: 5.5 + env: DB=MYSQL - php: 5.4 - env: DB=MYSQL CORE_RELEASE=3.1 + env: DB=MYSQL + - php: 5.3 + env: DB=MYSQL + - php: hhvm-nightly + env: DB=MYSQL + before_install: + - sudo apt-get update -qq + - sudo apt-get install -y tidy + before_script: - phpenv rehash + - composer self-update - git clone git://github.com/silverstripe-labs/silverstripe-travis-support.git ~/travis-support - php ~/travis-support/travis_setup.php --source `pwd` --target ~/builds/ss - cd ~/builds/ss -script: +script: - phpunit silverstripe-blog/tests/ \ No newline at end of file diff --git a/_config.php b/_config.php index c311c41..d8ae592 100755 --- a/_config.php +++ b/_config.php @@ -5,17 +5,4 @@ * * @return string **/ -function blog_dir() { - return trim(str_replace(BASE_PATH, "", dirname(__FILE__)), DIRECTORY_SEPARATOR); -} - - - -/** - * Returns the absolute path of the current module path - * - * @return string -**/ -function blog_path() { - return BASE_PATH . '/' . blog_dir(); -} \ No newline at end of file +define('BLOGGER_DIR', ltrim(Director::makeRelative(realpath(__DIR__)), DIRECTORY_SEPARATOR)); diff --git a/extensions/BlogFilter.php b/code/extensions/BlogFilter.php old mode 100755 new mode 100644 similarity index 52% rename from extensions/BlogFilter.php rename to code/extensions/BlogFilter.php index fbd95f8..cb97a73 --- a/extensions/BlogFilter.php +++ b/code/extensions/BlogFilter.php @@ -10,7 +10,7 @@ * @author Michael Strong * **/ -class BlogFilter extends Hierarchy { +class BlogFilter extends Lumberjack { /** * Augments (@link Hierarchy::stageChildren()} @@ -21,14 +21,8 @@ class BlogFilter extends Hierarchy { public function stageChildren($showAll = false) { $staged = parent::stageChildren($showAll); - $controller = Controller::curr(); - if($controller->class == "CMSPagesController" - && in_array($controller->getAction(), array("treeview", "listview", "getsubtree")) - ) { - // Filter the SiteTree - return $staged->exclude("ClassName", $this->owner->getExcludedSiteTreeClassNames()); - - } else if(in_array($this->owner->ClassName, ClassInfo::subClassesFor("Blog")) + if(!$this->shouldFilter() + && in_array(get_class($this->owner), ClassInfo::subClassesFor("Blog")) && !Permission::check("VIEW_DRAFT_CONTENT") ) { @@ -39,10 +33,9 @@ class BlogFilter extends Hierarchy { // Filter published posts $dataQuery = $staged->dataQuery() - ->innerJoin("BlogPost", "BlogPost" . $stage . ".ID = SiteTree" . $stage . ".ID") - ->where("PublishDate < '" . Convert::raw2sql(SS_Datetime::now()) . "'"); + ->innerJoin("BlogPost", '"BlogPost' . $stage . '"."ID" = "SiteTree' . $stage . '"."ID"') + ->where('"PublishDate" < \'' . Convert::raw2sql(SS_Datetime::now()) . '\''); $staged = $staged->setDataQuery($dataQuery); - } return $staged; } @@ -58,20 +51,14 @@ class BlogFilter extends Hierarchy { public function liveChildren($showAll = false, $onlyDeletedFromStage = false) { $staged = parent::liveChildren($showAll, $onlyDeletedFromStage); - $controller = Controller::curr(); - if($controller->class == "CMSPagesController" - && in_array($controller->getAction(), array("treeview", "listview", "getsubtree")) - ) { - // Filter the SiteTree - return $staged->exclude("ClassName", $this->owner->getExcludedSiteTreeClassNames()); - - } else if(in_array($this->owner->ClassName, ClassInfo::subClassesFor("Blog")) + if(!$this->shouldFilter() + && in_array(get_class($this->owner), ClassInfo::subClassesFor("Blog")) && !Permission::check("VIEW_DRAFT_CONTENT") ) { // Filter publish posts $dataQuery = $staged->dataQuery() - ->innerJoin("BlogPost", "BlogPost_Live.ID = SiteTree_Live.ID") - ->where("PublishDate < '" . Convert::raw2sql(SS_Datetime::now()) . "'"); + ->innerJoin("BlogPost", '"BlogPost_Live"."ID" = "SiteTree"_"Live"."ID"') + ->where('"PublishDate" < \'' . Convert::raw2sql(SS_Datetime::now()) . '\''); $staged = $staged->setDataQuery($dataQuery); } return $staged; diff --git a/extensions/BlogPostFilter.php b/code/extensions/BlogPostFilter.php old mode 100755 new mode 100644 similarity index 96% rename from extensions/BlogPostFilter.php rename to code/extensions/BlogPostFilter.php index 174077f..79d64d3 --- a/extensions/BlogPostFilter.php +++ b/code/extensions/BlogPostFilter.php @@ -29,10 +29,8 @@ class BlogPostFilter extends DataExtension { * @see https://github.com/silverstripe/silverstripe-framework/issues/1682 **/ public function augmentLoadLazyFields(SQLQuery &$query, &$dataQuery, $parent) { - // Ensures that we're joining the BlogPost table which holds required db fields. $dataQuery->innerJoin("BlogPost", "`SiteTree`.`ID` = `BlogPost`.`ID`"); - } } \ No newline at end of file diff --git a/extensions/URLSegmentExtension.php b/code/extensions/URLSegmentExtension.php old mode 100755 new mode 100644 similarity index 100% rename from extensions/URLSegmentExtension.php rename to code/extensions/URLSegmentExtension.php diff --git a/forms/gridfield/GridFieldAddByDBField.php b/code/forms/gridfield/GridFieldAddByDBField.php old mode 100755 new mode 100644 similarity index 100% rename from forms/gridfield/GridFieldAddByDBField.php rename to code/forms/gridfield/GridFieldAddByDBField.php diff --git a/forms/gridfield/GridFieldBlogPostState.php b/code/forms/gridfield/GridFieldBlogPostState.php old mode 100755 new mode 100644 similarity index 50% rename from forms/gridfield/GridFieldBlogPostState.php rename to code/forms/gridfield/GridFieldBlogPostState.php index d57e868..c4af614 --- a/forms/gridfield/GridFieldBlogPostState.php +++ b/code/forms/gridfield/GridFieldBlogPostState.php @@ -1,63 +1,50 @@ -**/ -class GridFieldBlogPostState implements GridField_ColumnProvider { - - public function augmentColumns($gridField, &$columns) { - // Ensure Actions always appears as the last column. - $key = array_search("Actions", $columns); - if($key !== FALSE) unset($columns[$key]); - - $columns = array_merge($columns, array( - "State", - "Actions", - )); - } - - public function getColumnsHandled($gridField) { - return array("State"); - } + **/ +class GridFieldBlogPostState extends GridFieldSiteTreeState { public function getColumnContent($gridField, $record, $columnName) { if($columnName == "State") { + Requirements::css(BLOGGER_DIR . '/css/cms.css'); + if($record->hasMethod("isPublished")) { $modifiedLabel = ""; if($record->isModifiedOnStage) { $modifiedLabel = "" . _t("GridFieldBlogPostState.Modified") . ""; - } + } $published = $record->isPublished(); if(!$published) { return _t( - "GridFieldBlogPostState.Draft", - ' Saved as Draft on {date}', - "State for when a post is saved.", + "GridFieldBlogPostState.Draft", + ' Saved as Draft on {date}', + "State for when a post is saved.", array( "date" => $record->dbObject("LastEdited")->Nice() ) ); } else if (strtotime($record->PublishDate) > time()) { return _t( - "GridFieldBlogPostState.Timer", - ' Publish at {date}', - "State for when a post is published.", + "GridFieldBlogPostState.Timer", + ' Publish at {date}', + "State for when a post is published.", array( "date" => $record->dbObject("PublishDate")->Nice() ) ) . $modifiedLabel; } else { return _t( - "GridFieldBlogPostState.Published", - ' Published on {date}', - "State for when a post is published.", + "GridFieldBlogPostState.Published", + ' Published on {date}', + "State for when a post is published.", array( "date" => $record->dbObject("PublishDate")->Nice() ) @@ -72,11 +59,11 @@ class GridFieldBlogPostState implements GridField_ColumnProvider { if($record->hasMethod("isPublished")) { $published = $record->isPublished(); if(!$published) { - $class = "blog-icon draft"; + $class = "gridfield-icon draft"; } else if (strtotime($record->PublishDate) > time()) { - $class = "blog-icon timer"; + $class = "gridfield-icon timer"; } else { - $class = "blog-icon published"; + $class = "gridfield-icon published"; } return array("class" => $class); } @@ -84,11 +71,4 @@ class GridFieldBlogPostState implements GridField_ColumnProvider { return array(); } - public function getColumnMetaData($gridField, $columnName) { - switch($columnName) { - case 'State': - return array("title" => _t("GridFieldBlogPostState.StateTitle", "State", "Column title for state")); - } - } - -} +} \ No newline at end of file diff --git a/forms/gridfield/GridFieldConfig_BlogPost.php b/code/forms/gridfield/GridFieldConfig_BlogPost.php old mode 100755 new mode 100644 similarity index 79% rename from forms/gridfield/GridFieldConfig_BlogPost.php rename to code/forms/gridfield/GridFieldConfig_BlogPost.php index 41c46cf..806c29a --- a/forms/gridfield/GridFieldConfig_BlogPost.php +++ b/code/forms/gridfield/GridFieldConfig_BlogPost.php @@ -13,10 +13,10 @@ class GridFieldConfig_BlogPost extends GridFieldConfig { public function __construct($itemsPerPage = null) { parent::__construct($itemsPerPage); $this->addComponent(new GridFieldButtonRow('before')); - $this->addComponent(new GridFieldBlogPostAddNewButton('buttons-before-left')); + $this->addComponent(new GridFieldSiteTreeAddNewButton('buttons-before-left')); $this->addComponent(new GridFieldToolbarHeader()); - $this->addComponent($sort = new GridFieldSortableHeader()); - $this->addComponent($filter = new GridFieldFilterHeader()); + $this->addComponent(new GridFieldSortableHeader()); + $this->addComponent(new GridFieldFilterHeader()); $this->addComponent(new GridFieldDataColumns()); $this->addComponent(new GridFieldSiteTreeEditButton()); $this->addComponent(new GridFieldPageCount('toolbar-header-right')); diff --git a/model/Blog.php b/code/model/Blog.php old mode 100755 new mode 100644 similarity index 85% rename from model/Blog.php rename to code/model/Blog.php index fd17d36..1c6aef3 --- a/model/Blog.php +++ b/code/model/Blog.php @@ -15,48 +15,32 @@ class Blog extends Page { ); - private static $has_many = array( "Tags" => "BlogTag", "Categories" => "BlogCategory", ); - private static $allowed_children = array( "BlogPost", ); - private static $extensions = array( "BlogFilter", ); - private static $defaults = array( "ProvideComments" => false, ); + private static $description = 'Adds a blog to your website.'; public function getCMSFields() { $self =& $this; $this->beforeUpdateCMSFields(function($fields) use ($self) { - - $posts = $self->getBlogPosts(); - $excluded = $self->getExcludedSiteTreeClassNames(); - if(!empty($excluded)) { - $posts = $posts->filter("ClassName", $excluded); - $gridField = new GridField( - "BlogPost", - _t("Blog.BlogPosts", "Blog Posts"), - $posts, - GridFieldConfig_BlogPost::create() - ); - $fields->addFieldToTab("Root.BlogPosts", $gridField); - } // Create categories and tag config $config = GridFieldConfig_RecordEditor::create(); @@ -85,6 +69,11 @@ class Blog extends Page { }); $fields = parent::getCMSFields(); + + // Ensure we're using the BlogPost GridField config and not Lumberjack's + $gridField = $fields->dataFieldByName('ChildPages'); + $gridField->setConfig(GridFieldConfig_BlogPost::create()); + return $fields; } @@ -101,26 +90,7 @@ class Blog extends Page { /** - * Loops through subclasses of BlogPost and checks whether they have been configured - * to be hidden. If so, then they will be excluded from the SiteTree. - * - * @return array - **/ - public function getExcludedSiteTreeClassNames() { - $classes = array(); - $tmpClasses = $this->allowedChildren(); - foreach($tmpClasses as $class) { - if(!Config::inst()->get($class, "show_in_sitetree")) { - $classes[$class] = $class; - } - } - return $classes; - } - - - - /** - * Return blogs posts + * Return blog posts * * @return DataList of BlogPost objects **/ @@ -160,6 +130,16 @@ class Blog extends Page { return $this->getBlogPosts()->setDataQuery($query); } + + /** + * This sets the title for our gridfield + * + * @return string + */ + public function getLumberjackTitle() { + return _t('Blog.LumberjackTitle', 'Blog Posts'); + } + } diff --git a/model/BlogCategory.php b/code/model/BlogCategory.php old mode 100755 new mode 100644 similarity index 100% rename from model/BlogCategory.php rename to code/model/BlogCategory.php diff --git a/model/BlogPost.php b/code/model/BlogPost.php old mode 100755 new mode 100644 similarity index 76% rename from model/BlogPost.php rename to code/model/BlogPost.php index 773f010..d762036 --- a/model/BlogPost.php +++ b/code/model/BlogPost.php @@ -58,31 +58,26 @@ class BlogPost extends Page { public function getCMSFields() { + Requirements::css(BLOGGER_DIR . '/css/cms.css'); $self =& $this; $this->beforeUpdateCMSFields(function($fields) use ($self) { - // Add Publish date fields - $fields->insertAfter( - $publishDate = DatetimeField::create("PublishDate", _t("BlogPost.PublishDate", "Publish Date")), - "Content" - ); + $fields->addFieldsToTab('Root.Main', array( + HeaderField::create('Post Options', 3), + $publishDate = DatetimeField::create("PublishDate", _t("BlogPost.PublishDate", "Publish Date")), + ListboxField::create( + "Categories", + _t("BlogPost.Categories", "Categories"), + $self->Parent()->Categories()->map()->toArray() + )->setMultiple(true), + ListboxField::create( + "Tags", + _t("BlogPost.Tags", "Tags"), + $self->Parent()->Tags()->map()->toArray() + )->setMultiple(true) + )); $publishDate->getDateField()->setConfig("showcalendar", true); - // Add Categories & Tags fields - $categoriesField = ListboxField::create( - "Categories", - _t("BlogPost.Categories", "Categories"), - $self->Parent()->Categories()->map()->toArray() - )->setMultiple(true); - $fields->insertAfter($categoriesField, "PublishDate"); - - $tagsField = ListboxField::create( - "Tags", - _t("BlogPost.Tags", "Tags"), - $self->Parent()->Tags()->map()->toArray() - )->setMultiple(true); - $fields->insertAfter($tagsField, "Categories"); - // Add featured image $fields->insertBefore( $uploadField = UploadField::create("FeaturedImage", _t("BlogPost.FeaturedImage", "Featured Image")), @@ -92,6 +87,28 @@ class BlogPost extends Page { }); $fields = parent::getCMSFields(); + + // We're going to make an SEO tab and move all the usual crap there + $menuTitle = $fields->dataFieldByName('MenuTitle'); + $urlSegment = $fields->dataFieldByName('URLSegment'); + $fields->addFieldsToTab('Root.SEO', array( + $menuTitle, + $urlSegment, + )); + + $metaField = $fields->fieldByName('Root.Main.Metadata'); + if($metaField) { + $metaFields = $metaField->getChildren(); + if($metaFields->count() > 0) { + $tab = $fields->findOrMakeTab('Root.SEO'); + $tab->push(HeaderField::create('Meta', 3)); + foreach($metaFields as $field) { + $tab->push($field); + } + } + $fields->removeByName('Metadata'); + } + return $fields; } diff --git a/model/BlogTag.php b/code/model/BlogTag.php old mode 100755 new mode 100644 similarity index 100% rename from model/BlogTag.php rename to code/model/BlogTag.php diff --git a/widgets/BlogArchiveWidget.php b/code/widgets/BlogArchiveWidget.php old mode 100755 new mode 100644 similarity index 100% rename from widgets/BlogArchiveWidget.php rename to code/widgets/BlogArchiveWidget.php diff --git a/widgets/BlogCategoriesWIdget.php b/code/widgets/BlogCategoriesWIdget.php old mode 100755 new mode 100644 similarity index 100% rename from widgets/BlogCategoriesWIdget.php rename to code/widgets/BlogCategoriesWIdget.php diff --git a/widgets/BlogRecentPostsWidget.php b/code/widgets/BlogRecentPostsWidget.php old mode 100755 new mode 100644 similarity index 100% rename from widgets/BlogRecentPostsWidget.php rename to code/widgets/BlogRecentPostsWidget.php diff --git a/widgets/BlogTagsWidget.php b/code/widgets/BlogTagsWidget.php old mode 100755 new mode 100644 similarity index 100% rename from widgets/BlogTagsWidget.php rename to code/widgets/BlogTagsWidget.php diff --git a/composer.json b/composer.json index 541e82e..dbc79e9 100755 --- a/composer.json +++ b/composer.json @@ -4,7 +4,8 @@ "keywords": ["silverstripe", "blog", "news"], "type": "silverstripe-module", "require": { - "silverstripe/cms": "~3.1" + "silverstripe/cms": "^3.1.0", + "micmania1/silverstripe-lumberjack": "1.0.*@stable" }, "license": "BSD-2-Clause", "authors": [ diff --git a/css/cms.css b/css/cms.css index ba96947..86d67f6 100755 --- a/css/cms.css +++ b/css/cms.css @@ -5,42 +5,19 @@ * Include Compass framework */ /* * Sprite maps & Icons */ -/* line 42, blog-icon/*.png */ -.blog-icon-sprite, .blog-icon .blog-icon-timer { - background: url('../images/blog-icon-s1d712fffa2.png') no-repeat; +/* line 48, blog-icon/*.png */ +.blog-icon-sprite, .gridfield-icon .blog-icon-timer { + background-image: url('../images/blog-icon-s0a5ab5f851.png'); + background-repeat: no-repeat; } -/* line 60, ../../../../lib/gems/1.8/gems/compass-0.12.2/frameworks/compass/stylesheets/compass/utilities/sprites/_base.scss */ -.blog-icon .blog-icon-timer { +/* line 84, ../../../../home/vagrant/.rvm/gems/ruby-2.1.5/gems/compass-core-1.0.1/stylesheets/compass/utilities/sprites/_base.scss */ +.gridfield-icon .blog-icon-timer { background-position: 0 0; } -/* line 21, ../scss/cms.scss */ -.cms .ss-gridfield .gridfield-dropdown { - margin: 3px 8px 0 0; - border-bottom: none; -} -/* line 26, ../scss/cms.scss */ -.cms .ss-gridfield .gridfield-dropdown .chzn-container, -.cms .ss-gridfield .gridfield-dropdown .dropdown { - min-width: 195px; -} -/* line 35, ../scss/cms.scss */ -.cms table.ss-gridfield-table tr td .blog-icon { - width: 16px; - height: 16px; - display: block; +/* line 18, ../scss/cms.scss */ +#FeaturedImage .middleColumn { + clear: none; float: left; - margin-right: 6px; -} -/* line 42, ../scss/cms.scss */ -.cms table.ss-gridfield-table tr td .modified { - margin-left: 5px; - color: #7E7470; - background-color: #fff0bc; - padding: 1px 3px; - border: 1px solid #C9B800; - font-size: 80%; - border-radius: 3px; - text-transform: uppercase; } diff --git a/forms/gridfield/GridFieldBlogPostAddNewButton.php b/forms/gridfield/GridFieldBlogPostAddNewButton.php deleted file mode 100755 index 1c266c8..0000000 --- a/forms/gridfield/GridFieldBlogPostAddNewButton.php +++ /dev/null @@ -1,126 +0,0 @@ -canCreate()} for this record - * returns true. - * - * @package framework - * @subpackage fields-gridfield - * - * @author Michael Strong - */ -class GridFieldBlogPostAddNewButton extends GridFieldAddNewButton - implements GridField_ActionProvider { - - public function getHTMLFragments($gridField) { - $singleton = singleton($gridField->getModelClass()); - - if(!$singleton->canCreate()) { - return array(); - } - - $parent = SiteTree::get()->byId(Controller::curr()->currentPageID()); - - if(!$this->buttonName) { - // provide a default button name, can be changed by calling {@link setButtonName()} on this component - $objectName = $singleton->i18n_singular_name(); - $this->buttonName = _t('GridFieldSiteTreeAddNewButton.Add', 'Add {name}', "Add button text", array('name' => $singleton->i18n_singular_name())); - } - - $state = $gridField->State->GridFieldSiteTreeAddNewButton; - $state->currentPageID = $parent->ID; - $state->pageType = $parent->defaultChild(); - - $addAction = new GridField_FormAction($gridField, - 'add', - $this->buttonName, - 'add', - 'add' - ); - $addAction->setAttribute('data-icon', 'add')->addExtraClass("no-ajax"); - - $allowedChildren = $parent->allowedChildren(); - $children = array(); - foreach($allowedChildren as $class) { - if(!Config::inst()->get($class, "show_in_sitetree")) { - $children[$class] = singleton($class)->i18n_singular_name(); - } - } - - $pageTypes = DropdownField::create( - "PageType", - "Page Type", - $children, - $singleton->defaultChild() - ); - $pageTypes->setFieldHolderTemplate("BlogDropdownField_holder") - ->addExtraClass("gridfield-dropdown no-change-track"); - - $forTemplate = new ArrayData(array()); - $forTemplate->Fields = new ArrayList(); - $forTemplate->Fields->push($pageTypes); - $forTemplate->Fields->push($addAction); - - Requirements::css(blog_dir() . "/css/cms.css"); - Requirements::javascript(blog_dir() . "/javascript/GridField.js"); - - return array( - $this->targetFragment => $forTemplate->renderWith("GridFieldSiteTreeAddNewButton") - ); - } - - - - /** - * Provide actions to this component. - * - * @param $gridField GridField - * - * @return array - **/ - public function getActions($gridField) { - return array("add"); - } - - - - /** - * Handles the add action, but only acts as a wrapper for {@link CMSPageAddController::doAdd()} - * - * @param $gridFIeld GridFIeld - * @param $actionName string - * @param $arguments mixed - * @param $data array - **/ - public function handleAction(GridField $gridField, $actionName, $arguments, $data) { - if($actionName == "add") { - $tmpData = json_decode($data['BlogPost']['GridState'], true); - $tmpData = $tmpData['GridFieldSiteTreeAddNewButton']; - - $data = array( - "ParentID" => $tmpData['currentPageID'], - "PageType" => $tmpData['pageType'] - ); - - $controller = Injector::inst()->create("CMSPageAddController"); - - $form = $controller->AddForm(); - $form->loadDataFrom($data); - - $controller->doAdd($data, $form); - $response = $controller->getResponseNegotiator()->getResponse(); - - // Get the current record - $record = SiteTree::get()->byId($controller->currentPageID()); - if($record) { - $response->redirect(Director::absoluteBaseURL() . $record->CMSEditLink(), 301); - } - return $response; - - } - } - -} diff --git a/forms/gridfield/GridFieldSiteTreeEditButton.php b/forms/gridfield/GridFieldSiteTreeEditButton.php deleted file mode 100755 index 363e0e5..0000000 --- a/forms/gridfield/GridFieldSiteTreeEditButton.php +++ /dev/null @@ -1,31 +0,0 @@ - -**/ -class GridFieldSiteTreeEditButton extends GridFieldEditButton { - - /** - * @param GridField $gridField - * @param DataObject $record - * @param string $columnName - * - * @return string - the HTML for the column - */ - public function getColumnContent($gridField, $record, $columnName) { - // No permission checks - handled through GridFieldDetailForm - // which can make the form readonly if no edit permissions are available. - - $data = new ArrayData(array( - 'Link' => $record->CMSEditLink() - )); - - return $data->renderWith('GridFieldEditButton'); - } - -} \ No newline at end of file diff --git a/images/blog-icon-s0a5ab5f851.png b/images/blog-icon-s0a5ab5f851.png new file mode 100644 index 0000000000000000000000000000000000000000..1668f7a748b75abd1239f984b762017ae3d75f2a GIT binary patch literal 680 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl482JKxLR^7d*49s~Z6CQB9&p#) z<*B_ZP<2_b>XK0T8Oi(|(z%g5Cm&W?`G zPEH`??Cesz*45F`9SEwIdwO~XHLeP8S(VeZq@;IIW8bXK>5C_olujutpFU^dj2ScL zELgl@!-n0vckkJ=XD<-!+rMw`zQc!)oIij5?%lih@85s$;K9q6FW||6bKC7l9!X zRTAVE%=rKRmoJ|_J$wB7(xw0B|Npc*$(ljoVTu3$8~o>yPrUeCyzlEtb{;1nwt2Sd_zS<^{g2WlCUQTeH zT6?T+@4V;@|5hs*OnmdH@m1xXY$a#y(wOGZvTcF~j?HJ8YtzbmDMn=8Y1YOHZDy-U zI~HivCo#pJTY6D$&f4df)Foomv!luqy4L3yWNqrvpMO}l>W!=VV>21Q^s{yR iTxPm*=W)TzZ~U=Ap{A33_znWS&fw|l=d#Wzp$PzZm|+|M literal 0 HcmV?d00001 diff --git a/images/blog-icon-s1d712fffa2.png b/images/blog-icon-s1d712fffa2.png deleted file mode 100755 index 91db84e6bdd19fb18cb9b4be8943e28edb7c5066..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 800 zcmXBS>rYZ~7zgmME_>6(($-clSq>G{=s*-G$>An&P*XEXEyAcJMJ3JE zCd=BIwKnn63tdjb3!u)^=De0%wPc#eEipkZryuLH@ArBBfaiGvQ*(9`4ig{<+D##o z=wR=ScgGemkDpGy0znBAa6Tg|lSs@Wk;vKExny!4IVYb&&d<$-sh40X6^3CN^%Cv! zWjY89(`hsY9fZ!f!eB72UAxL;F_{HSRw1i^T>w(ZE@T%KaX1JUDMAnqf*@Qj!sYP= zd>)U_7YKx6p-?0&E-n@dM8#r}NFoxWB8gNikxC>|RDzqGCDFEH#UZiVc#$e8y_E^04Ap6zKt@85sS&6zD`v)N*?SmSI~o84x! z+wBg!W8N`8Kfkc>3t0Tm>2xlFE-fuBFE9TFTq`T9ZkNmD20UJm$K&;SeLfJt@AHGK z`Qz690D<+jxIiGVz8>%T-?$AR7z~C&o8fRc5{X2kQ5?sgolhl#;}R&Oi;QZspveR! zD*7`b;bR2;+0Hsuc;9tAhTq*}C#3qkFU*)4j}f#PoM}PgPAkn4jWs!^8XII?9q5*= zo>q6C0UI70-MmjDc+Z`9-OnGlSK*;(*l|HL)3_jRVd*=Od&eWV%d2qA9f`t?vB4o9 z-Z3lxtB904{26Tdfz5$G>X5@iR2)iYol5Bq<-1dkB^i?2tE>u~)BB;LHr)L?{pf*- z?c35lcnAy1y~v)tF10Rg*RwQjz0C7D#^vG83j2=bJ)xwPxut%Kqo*9*V5tr+(xcd_ z{$xs*ZstsqOBo&dwDI%f7ayL&d|t!TztRN#FKL?nt8%FJ{SDV^-6Qb$5JbtMlG-!5 F%6}TW)y4n- diff --git a/images/blog-icon/timer.png b/images/blog-icon/timer.png index a71bc4d36764e793c9af9cb96cb61a65a20b0816..9a668f638a469f66b87cf0c18cde7dc01439e278 100755 GIT binary patch delta 821 zcmV-51Iql32FwPKB!2{RLP=Bz2nYy#2xN!=000SaNLh0L0040S0040T96x|}0000P zbVXQnQ*UN;cVTj60C#tHE@^ISb7Ns}WiD@WXPfRk8UO$S$w@>(R5*=wlV504R~*Mb z=iVf3yjlNEN$$PQY^YsJh-hoTv5F>$E%mLX+tXkS#$ct4;eVbw*w~n&s1)%JzDNgs znq@vXEVM{ls0GoaW=);59sR4#Z8O@TiLsX?#|PIyY5l^1bKrMA=lst1dxVsdt#mvR z`8Y4cUI10fse!@4(XHx~^@$KdG&MCgo<)Sr&$203fAA zO3B#RLr&gK@hsy=?EB|xLtkIta|OUE54J7)js#o%X$(V0Q4|u11eRr?sw%3gq9_W6 zq0{P5v+O$(w912RMHe!fKj6zw5~?=QbsZrDO^uE8_xG$Y$TPgTz~~u$`4Afa8Cg7LsZWLaY>fR!oDh zPW{5f!~{;ipS1^3sHi|nNm4b??74;F4Lq5dN6YTrjE+x}OeTwuCZ!}02!N*HJlsI) z-6}@Mr&)II#*>+OR0NbQMSH!AgYjD_li9g>@_+gKmSc8qo?9ss@8V#*Y$@8iF$Znm zwoKM`{CbG^JFWgS$HNU9axgG-m*3|++++WX>c^KpkM(xl+yDRwes=nsMYHickK48L zp!gfZZ3D2FbrF>{q_g%@<5~atL{I0%O-Wo=eM@`of7=iKytd8zVMg2aK7f{)pDlU0 z^e&|0-{=pqn^zuh`U`JUI2`r?3=IugZ>xC?6V^M+JR{J600000NkvXXu0mjfMJvP5*1CO zqa0J=OdTB^LDzL2%Vqg^JRW{OTU7wrY!+Ux7Y>I5wk?+kz_w8$KnWZS1}hu?)hU2w zS;*ybXlrXjp-{l$@-i%8p==rmH2M(^hoLA6wzjqq3WcDm>i+=S+uMA2ZtfG3^WU(# zwu(EqZ{f@5uYX7+6X@-|fZ?Gbw6?bL-cYEE0T@QomWSVe_=x8(USej$lhOC&dz^ z4dt?l!NIFES)$E?8TkEv(%gcBVu64tR@ygqZ4AZY0fZswOc|<85y`kpr9X(r<21JE zb^(QeW3d<_kpVn-_y}51WAJygvz6YUpG<`r$Otv93E4~r_OZnbjtO)nwSw`x_we@3 zYeYv!S$}GdWcYkOn1%_L%LP?-m_+XHzlffm9-?Nlc0syj)H;n{&CKBb&RR;!P39W7e&Z%mOH1hM>yt+-0Gg&@ zXD5gD_I5m;nj-Uj?C|i&2%5=l33MqE!IRiCWNs+FKp;T9(7*tvohZ#qr_-pZt)-m( z9MwUw$eS9emAj~YQ>hfRCJo))A)c32^)c=5?_+awlW!5!WO7vygM5AuVWNF<^GQ_! noRpLxJCf`{eZ7kft1jR#eMNtUT=r-G00000NkvXXu0mjf)%{y6 diff --git a/javascript/GridField.js b/javascript/GridField.js deleted file mode 100755 index b2f7802..0000000 --- a/javascript/GridField.js +++ /dev/null @@ -1,16 +0,0 @@ -(function($){ - - $.entwine('ss', function($) { - $('.ss-gridfield .field .gridfield-dropdown').entwine({ - - onchange: function() { - var gridField = this.getGridField(); - var state = gridField.getState().GridFieldSiteTreeAddNewButton; - - state.pageType = this.val(); - gridField.setState("GridFieldSiteTreeAddNewButton", state); - } - }); - }); - -}(jQuery)); \ No newline at end of file diff --git a/lang/en.yml b/lang/en.yml index d2013d1..fa656fa 100755 --- a/lang/en.yml +++ b/lang/en.yml @@ -3,8 +3,6 @@ en: AddFail: 'Unable to save {class} to the database.' PermissionFail: 'You don''t have permission to create a {class}.' Add: 'Add {name}' - GridFieldSiteTreeAddNewButton: - Add: 'Add {name}' GridFieldBlogPostState: StateTitle: 'State' Draft: ' Saved as Draft on {date}' diff --git a/scss/cms.scss b/scss/cms.scss index bb8ed21..39e02da 100755 --- a/scss/cms.scss +++ b/scss/cms.scss @@ -11,45 +11,11 @@ @import "compass/utilities/sprites/base"; @import "blog-icon/*.png"; -.blog-icon { +.gridfield-icon { @include all-blog-icon-sprites; } -.cms { - - .ss-gridfield { - .gridfield-dropdown { - margin: 3px 8px 0 0; - border-bottom: none; - - .chzn-container, - .dropdown { - min-width: 195px; - } - } - } - - table.ss-gridfield-table { - tr { - td { - .blog-icon { - width: 16px; - height: 16px; - display: block; - float: left; - margin-right: 6px; - } - .modified { - margin-left: 5px; - color: #7E7470; - background-color: #fff0bc; - padding: 1px 3px; - border: 1px solid #C9B800; - font-size: 80%; - border-radius: 3px; - text-transform: uppercase; - } - } - } - } +#FeaturedImage .middleColumn { + clear: none; + float: left; } \ No newline at end of file diff --git a/templates/forms/GridFieldAddByDBField.ss b/templates/GridFieldAddByDBField.ss old mode 100755 new mode 100644 similarity index 100% rename from templates/forms/GridFieldAddByDBField.ss rename to templates/GridFieldAddByDBField.ss diff --git a/templates/forms/BlogDropdownField_holder.ss b/templates/forms/BlogDropdownField_holder.ss deleted file mode 100755 index 3a740ea..0000000 --- a/templates/forms/BlogDropdownField_holder.ss +++ /dev/null @@ -1,3 +0,0 @@ -
- $Field -
diff --git a/templates/forms/GridFieldSiteTreeAddNew.ss b/templates/forms/GridFieldSiteTreeAddNew.ss deleted file mode 100755 index 12fa97e..0000000 --- a/templates/forms/GridFieldSiteTreeAddNew.ss +++ /dev/null @@ -1,3 +0,0 @@ -<% loop Fields %> - $Field -<% end_loop %> \ No newline at end of file diff --git a/templates/forms/GridFieldSiteTreeAddNewButton.ss b/templates/forms/GridFieldSiteTreeAddNewButton.ss deleted file mode 100755 index 6202e8f..0000000 --- a/templates/forms/GridFieldSiteTreeAddNewButton.ss +++ /dev/null @@ -1,3 +0,0 @@ -<% loop Fields %> - $FieldHolder -<% end_loop %> \ No newline at end of file