From 54599b98d11fae2870bce951d87fd64826578bfe Mon Sep 17 00:00:00 2001 From: UndefinedOffset Date: Wed, 1 Apr 2015 11:54:13 -0300 Subject: [PATCH 1/8] BUGFIX: Fixed issue where Widget::CMSEditor() can't see the enabled checkbox --- code/model/Widget.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/code/model/Widget.php b/code/model/Widget.php index 7eaad5c..a1444f4 100644 --- a/code/model/Widget.php +++ b/code/model/Widget.php @@ -159,10 +159,18 @@ class Widget extends DataObject { * @return FieldList */ public function getCMSFields() { - $fields = parent::getCMSFields(); + $fields = $this->scaffoldFormFields(array( + // Don't allow has_many/many_many relationship editing before the record is first saved + 'includeRelations' => ($this->ID > 0), + 'tabbed' => false, + 'ajaxSafe' => true + )); + $fields->removeByName('ParentID'); $fields->removeByName('Sort'); + $this->extend('updateCMSFields', $tabbedFields); + return $fields; } From 25a1a35a0b1d84290481d6a537adb6370829aa40 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Thu, 30 Apr 2015 22:58:48 +1200 Subject: [PATCH 2/8] Limit 1.0 compat to 3.1.* --- .travis.yml | 5 +---- README.md | 2 +- composer.json | 4 ++-- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3f769c6..b51d45f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,14 +6,11 @@ php: env: - DB=MYSQL CORE_RELEASE=3.1 - - DB=PGSQL CORE_RELEASE=3.1 matrix: include: - php: 5.4 - env: DB=MYSQL CORE_RELEASE=3 - - php: 5.4 - env: DB=MYSQL CORE_RELEASE=master + env: DB=PGSQL CORE_RELEASE=3.1 before_script: - git clone git://github.com/silverstripe-labs/silverstripe-travis-support.git ~/travis-support diff --git a/README.md b/README.md index bf4269a..ebdefec 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Widgets Module -[![Build Status](https://secure.travis-ci.org/silverstripe/silverstripe-widgets.png?branch=master)](http://travis-ci.org/silverstripe/silverstripe-widgets) +[![Build Status](https://secure.travis-ci.org/silverstripe/silverstripe-widgets.png?branch=1.0)](http://travis-ci.org/silverstripe/silverstripe-widgets) ## Introduction diff --git a/composer.json b/composer.json index a3bded1..b827b52 100644 --- a/composer.json +++ b/composer.json @@ -10,8 +10,8 @@ } ], "require": { - "silverstripe/framework": ">=3.1", - "silverstripe/cms": ">=3.1" + "silverstripe/framework": "3.1.*", + "silverstripe/cms": "3.1.*" }, "require-dev": { "phpunit/PHPUnit": "~3.7@stable" From ed6114a7dcbca9d67e3e74917b972645d8a313ca Mon Sep 17 00:00:00 2001 From: Damian Mooyman Date: Thu, 14 May 2015 10:50:33 +1200 Subject: [PATCH 3/8] BUG Fix incorrect extension variable Fixes silverstripe/silverstripe-blog#233 --- code/model/Widget.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/model/Widget.php b/code/model/Widget.php index a1444f4..b8c8f56 100644 --- a/code/model/Widget.php +++ b/code/model/Widget.php @@ -169,7 +169,7 @@ class Widget extends DataObject { $fields->removeByName('ParentID'); $fields->removeByName('Sort'); - $this->extend('updateCMSFields', $tabbedFields); + $this->extend('updateCMSFields', $fields); return $fields; } From bf5a08da765ae5c018c81c0cf7890888252f1e58 Mon Sep 17 00:00:00 2001 From: Christopher Pitt Date: Wed, 20 May 2015 08:57:16 +1200 Subject: [PATCH 4/8] Updated translations --- lang/de.yml | 21 ++++++++++++--------- lang/fi.yml | 27 +++++++++++++++------------ lang/nl.yml | 17 +++++++---------- lang/sv.yml | 21 ++++++++++++--------- 4 files changed, 46 insertions(+), 40 deletions(-) diff --git a/lang/de.yml b/lang/de.yml index 5065295..07ba963 100644 --- a/lang/de.yml +++ b/lang/de.yml @@ -1,14 +1,17 @@ de: WidgetAreaEditor_ss: - AVAILABLE: "Vorhandene Widgets" - AVAILWIDGETS: "Klicke den Widget Titel, um es zu benutzen." - NOAVAIL: "Es sind derzeit keine Widgets verfügbar." - INUSE: "Benutzte Widgets" - TOSORT: "Um die Widgets auf dieser Seite zu sortieren, ziehe sie nach oben oder unten." + AVAILABLE: 'Vorhandene Widgets' + AVAILWIDGETS: 'Klicke den Widget Titel, um es zu benutzen.' + NOAVAIL: 'Es sind derzeit keine Widgets verfügbar.' + INUSE: 'Benutzte Widgets' + TOSORT: 'Um die Widgets auf dieser Seite zu sortieren, ziehe sie nach oben oder unten.' WidgetEditor_ss: - DELETE: "Löschen" + DELETE: Löschen WidgetDescription_ss: - CLICKTOADDWIDGET: "Klicke um dieses Widget hinzuzufügen" + CLICKTOADDWIDGET: 'Klicke um dieses Widget hinzuzufügen' WidgetArea: - PLURALNAME: "Widgetbereiche" - SINGULARNAME: "Widgetbereich" \ No newline at end of file + PLURALNAME: 'Widgetbereiche' + SINGULARNAME: 'Widgetbereich' + Widget: + PLURALNAME: Widgets + SINGULARNAME: Widget diff --git a/lang/fi.yml b/lang/fi.yml index b30fd98..4121e79 100644 --- a/lang/fi.yml +++ b/lang/fi.yml @@ -1,14 +1,17 @@ fi: - WidgetAreaEditor.ss: - AVAILABLE: "Tarjolla olevat vimpaimet" - AVAILWIDGETS: "Klikkaa vimpaimen nimeä ottaaksesi se käyttöön tällä sivulla." - NOAVAIL: "Ei vimpaimia käytettävissä." - INUSE: "Käytössä olevat vimpaimet" - TOSORT: "Järjestääksesi käytössä olevat vimpamet, raahaa ne haluamaasi järjestykseen" - WidgetEditor.ss: - DELETE: "Poista" - WidgetDescription.ss: - CLICKTOADDWIDGET: "Lisää vimpain klikkaamalla" + WidgetAreaEditor_ss: + AVAILABLE: 'Käytettävissä olevat vimpaimet' + AVAILWIDGETS: 'Napsauta vimpaimen otsikkoa alla ottaaksesi se käyttöön tällä sivulla.' + NOAVAIL: 'Tällä hetkellä ei vimpaimia tarjolla.' + INUSE: 'Käytössä olevat vimpaimet' + TOSORT: 'Järjestääksesi käytössä olevat vimpaimet, raahaa ja pudota ne paikoilleen.' + WidgetEditor_ss: + DELETE: Poista + WidgetDescription_ss: + CLICKTOADDWIDGET: 'Napsauta lisätäksesi tämä vimpain' WidgetArea: - PLURALNAME: "Vimpain alueet" - SINGULARNAME: "Vimpain alue" \ No newline at end of file + PLURALNAME: 'Vimpain alueet' + SINGULARNAME: 'Vimpain alue' + Widget: + PLURALNAME: Vimpaimet + SINGULARNAME: Vimpain diff --git a/lang/nl.yml b/lang/nl.yml index 6ba87fc..72b694c 100644 --- a/lang/nl.yml +++ b/lang/nl.yml @@ -1,14 +1,11 @@ nl: WidgetAreaEditor_ss: - AVAILABLE: "Beschikbare Widgets" - AVAILWIDGETS: "Klik op een widget titel hieronder, om de widget te gebruiken op deze pagina." - NOAVAIL: "Er zijn geen widgets beschikbaar." - INUSE: "Huidige gebruikte Widgets" - TOSORT: "Om uw widgets te sorteren op deze pagina, rangschik met drag & drop." + AVAILABLE: 'Beschikbare Widgets' + AVAILWIDGETS: 'Klik op een widget titel hieronder, om de widget te gebruiken op deze pagina.' + NOAVAIL: 'Er zijn geen widgets beschikbaar.' + INUSE: 'Huidige gebruikte Widgets' + TOSORT: 'Om uw widgets te sorteren op deze pagina, rangschik met drag & drop.' WidgetEditor_ss: - DELETE: "Verwijderen" + DELETE: Verwijderen WidgetDescription_ss: - CLICKTOADDWIDGET: "Klik om deze widget toe te voegen" - WidgetArea: - PLURALNAME: "Widget plaatsen" - SINGULARNAME: "Widget plaats" + CLICKTOADDWIDGET: 'Klik om deze widget toe te voegen' diff --git a/lang/sv.yml b/lang/sv.yml index c956cb8..b41856d 100644 --- a/lang/sv.yml +++ b/lang/sv.yml @@ -1,14 +1,17 @@ sv: WidgetAreaEditor_ss: - AVAILABLE: "Tillgängliga widgets" - AVAILWIDGETS: "Klicka på en widget nedan för att använda den på sidan." - NOAVAIL: "Inga widgets tillängliga." - INUSE: "Använda widgets" - TOSORT: "För att sortera widgetar på denna sida, dra dem uppåt eller nedåt." + AVAILABLE: 'Tillgängliga widgets' + AVAILWIDGETS: 'Klicka på en widget nedan för att använda den på sidan.' + NOAVAIL: 'Inga widgets tillängliga.' + INUSE: 'Använda widgets' + TOSORT: 'För att sortera widgetar på denna sida, dra dem uppåt eller nedåt.' WidgetEditor_ss: - DELETE: "Radera" + DELETE: Radera WidgetDescription_ss: - CLICKTOADDWIDGET: "Klicka för att lägga till denna widget" + CLICKTOADDWIDGET: 'Klicka för att lägga till denna widget' WidgetArea: - PLURALNAME: "Widget Areas" - SINGULARNAME: "Widget Area" \ No newline at end of file + PLURALNAME: 'Widgetområden' + SINGULARNAME: 'Widgetområde' + Widget: + PLURALNAME: Widgets + SINGULARNAME: Widget From 4d9fc0056c4b2df873ecada3b37a6ca7443028e2 Mon Sep 17 00:00:00 2001 From: Daniel Hensby Date: Mon, 20 Jul 2015 16:02:21 +0100 Subject: [PATCH 5/8] Move to new travis containerised infrastructure --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index b51d45f..9b03482 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,6 +4,8 @@ language: php php: - 5.3 +sudo: false + env: - DB=MYSQL CORE_RELEASE=3.1 From c332a6ab8b95243584ff19b1dfed194464039391 Mon Sep 17 00:00:00 2001 From: Damian Mooyman Date: Thu, 20 Aug 2015 12:47:38 +1200 Subject: [PATCH 6/8] Update translations --- lang/ar.yml | 17 +++++++++++++++++ lang/en.yml | 26 +++++++++++++------------- lang/eo.yml | 17 +++++++++++++++++ lang/it_IT.yml | 17 +++++++++++++++++ lang/pl_PL.yml | 11 +++++++++++ lang/ro_RO.yml | 11 +++++++++++ lang/ru.yml | 17 +++++++++++++++++ lang/zh.yml | 17 +++++++++++++++++ 8 files changed, 120 insertions(+), 13 deletions(-) create mode 100644 lang/ar.yml create mode 100644 lang/eo.yml create mode 100644 lang/it_IT.yml create mode 100644 lang/pl_PL.yml create mode 100644 lang/ro_RO.yml create mode 100644 lang/ru.yml create mode 100644 lang/zh.yml diff --git a/lang/ar.yml b/lang/ar.yml new file mode 100644 index 0000000..8c33167 --- /dev/null +++ b/lang/ar.yml @@ -0,0 +1,17 @@ +ar: + WidgetAreaEditor_ss: + AVAILABLE: 'التطبيقات المصغرة المتاحة' + AVAILWIDGETS: 'اضغط على عنوان تطبيق مصغر بالأسفل لاستخدامه بهذه الصفحة.' + NOAVAIL: 'لا توجد حاليا أية تطبيقات مصغرة متاحة.' + INUSE: 'التطبيقات المصغرة المستخدمة حاليا' + TOSORT: 'لترتيب التطبيقات المصغرة المستخدمة حاليا فى هذه الصفحة, اسحبها لأعلى و لأسفل.' + WidgetEditor_ss: + DELETE: مسح + WidgetDescription_ss: + CLICKTOADDWIDGET: 'اضغط لإضافة هذا التطبيق المصغر' + WidgetArea: + PLURALNAME: 'مساحات التطبيقات المصغرة' + SINGULARNAME: 'مساحة التطبيقات المصغرة' + Widget: + PLURALNAME: تطبيقات مصغرة + SINGULARNAME: تطبيق مصغر diff --git a/lang/en.yml b/lang/en.yml index 52c1659..b9c429a 100644 --- a/lang/en.yml +++ b/lang/en.yml @@ -1,17 +1,17 @@ en: - WidgetAreaEditor_ss: - AVAILABLE: 'Available Widgets' - AVAILWIDGETS: 'Click a widget title below to use it on this page.' - NOAVAIL: 'There are currently no widgets available.' - INUSE: 'Widgets currently used' - TOSORT: 'To sort currently used widgets on this page, drag them up and down.' - WidgetEditor_ss: - DELETE: Delete - WidgetDescription_ss: - CLICKTOADDWIDGET: 'Click to add this widget' - WidgetArea: - PLURALNAME: 'Widget Areas' - SINGULARNAME: 'Widget Area' Widget: PLURALNAME: Widgets SINGULARNAME: Widget + WidgetArea: + PLURALNAME: 'Widget Areas' + SINGULARNAME: 'Widget Area' + WidgetAreaEditor_ss: + AVAILABLE: 'Available Widgets' + AVAILWIDGETS: 'Click a widget title below to use it on this page.' + INUSE: 'Widgets currently used' + NOAVAIL: 'There are currently no widgets available.' + TOSORT: 'To sort currently used widgets on this page, drag them up and down.' + WidgetDescription_ss: + CLICKTOADDWIDGET: 'Click to add this widget' + WidgetEditor_ss: + DELETE: Delete diff --git a/lang/eo.yml b/lang/eo.yml new file mode 100644 index 0000000..d16ad73 --- /dev/null +++ b/lang/eo.yml @@ -0,0 +1,17 @@ +eo: + WidgetAreaEditor_ss: + AVAILABLE: 'Disponeblaj fenestraĵoj' + AVAILWIDGETS: 'Alklaku sube titolon de fenestraĵo por uzi ĝin en ĉi tiu paĝo.' + NOAVAIL: 'Aktuale mankas disponeblaj fenestraĵoj.' + INUSE: 'Fenestraĵoj aktuale uzataj' + TOSORT: 'Por ordigi aktuale uzatajn fenestraĵojn en ĉi tiu paĝo, ŝovu ilin supren kaj malsupren.' + WidgetEditor_ss: + DELETE: Forigi + WidgetDescription_ss: + CLICKTOADDWIDGET: 'Alklaku por aldoni la fenestraĵon' + WidgetArea: + PLURALNAME: 'Fenestraĵaj zonoj' + SINGULARNAME: 'Fenestraĵa zono' + Widget: + PLURALNAME: Fenestraĵoj + SINGULARNAME: Fenestraĵo diff --git a/lang/it_IT.yml b/lang/it_IT.yml new file mode 100644 index 0000000..85d8d92 --- /dev/null +++ b/lang/it_IT.yml @@ -0,0 +1,17 @@ +it_IT: + WidgetAreaEditor_ss: + AVAILABLE: 'Widgets disponibili' + AVAILWIDGETS: 'Clicca sul titolo di un widget qui sotto per usarlo in questa pagina' + NOAVAIL: 'Non ci sono widgets attualmente disponibili.' + INUSE: 'Widgets attualmente utilizzati' + TOSORT: 'Per ordinare i widgets utilizzati in questa pagina, trascinali in alto o in basso.' + WidgetEditor_ss: + DELETE: Cancella + WidgetDescription_ss: + CLICKTOADDWIDGET: 'Clicca per aggiungere questo widget' + WidgetArea: + PLURALNAME: 'Aree Widget' + SINGULARNAME: 'Area Widget' + Widget: + PLURALNAME: Widgets + SINGULARNAME: Widget diff --git a/lang/pl_PL.yml b/lang/pl_PL.yml new file mode 100644 index 0000000..d2ea217 --- /dev/null +++ b/lang/pl_PL.yml @@ -0,0 +1,11 @@ +pl_PL: + WidgetAreaEditor_ss: + AVAILABLE: 'Dostępne widżety' + AVAILWIDGETS: 'Kliknij w tytuł widżetu, aby używać go na tej stronie.' + NOAVAIL: 'Nie ma żadnych dostępnych widżetów' + INUSE: 'Obecnie stosowane widżety' + TOSORT: 'Aby posortować używane widżety na tej stronie, przeciągnij je w górę i w dół.' + WidgetEditor_ss: + DELETE: Usuń + WidgetDescription_ss: + CLICKTOADDWIDGET: 'Kliknij aby dodać ten widżet' diff --git a/lang/ro_RO.yml b/lang/ro_RO.yml new file mode 100644 index 0000000..dc2b137 --- /dev/null +++ b/lang/ro_RO.yml @@ -0,0 +1,11 @@ +ro_RO: + WidgetAreaEditor_ss: + AVAILABLE: 'Widget-uri disponibile' + AVAILWIDGETS: 'Faceți clic pe un titlu widget de mai jos pentru a-l folosi pe aceasta pagina.' + NOAVAIL: 'Momentan nu exista widget-uri disponibile.' + INUSE: 'Widget-uri utilizate în prezent' + TOSORT: 'Pentru a sorta widget-uri utilizate în prezent pe această pagină, trageți-le în sus și în jos.' + WidgetEditor_ss: + DELETE: Ştergeţi + WidgetDescription_ss: + CLICKTOADDWIDGET: 'Click pentru a adăuga acest widget' diff --git a/lang/ru.yml b/lang/ru.yml new file mode 100644 index 0000000..90ed1c1 --- /dev/null +++ b/lang/ru.yml @@ -0,0 +1,17 @@ +ru: + WidgetAreaEditor_ss: + AVAILABLE: 'Доступные виджеты' + AVAILWIDGETS: 'Щелкните заголовок виджета ниже, чтобы использовать его на этой странице.' + NOAVAIL: 'В данный момент доступных виджетов нет.' + INUSE: 'Используемые виджеты' + TOSORT: 'Чтобы расположить используемые на странице виджеты в нужном порядке, перетащите их вверх или вниз.' + WidgetEditor_ss: + DELETE: Удалить + WidgetDescription_ss: + CLICKTOADDWIDGET: 'Щелкните, чтобы добавить этот виджет' + WidgetArea: + PLURALNAME: 'Области виджетов' + SINGULARNAME: 'Область виджета' + Widget: + PLURALNAME: Виджеты + SINGULARNAME: Виджет diff --git a/lang/zh.yml b/lang/zh.yml new file mode 100644 index 0000000..ad6fd8b --- /dev/null +++ b/lang/zh.yml @@ -0,0 +1,17 @@ +zh: + WidgetAreaEditor_ss: + AVAILABLE: '可用的小工具' + AVAILWIDGETS: '点击下方的小工具名称即可在此页上使用。' + NOAVAIL: '目前没有可用小工具。' + INUSE: '当前使用的小工具' + TOSORT: '要对本页当前使用的小工具进行排序,请像上下拖拽。' + WidgetEditor_ss: + DELETE: 删除 + WidgetDescription_ss: + CLICKTOADDWIDGET: '点击添加该小工具' + WidgetArea: + PLURALNAME: '小工具区域' + SINGULARNAME: '小工具区域' + Widget: + PLURALNAME: 小工具 + SINGULARNAME: 小工具 From ff0178330ad4f40092f6a161a58af22ebbaf16a3 Mon Sep 17 00:00:00 2001 From: Matthew Hailwood Date: Tue, 22 Sep 2015 10:23:00 +1200 Subject: [PATCH 7/8] Support widget forms with InheritSidebar Currently the system assumes that if a widget ends up at "handleWidget" that the widget resides on the current page. This patch checks if we are inheriting the sidebar and if so finds the top level page with the widget. --- .../WidgetContentControllerExtension.php | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/code/controller/WidgetContentControllerExtension.php b/code/controller/WidgetContentControllerExtension.php index ceb6281..a9ccee1 100644 --- a/code/controller/WidgetContentControllerExtension.php +++ b/code/controller/WidgetContentControllerExtension.php @@ -28,11 +28,17 @@ class WidgetContentControllerExtension extends Extension { public function handleWidget() { $SQL_id = $this->owner->getRequest()->param('ID'); if(!$SQL_id) return false; - + + /** @var SiteTree $widgetOwner */ + $widgetOwner = $this->owner->data(); + while($widgetOwner->InheritSideBar && $widgetOwner->Parent()->exists()){ + $widgetOwner = $widgetOwner->Parent(); + } + // find WidgetArea relations $widgetAreaRelations = array(); - $hasOnes = $this->owner->data()->has_one(); - + $hasOnes = $widgetOwner->has_one(); + if(!$hasOnes) { return false; } @@ -51,7 +57,8 @@ class WidgetContentControllerExtension extends Extension { break; } - $widget = $this->owner->data()->$widgetAreaRelation()->Widgets( + + $widget = $widgetOwner->$widgetAreaRelation()->Widgets( sprintf('"Widget"."ID" = %d', $SQL_id) )->First(); } From 0f207180b4d1438431a01bce7eebb0ccef3ac17e Mon Sep 17 00:00:00 2001 From: John Milmine Date: Wed, 11 Nov 2015 15:01:03 +1300 Subject: [PATCH 8/8] Making widgets able to be used in a non page controller --- code/controller/WidgetController.php | 34 +++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/code/controller/WidgetController.php b/code/controller/WidgetController.php index 1008ee5..78eced3 100644 --- a/code/controller/WidgetController.php +++ b/code/controller/WidgetController.php @@ -50,15 +50,37 @@ class WidgetController extends Controller { */ public function Link($action = null) { $id = ($this->widget) ? $this->widget->ID : null; + $segment = Controller::join_links('widget', $id, $action); - - if($page = Director::get_current_page()) { + + $page = Director::get_current_page(); + if($page && !($page instanceof WidgetController)) { return $page->Link($segment); - } - - return Controller::curr()->Link($segment); + } + + if ($controller = $this->getParentController()) { + return $controller->Link($segment); + } + + return $segment; } - + + /** + * Cycles up the controller stack until it finds a non-widget controller + * This is needed because Controller::curr returns the widget controller, + * which means any Link function turns into endless loop. + * + * @return Controller + */ + public function getParentController() { + foreach(Controller::$controller_stack as $controller) { + if (!($controller instanceof WidgetController)) { + return $controller; + } + } + return false; + } + /** * @return Widget */