From 41e899ee7712a17f4a0a917b7fbdbd9fecacc79d Mon Sep 17 00:00:00 2001 From: KHysiek Date: Thu, 30 Aug 2012 00:27:54 +0300 Subject: [PATCH 01/42] Update core/components/articles/model/articles/articlesrouter.class.php Fixes for Tags and Archives not working in FURL mode when Articles' container is site_start. --- .../model/articles/articlesrouter.class.php | 30 +++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/core/components/articles/model/articles/articlesrouter.class.php b/core/components/articles/model/articles/articlesrouter.class.php index 4fbca95..4fcafd9 100644 --- a/core/components/articles/model/articles/articlesrouter.class.php +++ b/core/components/articles/model/articles/articlesrouter.class.php @@ -52,17 +52,29 @@ public function route() { /* get resource to redirect to */ $resourceId = false; $prefix = 'arc_'; + $startPageResId = false; + $startPagePrefix = ''; + $startPageId = $this->modx->getOption('site_start'); foreach ($containerIds as $archive) { $archive = explode(':',$archive); $archiveId = $archive[0]; $alias = array_search($archiveId,$this->modx->aliasMap); + if ($alias && ($startPageId == $archiveId)) { + $startPageResId = $archiveId; + if (isset($archive[1])) $startPagePrefix = $archive[1]; + } if ($alias && strpos($search,$alias) !== false) { $search = str_replace($alias,'',$search); $resourceId = $archiveId; if (isset($archive[1])) $prefix = $archive[1]; } } - if (!$resourceId) return false; + if (!$resourceId) { + if ($startPageResId) { + $resourceId = $startPageResId; + $prefix = $startPagePrefix; + } else return false; + } /* figure out archiving */ $params = explode('/', $search); @@ -85,13 +97,21 @@ public function route() { /* normal yyyy/mm/dd or yyyy/mm */ } else { /* set Archivist parameters for date-based archives */ - $_GET[$prefix.'year'] = $params[0]; - if (isset($params[1])) $_GET[$prefix.'month'] = $params[1]; - if (isset($params[2])) $_GET[$prefix.'day'] = $params[2]; + $pyear = $params[0]; + $pmonth = 1; + $pday = 1; + if (isset($params[1])) $pmonth = $params[1]; + if (isset($params[2])) $pday = $params[2]; + if (checkdate($pmonth, $pday, $pyear)) { + $_GET[$prefix.'year'] = $params[0]; + if (isset($params[1])) $_GET[$prefix.'month'] = $params[1]; + if (isset($params[2])) $_GET[$prefix.'day'] = $params[2]; + $result = true; + } else return false; } /* forward */ $this->modx->sendForward($resourceId); return true; } -} +} \ No newline at end of file From ef3b722b20ff481bca7c3ccac7cbc9e4ba94f47a Mon Sep 17 00:00:00 2001 From: KHysiek Date: Thu, 30 Aug 2012 00:31:41 +0300 Subject: [PATCH 02/42] Update core/components/articles/model/articles/articlesrouter.class.php Source beautification --- .../model/articles/articlesrouter.class.php | 37 +++++++++---------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/core/components/articles/model/articles/articlesrouter.class.php b/core/components/articles/model/articles/articlesrouter.class.php index 4fcafd9..3c7d016 100644 --- a/core/components/articles/model/articles/articlesrouter.class.php +++ b/core/components/articles/model/articles/articlesrouter.class.php @@ -52,29 +52,29 @@ public function route() { /* get resource to redirect to */ $resourceId = false; $prefix = 'arc_'; - $startPageResId = false; - $startPagePrefix = ''; - $startPageId = $this->modx->getOption('site_start'); + $startPageResId = false; + $startPagePrefix = ''; + $startPageId = $this->modx->getOption('site_start'); foreach ($containerIds as $archive) { $archive = explode(':',$archive); $archiveId = $archive[0]; $alias = array_search($archiveId,$this->modx->aliasMap); - if ($alias && ($startPageId == $archiveId)) { + if ($alias && ($startPageId == $archiveId)) { $startPageResId = $archiveId; if (isset($archive[1])) $startPagePrefix = $archive[1]; - } + } if ($alias && strpos($search,$alias) !== false) { $search = str_replace($alias,'',$search); $resourceId = $archiveId; if (isset($archive[1])) $prefix = $archive[1]; } } - if (!$resourceId) { - if ($startPageResId) { - $resourceId = $startPageResId; - $prefix = $startPagePrefix; - } else return false; - } + if (!$resourceId) { + if ($startPageResId) { + $resourceId = $startPageResId; + $prefix = $startPagePrefix; + } else return false; + } /* figure out archiving */ $params = explode('/', $search); @@ -97,17 +97,16 @@ public function route() { /* normal yyyy/mm/dd or yyyy/mm */ } else { /* set Archivist parameters for date-based archives */ - $pyear = $params[0]; - $pmonth = 1; - $pday = 1; - if (isset($params[1])) $pmonth = $params[1]; - if (isset($params[2])) $pday = $params[2]; - if (checkdate($pmonth, $pday, $pyear)) { + $pyear = $params[0]; + $pmonth = 1; + $pday = 1; + if (isset($params[1])) $pmonth = $params[1]; + if (isset($params[2])) $pday = $params[2]; + if (checkdate($pmonth, $pday, $pyear)) { $_GET[$prefix.'year'] = $params[0]; if (isset($params[1])) $_GET[$prefix.'month'] = $params[1]; if (isset($params[2])) $_GET[$prefix.'day'] = $params[2]; - $result = true; - } else return false; + } else return false; } /* forward */ From 5f8b4141f3343351e9458c7db2e2d8789b85e47b Mon Sep 17 00:00:00 2001 From: JP DeVries Date: Sat, 26 Oct 2013 18:08:29 -0700 Subject: [PATCH 03/42] Adding Container Checkbox to Article Container Update View like richtext on Article Create view, can't get it to work (gets overriden) so option is only currently availalbe on update view. Feel free to fix ;) --- assets/components/articles/js/container/update.js | 10 +++++++++- .../model/articles/articlescontainer.class.php | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/assets/components/articles/js/container/update.js b/assets/components/articles/js/container/update.js index 0473ee9..1064d35 100644 --- a/assets/components/articles/js/container/update.js +++ b/assets/components/articles/js/container/update.js @@ -241,7 +241,15 @@ Ext.extend(Articles.panel.Container,MODx.panel.Resource,{ ,id: 'modx-resource-hidemenu' ,inputValue: 1 ,checked: parseInt(config.record.hidemenu) || false - + },{ + xtype: 'xcheckbox' + ,boxLabel: _('resource_folder') + ,hideLabel: true + ,description: '[[*isfolder]]
'+_('resource_folder_help') + ,name: 'isfolder' + ,id: 'modx-resource-isfolder' + ,inputValue: 1 + ,checked: parseInt(config.record.isfolder) || false },{ xtype: 'xcheckbox' ,boxLabel: _('resource_published') diff --git a/core/components/articles/model/articles/articlescontainer.class.php b/core/components/articles/model/articles/articlescontainer.class.php index 4230c2f..6129add 100644 --- a/core/components/articles/model/articles/articlescontainer.class.php +++ b/core/components/articles/model/articles/articlescontainer.class.php @@ -715,7 +715,7 @@ public function afterSave() { $this->addContainerId(); $this->removeFromArchivistIds(); $this->setProperty('clearCache',true); - $this->object->set('isfolder',true); + //$this->object->set('isfolder',true); return parent::afterSave(); } From 05ecf0ae2d4be24a9c4ff3ad6961c65c9a6b2111 Mon Sep 17 00:00:00 2001 From: JP DeVries Date: Sat, 26 Oct 2013 19:29:38 -0700 Subject: [PATCH 04/42] Adding Container Checkbox to ArticleContainer Create View Closes #31 --- assets/components/articles/js/container/create.js | 10 +++++++++- .../articles/controllers/container/create.class.php | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/assets/components/articles/js/container/create.js b/assets/components/articles/js/container/create.js index d66666f..759a91a 100644 --- a/assets/components/articles/js/container/create.js +++ b/assets/components/articles/js/container/create.js @@ -221,7 +221,15 @@ Ext.extend(Articles.panel.Container,MODx.panel.Resource,{ ,id: 'modx-resource-hidemenu' ,inputValue: 1 ,checked: parseInt(config.record.hidemenu) || false - + },{ + xtype: 'xcheckbox' + ,boxLabel: _('resource_folder') + ,hideLabel: true + ,description: '[[*isfolder]]
'+_('resource_folder_help') + ,name: 'isfolder' + ,id: 'modx-resource-isfolder' + ,inputValue: 1 + ,checked: parseInt(config.record.isfolder) || true },{ xtype: 'xcheckbox' ,boxLabel: _('resource_published') diff --git a/core/components/articles/controllers/container/create.class.php b/core/components/articles/controllers/container/create.class.php index b1a1475..943a6fc 100644 --- a/core/components/articles/controllers/container/create.class.php +++ b/core/components/articles/controllers/container/create.class.php @@ -33,6 +33,7 @@ public function loadCustomCssJs() { $connectorUrl = $articlesAssetsUrl.'connector.php'; $articlesJsUrl = $articlesAssetsUrl.'js/'; $this->resourceArray['articles_container_settings'] = $this->resource->getContainerSettings(); + $this->resourceArray['isfolder'] = true; $this->addJavascript($managerUrl.'assets/modext/util/datetime.js'); $this->addJavascript($managerUrl.'assets/modext/widgets/element/modx.panel.tv.renders.js'); $this->addJavascript($managerUrl.'assets/modext/widgets/resource/modx.grid.resource.security.js'); From 37b83b21f1130d6afb622aaf25d0ad5e66557f7c Mon Sep 17 00:00:00 2001 From: JP DeVries Date: Tue, 29 Oct 2013 00:29:09 -0700 Subject: [PATCH 05/42] Tag Bug Fix Allow support for no FURLs Closes #39 --- core/components/articles/model/articles/article.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/components/articles/model/articles/article.class.php b/core/components/articles/model/articles/article.class.php index f2a9230..2f69387 100644 --- a/core/components/articles/model/articles/article.class.php +++ b/core/components/articles/model/articles/article.class.php @@ -182,7 +182,7 @@ public function getCommentsCountCall(array $settings = array()) { * @return string */ public function getTagsCall(array $settings = array()) { - $call = '[[!tolinks? &useTagsFurl=`1` &items=`[[*articlestags]]` &target=`'.$this->get('parent').'`]]'; + $call = '[[!tolinks? &useTagsFurl=`[[++friendly_urls]]` &items=`[[*articlestags]]` &target=`'.$this->get('parent').'`]]'; $this->xpdo->setPlaceholder('article_tags',$call); return $call; } From 2a264562bcdd221bf69c6c0208ab6be4d79fd3f5 Mon Sep 17 00:00:00 2001 From: Mathias Dannevang Date: Fri, 1 Nov 2013 11:27:25 +0100 Subject: [PATCH 06/42] Update readme.md --- readme.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index fedcf3b..65f4999 100644 --- a/readme.md +++ b/readme.md @@ -1,3 +1,6 @@ # Articles -Articles is currently maintained at [modxcms/Articles](http://github.com/modxcms/Articles). Please [go there](http://github.com/modxcms/Articles). +This is the official repo for the MODX blogging extra Articles. + + * The documentation can be found at [MODX Docs](http://rtfm.modx.com/extras/revo/articles). + * Help can be found at the [MODX Forum](http://forums.modx.com/board?board=265) From e1212b87a2503d93098c00f5f6c899f150aec0d0 Mon Sep 17 00:00:00 2001 From: Garry Nutting Date: Sun, 3 Nov 2013 19:24:16 +0100 Subject: [PATCH 07/42] Fix for #44, ArticlesRouter will now set as well as for filters and ArticlesContainer variable name fixed --- .../model/articles/articlescontainer.class.php | 4 ++-- .../articles/model/articles/articlesrouter.class.php | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/core/components/articles/model/articles/articlescontainer.class.php b/core/components/articles/model/articles/articlescontainer.class.php index 6129add..aed7a36 100644 --- a/core/components/articles/model/articles/articlescontainer.class.php +++ b/core/components/articles/model/articles/articlescontainer.class.php @@ -320,8 +320,8 @@ public function getRssCall() { public function getPostListingCall($placeholderPrefix = '') { $settings = $this->getContainerSettings(); $where = array('class_key' => 'Article'); - if (!empty($_REQUEST['arc_user'])) { - $userPk = $this->xpdo->sanitizeString($_REQUEST['arc_user']); + if (!empty($_REQUEST['arc_author'])) { + $userPk = $this->xpdo->sanitizeString($_REQUEST['arc_author']); if (intval($userPk) == 0) { /** @var modUser $user */ $user = $this->xpdo->getObject('modUser',array('username' => $userPk)); diff --git a/core/components/articles/model/articles/articlesrouter.class.php b/core/components/articles/model/articles/articlesrouter.class.php index 386050c..760ef89 100644 --- a/core/components/articles/model/articles/articlesrouter.class.php +++ b/core/components/articles/model/articles/articlesrouter.class.php @@ -82,10 +82,10 @@ public function route() { /* tag handling! */ if ($params[0] == 'tags') { - $_GET['tag'] = $params[1]; + $_REQUEST[$prefix.'author'] = $_GET['tag'] = urldecode($params[1]); /* author based */ } else if ($params[0] == 'user' || $params[0] == 'author') { - $_GET[$prefix.'author'] = $params[1]; + $_REQUEST[$prefix.'author'] = $_GET[$prefix.'author'] = urldecode($params[1]); /* numeric "archives/1234" */ } else if ($params[0] == 'archives' && !empty($params[1])) { @@ -103,9 +103,9 @@ public function route() { if (isset($params[1])) $pmonth = $params[1]; if (isset($params[2])) $pday = $params[2]; if (checkdate($pmonth, $pday, $pyear)) { - $_GET[$prefix.'year'] = $params[0]; - if (isset($params[1])) $_GET[$prefix.'month'] = $params[1]; - if (isset($params[2])) $_GET[$prefix.'day'] = $params[2]; + $_REQUEST[$prefix.'year'] = $_GET[$prefix.'year'] = $params[0]; + if (isset($params[1])) $_REQUEST[$prefix.'month'] = $_GET[$prefix.'month'] = $params[1]; + if (isset($params[2])) $_REQUEST[$prefix.'day'] = $_GET[$prefix.'day'] = $params[2]; } else return false; } From 35b25952c53f93378745299a4f3144785e4ffb60 Mon Sep 17 00:00:00 2001 From: Garry Nutting Date: Sun, 3 Nov 2013 19:34:17 +0100 Subject: [PATCH 08/42] Fix the REQUEST tag variable name --- .../components/articles/model/articles/articlesrouter.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/components/articles/model/articles/articlesrouter.class.php b/core/components/articles/model/articles/articlesrouter.class.php index 760ef89..a895407 100644 --- a/core/components/articles/model/articles/articlesrouter.class.php +++ b/core/components/articles/model/articles/articlesrouter.class.php @@ -82,7 +82,7 @@ public function route() { /* tag handling! */ if ($params[0] == 'tags') { - $_REQUEST[$prefix.'author'] = $_GET['tag'] = urldecode($params[1]); + $_REQUEST['tag'] = $_GET['tag'] = urldecode($params[1]); /* author based */ } else if ($params[0] == 'user' || $params[0] == 'author') { $_REQUEST[$prefix.'author'] = $_GET[$prefix.'author'] = urldecode($params[1]); From 9a22c12b5d8a389c7f2c28d7e1f11f8e806214fe Mon Sep 17 00:00:00 2001 From: Jason Coward Date: Thu, 7 Nov 2013 17:16:50 -0700 Subject: [PATCH 09/42] Change package name from Articles to articles All xPDO package names should be lowercase --- .../model/articles/mysql/article.map.inc.php | 12 ++++++++++-- .../articles/mysql/articlescontainer.map.inc.php | 12 ++++++++++-- .../articles/model/schema/articles.mysql.schema.xml | 4 ++-- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/core/components/articles/model/articles/mysql/article.map.inc.php b/core/components/articles/model/articles/mysql/article.map.inc.php index 79fa117..4962c76 100644 --- a/core/components/articles/model/articles/mysql/article.map.inc.php +++ b/core/components/articles/model/articles/mysql/article.map.inc.php @@ -1,9 +1,17 @@ 'Articles', + 'package' => 'articles', + 'version' => '1.1', + 'extends' => 'modResource', + 'fields' => + array ( + ), + 'fieldMeta' => + array ( + ), 'aggregates' => array ( 'Container' => diff --git a/core/components/articles/model/articles/mysql/articlescontainer.map.inc.php b/core/components/articles/model/articles/mysql/articlescontainer.map.inc.php index 43b0fe9..d74a015 100644 --- a/core/components/articles/model/articles/mysql/articlescontainer.map.inc.php +++ b/core/components/articles/model/articles/mysql/articlescontainer.map.inc.php @@ -1,9 +1,17 @@ 'Articles', + 'package' => 'articles', + 'version' => '1.1', + 'extends' => 'modResource', + 'fields' => + array ( + ), + 'fieldMeta' => + array ( + ), 'composites' => array ( 'Articles' => diff --git a/core/components/articles/model/schema/articles.mysql.schema.xml b/core/components/articles/model/schema/articles.mysql.schema.xml index 5893db8..28e4a8a 100644 --- a/core/components/articles/model/schema/articles.mysql.schema.xml +++ b/core/components/articles/model/schema/articles.mysql.schema.xml @@ -1,9 +1,9 @@ - + - \ No newline at end of file + From f2e958195f57a68fca832958acb0bc800b1fa4d5 Mon Sep 17 00:00:00 2001 From: Jason Coward Date: Thu, 7 Nov 2013 17:16:50 -0700 Subject: [PATCH 10/42] Change package name from Articles to articles All xPDO package names should be lowercase --- .../model/articles/mysql/article.map.inc.php | 12 ++++++++++-- .../articles/mysql/articlescontainer.map.inc.php | 12 ++++++++++-- .../articles/model/schema/articles.mysql.schema.xml | 4 ++-- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/core/components/articles/model/articles/mysql/article.map.inc.php b/core/components/articles/model/articles/mysql/article.map.inc.php index 79fa117..4962c76 100644 --- a/core/components/articles/model/articles/mysql/article.map.inc.php +++ b/core/components/articles/model/articles/mysql/article.map.inc.php @@ -1,9 +1,17 @@ 'Articles', + 'package' => 'articles', + 'version' => '1.1', + 'extends' => 'modResource', + 'fields' => + array ( + ), + 'fieldMeta' => + array ( + ), 'aggregates' => array ( 'Container' => diff --git a/core/components/articles/model/articles/mysql/articlescontainer.map.inc.php b/core/components/articles/model/articles/mysql/articlescontainer.map.inc.php index 43b0fe9..d74a015 100644 --- a/core/components/articles/model/articles/mysql/articlescontainer.map.inc.php +++ b/core/components/articles/model/articles/mysql/articlescontainer.map.inc.php @@ -1,9 +1,17 @@ 'Articles', + 'package' => 'articles', + 'version' => '1.1', + 'extends' => 'modResource', + 'fields' => + array ( + ), + 'fieldMeta' => + array ( + ), 'composites' => array ( 'Articles' => diff --git a/core/components/articles/model/schema/articles.mysql.schema.xml b/core/components/articles/model/schema/articles.mysql.schema.xml index 5893db8..28e4a8a 100644 --- a/core/components/articles/model/schema/articles.mysql.schema.xml +++ b/core/components/articles/model/schema/articles.mysql.schema.xml @@ -1,9 +1,9 @@ - + - \ No newline at end of file + From 00c926cd092b406236b8a9b0fe757fb496c9bcf0 Mon Sep 17 00:00:00 2001 From: JP DeVries Date: Fri, 8 Nov 2013 12:55:57 -0800 Subject: [PATCH 11/42] Bumping version to 1.7.3 --- _build/build.transport.php | 2 +- core/components/articles/docs/changelog.txt | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/_build/build.transport.php b/_build/build.transport.php index cb9e38c..c246ca1 100644 --- a/_build/build.transport.php +++ b/_build/build.transport.php @@ -28,7 +28,7 @@ /* define package */ define('PKG_NAME','Articles'); define('PKG_NAME_LOWER',strtolower(PKG_NAME)); -define('PKG_VERSION','1.7.2'); +define('PKG_VERSION','1.7.3'); define('PKG_RELEASE','pl'); /* define sources */ diff --git a/core/components/articles/docs/changelog.txt b/core/components/articles/docs/changelog.txt index 418f99a..001199c 100644 --- a/core/components/articles/docs/changelog.txt +++ b/core/components/articles/docs/changelog.txt @@ -1,5 +1,9 @@ Changelog for Articles. +Articles 1.7.3 +=============================== + - Change package name from Articles to articles for xPDO compatibility + Articles 1.7.2 =============================== - Rebuilt tagging component. Thanks to Jan Peca (TheBoxer) From 8f04a5362b844193d21d138e462726c17e86d2e0 Mon Sep 17 00:00:00 2001 From: Jason Coward Date: Wed, 4 Dec 2013 21:32:30 -0700 Subject: [PATCH 12/42] Bump version for 1.7.4-dev --- _build/build.transport.php | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/_build/build.transport.php b/_build/build.transport.php index c246ca1..711d6cb 100644 --- a/_build/build.transport.php +++ b/_build/build.transport.php @@ -28,13 +28,12 @@ /* define package */ define('PKG_NAME','Articles'); define('PKG_NAME_LOWER',strtolower(PKG_NAME)); -define('PKG_VERSION','1.7.3'); -define('PKG_RELEASE','pl'); +define('PKG_VERSION','1.7.4'); +define('PKG_RELEASE','dev'); /* define sources */ $root = dirname(dirname(__FILE__)).'/'; $sources = array( - 'root' => $root, 'root' => $root, 'build' => $root .'_build/', 'resolvers' => $root . '_build/resolvers/', @@ -234,4 +233,4 @@ $modx->log(modX::LOG_LEVEL_INFO,"\n
Package Built.
\nExecution time: {$totalTime}\n"); -exit (); \ No newline at end of file +exit (); From be6214dc3cadc70d5f7ee2b59d9c1253ae5ca23a Mon Sep 17 00:00:00 2001 From: Jason Coward Date: Wed, 4 Dec 2013 21:34:11 -0700 Subject: [PATCH 13/42] Add support for disabled cache_alias_map --- core/components/articles/docs/changelog.txt | 4 +++- .../model/articles/articlesrouter.class.php | 21 ++++++++++++------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/core/components/articles/docs/changelog.txt b/core/components/articles/docs/changelog.txt index 001199c..0788532 100644 --- a/core/components/articles/docs/changelog.txt +++ b/core/components/articles/docs/changelog.txt @@ -1,5 +1,7 @@ Changelog for Articles. + - Add support for disabled cache_alias_map + Articles 1.7.3 =============================== - Change package name from Articles to articles for xPDO compatibility @@ -235,4 +237,4 @@ Articles 1.0.0 - Automatic archiving of Articles - Integrated tagging - Easy templating for containers and articles -- Initial release. \ No newline at end of file +- Initial release. diff --git a/core/components/articles/model/articles/articlesrouter.class.php b/core/components/articles/model/articles/articlesrouter.class.php index a895407..0f64942 100644 --- a/core/components/articles/model/articles/articlesrouter.class.php +++ b/core/components/articles/model/articles/articlesrouter.class.php @@ -54,27 +54,32 @@ public function route() { $prefix = 'arc_'; $startPageResId = false; $startPagePrefix = ''; - $startPageId = $this->modx->getOption('site_start'); + $startPageId = $this->modx->getOption('site_start'); foreach ($containerIds as $archive) { + if (empty($archive)) continue; $archive = explode(':',$archive); $archiveId = $archive[0]; - if (is_array($this->modx->aliasMap) && ($startPageId == $archiveId)) { - $alias = array_search($archiveId,$this->modx->aliasMap); + if (method_exists($this->modx->context, 'getResourceURI')) { + $alias = $this->modx->context->getResourceURI($archiveId); + } else { + $alias = is_array($this->modx->aliasMap) ? array_search($archiveId, $this->modx->aliasMap) : ''; + } + if ($alias && $startPageId == $archiveId) { $startPageResId = $archiveId; if (isset($archive[1])) $startPagePrefix = $archive[1]; } - if ($alias && strpos($search,$alias) !== false) { - $search = str_replace($alias,'',$search); + if ($alias && strpos($search, $alias) === 0) { + $search = substr($search, strlen($alias)); $resourceId = $archiveId; if (isset($archive[1])) $prefix = $archive[1]; } } if (!$resourceId) { if ($startPageResId) { - $resourceId = $startPageResId; - $prefix = $startPagePrefix; + $resourceId = $startPageResId; + $prefix = $startPagePrefix; } else return false; - } + } /* figure out archiving */ $params = explode('/', $search); From ab2ef091eea950369071250e2cd374ba8a9d0696 Mon Sep 17 00:00:00 2001 From: JP DeVries Date: Fri, 6 Dec 2013 10:30:22 -0800 Subject: [PATCH 14/42] Bumping version to 1.7.4-pl And updating changelog --- _build/build.transport.php | 2 +- core/components/articles/docs/changelog.txt | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/_build/build.transport.php b/_build/build.transport.php index 711d6cb..32757ac 100644 --- a/_build/build.transport.php +++ b/_build/build.transport.php @@ -29,7 +29,7 @@ define('PKG_NAME','Articles'); define('PKG_NAME_LOWER',strtolower(PKG_NAME)); define('PKG_VERSION','1.7.4'); -define('PKG_RELEASE','dev'); +define('PKG_RELEASE','pl'); /* define sources */ $root = dirname(dirname(__FILE__)).'/'; diff --git a/core/components/articles/docs/changelog.txt b/core/components/articles/docs/changelog.txt index 0788532..5188689 100644 --- a/core/components/articles/docs/changelog.txt +++ b/core/components/articles/docs/changelog.txt @@ -1,5 +1,7 @@ Changelog for Articles. +Articles 1.7.4 +=============================== - Add support for disabled cache_alias_map Articles 1.7.3 From 9bbf9d15be5db92699a1aab50d8de7df03e4d8fc Mon Sep 17 00:00:00 2001 From: JP DeVries Date: Sun, 8 Dec 2013 10:58:36 -0800 Subject: [PATCH 15/42] Fix RSS Feeds Closes #54 --- _build/build.transport.php | 2 +- core/components/articles/docs/changelog.txt | 4 ++ .../model/articles/articlesrouter.class.php | 37 ++++++------------- 3 files changed, 17 insertions(+), 26 deletions(-) diff --git a/_build/build.transport.php b/_build/build.transport.php index 32757ac..c5497fb 100644 --- a/_build/build.transport.php +++ b/_build/build.transport.php @@ -28,7 +28,7 @@ /* define package */ define('PKG_NAME','Articles'); define('PKG_NAME_LOWER',strtolower(PKG_NAME)); -define('PKG_VERSION','1.7.4'); +define('PKG_VERSION','1.7.5'); define('PKG_RELEASE','pl'); /* define sources */ diff --git a/core/components/articles/docs/changelog.txt b/core/components/articles/docs/changelog.txt index 5188689..1db8dc0 100644 --- a/core/components/articles/docs/changelog.txt +++ b/core/components/articles/docs/changelog.txt @@ -1,5 +1,9 @@ Changelog for Articles. +Articles 1.7.5 +=============================== + - #54 Fix RSS Feeds (Revert PR #15,#25) + Articles 1.7.4 =============================== - Add support for disabled cache_alias_map diff --git a/core/components/articles/model/articles/articlesrouter.class.php b/core/components/articles/model/articles/articlesrouter.class.php index 0f64942..c55c038 100644 --- a/core/components/articles/model/articles/articlesrouter.class.php +++ b/core/components/articles/model/articles/articlesrouter.class.php @@ -52,18 +52,16 @@ public function route() { /* get resource to redirect to */ $resourceId = false; $prefix = 'arc_'; - $startPageResId = false; - $startPagePrefix = ''; - $startPageId = $this->modx->getOption('site_start'); foreach ($containerIds as $archive) { - if (empty($archive)) continue; + if (empty($archive)) continue; $archive = explode(':',$archive); $archiveId = $archive[0]; + if (method_exists($this->modx->context, 'getResourceURI')) { - $alias = $this->modx->context->getResourceURI($archiveId); - } else { - $alias = is_array($this->modx->aliasMap) ? array_search($archiveId, $this->modx->aliasMap) : ''; - } + $alias = $this->modx->context->getResourceURI($archiveId); + } else { + $alias = is_array($this->modx->aliasMap) ? array_search($archiveId, $this->modx->aliasMap) : ''; + } if ($alias && $startPageId == $archiveId) { $startPageResId = $archiveId; if (isset($archive[1])) $startPagePrefix = $archive[1]; @@ -74,12 +72,7 @@ public function route() { if (isset($archive[1])) $prefix = $archive[1]; } } - if (!$resourceId) { - if ($startPageResId) { - $resourceId = $startPageResId; - $prefix = $startPagePrefix; - } else return false; - } + if (!$resourceId) return false; /* figure out archiving */ $params = explode('/', $search); @@ -87,7 +80,7 @@ public function route() { /* tag handling! */ if ($params[0] == 'tags') { - $_REQUEST['tag'] = $_GET['tag'] = urldecode($params[1]); + $_REQUEST[$prefix.'author'] = $_GET['tag'] = urldecode($params[1]); /* author based */ } else if ($params[0] == 'user' || $params[0] == 'author') { $_REQUEST[$prefix.'author'] = $_GET[$prefix.'author'] = urldecode($params[1]); @@ -102,16 +95,10 @@ public function route() { /* normal yyyy/mm/dd or yyyy/mm */ } else { /* set Archivist parameters for date-based archives */ - $pyear = $params[0]; - $pmonth = 1; - $pday = 1; - if (isset($params[1])) $pmonth = $params[1]; - if (isset($params[2])) $pday = $params[2]; - if (checkdate($pmonth, $pday, $pyear)) { - $_REQUEST[$prefix.'year'] = $_GET[$prefix.'year'] = $params[0]; - if (isset($params[1])) $_REQUEST[$prefix.'month'] = $_GET[$prefix.'month'] = $params[1]; - if (isset($params[2])) $_REQUEST[$prefix.'day'] = $_GET[$prefix.'day'] = $params[2]; - } else return false; + + $_REQUEST[$prefix.'year'] = $_GET[$prefix.'year'] = $params[0]; + if (isset($params[1])) $_REQUEST[$prefix.'month'] = $_GET[$prefix.'month'] = $params[1]; + if (isset($params[2])) $_REQUEST[$prefix.'day'] = $_GET[$prefix.'day'] = $params[2]; } /* forward */ From 54934d374951640191c05397ddabe4484b88b16e Mon Sep 17 00:00:00 2001 From: JP DeVries Date: Sun, 8 Dec 2013 11:22:05 -0800 Subject: [PATCH 16/42] Bumping version to 1.7.6-dev --- _build/build.transport.php | 4 ++-- core/components/articles/lexicon/en/default.inc.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/_build/build.transport.php b/_build/build.transport.php index c5497fb..0c3afc1 100644 --- a/_build/build.transport.php +++ b/_build/build.transport.php @@ -28,8 +28,8 @@ /* define package */ define('PKG_NAME','Articles'); define('PKG_NAME_LOWER',strtolower(PKG_NAME)); -define('PKG_VERSION','1.7.5'); -define('PKG_RELEASE','pl'); +define('PKG_VERSION','1.7.6'); +define('PKG_RELEASE','dev'); /* define sources */ $root = dirname(dirname(__FILE__)).'/'; diff --git a/core/components/articles/lexicon/en/default.inc.php b/core/components/articles/lexicon/en/default.inc.php index 1f9cd04..d3362b8 100755 --- a/core/components/articles/lexicon/en/default.inc.php +++ b/core/components/articles/lexicon/en/default.inc.php @@ -201,7 +201,7 @@ $_lang['articles.setting.rssAlias'] = 'RSS Alias (Permalink)'; $_lang['articles.setting.rssAlias_desc'] = 'The alias (permalink) for the RSS feed, appended to the Articles Container URL.'; $_lang['articles.setting.rssItems'] = 'Number of RSS Items'; -$_lang['articles.setting.rssItems_desc'] = 'The number of RSS items to show on the RSS feed.'; +$_lang['articles.setting.rssItems_desc'] = 'The number of RSS items to show on the RSS feed. Set to 0 for unlimited.'; $_lang['articles.setting.tplRssFeed'] = 'RSS Feed Chunk'; $_lang['articles.setting.tplRssFeed_desc'] = 'The Chunk to use for the RSS Feed template.'; $_lang['articles.setting.tplRssItem'] = 'RSS Item Chunk'; From 00bad3599d01eb2815d9dd8c51a6a12ad2e706e3 Mon Sep 17 00:00:00 2001 From: Jason Bird Date: Mon, 13 Jan 2014 11:22:24 -0500 Subject: [PATCH 17/42] Update articlescontainer.class.php Changed to use filter_var when available so tags/strings that start with a number are still evaluated false as an int vs showing as a full int and being treated as a user id. --- .../articles/model/articles/articlescontainer.class.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/core/components/articles/model/articles/articlescontainer.class.php b/core/components/articles/model/articles/articlescontainer.class.php index aed7a36..023583f 100644 --- a/core/components/articles/model/articles/articlescontainer.class.php +++ b/core/components/articles/model/articles/articlescontainer.class.php @@ -322,7 +322,10 @@ public function getPostListingCall($placeholderPrefix = '') { $where = array('class_key' => 'Article'); if (!empty($_REQUEST['arc_author'])) { $userPk = $this->xpdo->sanitizeString($_REQUEST['arc_author']); - if (intval($userPk) == 0) { + if (function_exists(filter_var)) { + $userPkNum = filter_var($userPk,FILTER_VALIDATE_INT); + } else { $userPkNum = intval($userPk); } + if ($userPkNum == 0) { /** @var modUser $user */ $user = $this->xpdo->getObject('modUser',array('username' => $userPk)); if ($user) { From 51f5d1494afdd8ec24ba6092a4193707b9d7fa73 Mon Sep 17 00:00:00 2001 From: prioritypie Date: Tue, 14 Jan 2014 22:27:22 +0000 Subject: [PATCH 18/42] Conditionally load classes in controller - fixes #50 --- core/components/articles/controllers/article/create.class.php | 4 +++- core/components/articles/controllers/article/update.class.php | 4 +++- .../articles/controllers/container/create.class.php | 4 +++- .../articles/controllers/container/update.class.php | 4 +++- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/core/components/articles/controllers/article/create.class.php b/core/components/articles/controllers/article/create.class.php index fba76d6..eba1d7a 100755 --- a/core/components/articles/controllers/article/create.class.php +++ b/core/components/articles/controllers/article/create.class.php @@ -19,7 +19,9 @@ * * @package articles */ -require_once $modx->getOption('manager_path',null,MODX_MANAGER_PATH).'controllers/default/resource/create.class.php'; +if(!class_exists('ResourceCreateManagerController')) { + require_once $modx->getOption('manager_path',null,MODX_MANAGER_PATH).'controllers/'.$modx->getOption('manager_theme',null,'default').'/resource/create.class.php'; +} /** * @package articles */ diff --git a/core/components/articles/controllers/article/update.class.php b/core/components/articles/controllers/article/update.class.php index 57e4376..6e9aa32 100755 --- a/core/components/articles/controllers/article/update.class.php +++ b/core/components/articles/controllers/article/update.class.php @@ -19,7 +19,9 @@ * * @package articles */ -require_once $modx->getOption('manager_path',null,MODX_MANAGER_PATH).'controllers/default/resource/update.class.php'; +if(!class_exists('ResourceUpdateManagerController')) { + require_once $modx->getOption('manager_path',null,MODX_MANAGER_PATH).'controllers/'.$modx->getOption('manager_theme',null,'default').'/resource/update.class.php'; +} /** * @package articles */ diff --git a/core/components/articles/controllers/container/create.class.php b/core/components/articles/controllers/container/create.class.php index 943a6fc..c2f3c0c 100644 --- a/core/components/articles/controllers/container/create.class.php +++ b/core/components/articles/controllers/container/create.class.php @@ -19,7 +19,9 @@ * * @package articles */ -require_once $modx->getOption('manager_path',null,MODX_MANAGER_PATH).'controllers/default/resource/create.class.php'; +if(!class_exists('ResourceCreateManagerController')) { + require_once $modx->getOption('manager_path',null,MODX_MANAGER_PATH).'controllers/'.$modx->getOption('manager_theme',null,'default').'/resource/create.class.php'; +} /** * @package articles */ diff --git a/core/components/articles/controllers/container/update.class.php b/core/components/articles/controllers/container/update.class.php index 8b2cf0a..34ab4fb 100644 --- a/core/components/articles/controllers/container/update.class.php +++ b/core/components/articles/controllers/container/update.class.php @@ -22,7 +22,9 @@ /** * @var modX $modx */ -require_once $modx->getOption('manager_path',null,MODX_MANAGER_PATH).'controllers/default/resource/update.class.php'; +if(!class_exists('ResourceUpdateManagerController')) { + require_once $modx->getOption('manager_path',null,MODX_MANAGER_PATH).'controllers/'.$modx->getOption('manager_theme',null,'default').'/resource/update.class.php'; +} /** * @package articles */ From 114d74708b2e389fd2888e8d5333a15a31e938bf Mon Sep 17 00:00:00 2001 From: Patrick Blank Date: Thu, 16 Jan 2014 16:55:23 +0100 Subject: [PATCH 19/42] Remove static html code from code this is a fix for this issues: https://github.com/modxcms/Articles/issues/42. It moves the static container around paging elements into the content area, where it can be edited. --- .../components/articles/js/container/container.common.js | 2 +- .../articles/model/articles/articlescontainer.class.php | 8 +------- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/assets/components/articles/js/container/container.common.js b/assets/components/articles/js/container/container.common.js index cc67c85..210d0a2 100644 --- a/assets/components/articles/js/container/container.common.js +++ b/assets/components/articles/js/container/container.common.js @@ -1616,7 +1616,7 @@ Ext.extend(Articles.panel.ContainerTemplateSettings,MODx.Panel,{ ,height: 250 ,grow: false ,border: false - ,value: config.record && config.record.content ? config.record.content : "[[+articles]]\n\n[[+paging]]" + ,value: config.record && config.record.content ? config.record.content : "[[+articles]]\n\n[[!+page.nav:notempty=`\n
\n\t
    \n\t\t[[+paging]]\n\t
\n
\n`]]" },{ id: 'modx-content-below' ,border: false diff --git a/core/components/articles/model/articles/articlescontainer.class.php b/core/components/articles/model/articles/articlescontainer.class.php index aed7a36..a273edb 100644 --- a/core/components/articles/model/articles/articlescontainer.class.php +++ b/core/components/articles/model/articles/articlescontainer.class.php @@ -372,13 +372,7 @@ public function getPostListingCall($placeholderPrefix = '') { ]]'; $this->xpdo->setPlaceholder($placeholderPrefix.'articles',$output); - $this->xpdo->setPlaceholder($placeholderPrefix.'paging','[[!+page.nav:notempty=` -
-
    - [[!+page.nav]] -
-
-`]]'); + $this->xpdo->setPlaceholder($placeholderPrefix.'paging','[[!+page.nav]]'); return $output; } From 2edf4526355cb6260c3f08b196577b1dbc647a33 Mon Sep 17 00:00:00 2001 From: Jason Bird Date: Sat, 18 Jan 2014 14:04:48 -0600 Subject: [PATCH 20/42] Update articlescontainer.class.php Added quotes for function_exists('filter_var') --- .../articles/model/articles/articlescontainer.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/components/articles/model/articles/articlescontainer.class.php b/core/components/articles/model/articles/articlescontainer.class.php index 023583f..658ae82 100644 --- a/core/components/articles/model/articles/articlescontainer.class.php +++ b/core/components/articles/model/articles/articlescontainer.class.php @@ -322,7 +322,7 @@ public function getPostListingCall($placeholderPrefix = '') { $where = array('class_key' => 'Article'); if (!empty($_REQUEST['arc_author'])) { $userPk = $this->xpdo->sanitizeString($_REQUEST['arc_author']); - if (function_exists(filter_var)) { + if (function_exists('filter_var')) { $userPkNum = filter_var($userPk,FILTER_VALIDATE_INT); } else { $userPkNum = intval($userPk); } if ($userPkNum == 0) { From d4511103610873d4460d9e3fddae9753790ea084 Mon Sep 17 00:00:00 2001 From: JP DeVries Date: Tue, 4 Feb 2014 09:09:19 -0800 Subject: [PATCH 21/42] Fix False Confirm Navigation False Postivies MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #68 clicking edit button (or anything in the row) was trigger a form change. Not sure if this will break anything else, but if it does I don’t care this logic is stupid --- .../components/articles/js/container/container.articles.grid.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/components/articles/js/container/container.articles.grid.js b/assets/components/articles/js/container/container.articles.grid.js index 638e5c3..0478203 100644 --- a/assets/components/articles/js/container/container.articles.grid.js +++ b/assets/components/articles/js/container/container.articles.grid.js @@ -125,7 +125,7 @@ Articles.grid.ContainerArticles = function(config) { }); Articles.grid.ContainerArticles.superclass.constructor.call(this,config); this._makeTemplates(); - this.on('rowclick',MODx.fireResourceFormChange); + //this.on('rowclick',MODx.fireResourceFormChange); this.on('click', this.handleButtons, this); }; Ext.extend(Articles.grid.ContainerArticles,MODx.grid.Grid,{ From 299c0b70441cc258af8e92af530c54359b88ed16 Mon Sep 17 00:00:00 2001 From: JP DeVries Date: Tue, 4 Feb 2014 10:52:40 -0800 Subject: [PATCH 22/42] Merge branch 'develop' of github.com:modxcms/Articles into develop --- .../components/articles/js/container/container.common.js | 2 +- .../articles/model/articles/articlescontainer.class.php | 8 +------- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/assets/components/articles/js/container/container.common.js b/assets/components/articles/js/container/container.common.js index cc67c85..210d0a2 100644 --- a/assets/components/articles/js/container/container.common.js +++ b/assets/components/articles/js/container/container.common.js @@ -1616,7 +1616,7 @@ Ext.extend(Articles.panel.ContainerTemplateSettings,MODx.Panel,{ ,height: 250 ,grow: false ,border: false - ,value: config.record && config.record.content ? config.record.content : "[[+articles]]\n\n[[+paging]]" + ,value: config.record && config.record.content ? config.record.content : "[[+articles]]\n\n[[!+page.nav:notempty=`\n
\n\t
    \n\t\t[[+paging]]\n\t
\n
\n`]]" },{ id: 'modx-content-below' ,border: false diff --git a/core/components/articles/model/articles/articlescontainer.class.php b/core/components/articles/model/articles/articlescontainer.class.php index aed7a36..a273edb 100644 --- a/core/components/articles/model/articles/articlescontainer.class.php +++ b/core/components/articles/model/articles/articlescontainer.class.php @@ -372,13 +372,7 @@ public function getPostListingCall($placeholderPrefix = '') { ]]'; $this->xpdo->setPlaceholder($placeholderPrefix.'articles',$output); - $this->xpdo->setPlaceholder($placeholderPrefix.'paging','[[!+page.nav:notempty=` -
-
    - [[!+page.nav]] -
-
-`]]'); + $this->xpdo->setPlaceholder($placeholderPrefix.'paging','[[!+page.nav]]'); return $output; } From 18fa4ff83bfac08c6745ef30caabdeef1aa074c7 Mon Sep 17 00:00:00 2001 From: JP DeVries Date: Tue, 4 Feb 2014 11:14:08 -0800 Subject: [PATCH 23/42] update getResources to 1.6.1 --- _build/build.transport.php | 2 +- _build/data/transport.subpackages.php | 2 +- .../resolvers/packages/resolve.getresources.php | 2 +- .../getresources-1.6.0-pl.transport.zip | Bin 39616 -> 0 bytes .../getresources-1.6.1-pl.transport.zip | Bin 0 -> 40288 bytes core/components/articles/docs/changelog.txt | 8 ++++++++ 6 files changed, 11 insertions(+), 3 deletions(-) delete mode 100644 _build/subpackages/getresources-1.6.0-pl.transport.zip create mode 100644 _build/subpackages/getresources-1.6.1-pl.transport.zip diff --git a/_build/build.transport.php b/_build/build.transport.php index 0c3afc1..e5bc9ce 100644 --- a/_build/build.transport.php +++ b/_build/build.transport.php @@ -29,7 +29,7 @@ define('PKG_NAME','Articles'); define('PKG_NAME_LOWER',strtolower(PKG_NAME)); define('PKG_VERSION','1.7.6'); -define('PKG_RELEASE','dev'); +define('PKG_RELEASE','pl'); /* define sources */ $root = dirname(dirname(__FILE__)).'/'; diff --git a/_build/data/transport.subpackages.php b/_build/data/transport.subpackages.php index f3bf7b4..2196c32 100644 --- a/_build/data/transport.subpackages.php +++ b/_build/data/transport.subpackages.php @@ -30,7 +30,7 @@ $subpackages = array( 'archivist' => 'archivist-1.2.4-pl', 'getpage' => 'getpage-1.2.3-pl', - 'getresources' => 'getresources-1.6.0-pl', + 'getresources' => 'getresources-1.6.1-pl', 'quip' => 'quip-2.3.3-pl', 'taglister' => 'taglister-1.1.7-pl', ); diff --git a/_build/resolvers/packages/resolve.getresources.php b/_build/resolvers/packages/resolve.getresources.php index 88ac8b1..b02cd9c 100644 --- a/_build/resolvers/packages/resolve.getresources.php +++ b/_build/resolvers/packages/resolve.getresources.php @@ -9,7 +9,7 @@ */ $success= true; if ($transport && $transport->xpdo) { - $signature = 'getresources-1.6.0-pl'; + $signature = 'getresources-1.6.1-pl'; $modx =& $transport->xpdo; $modx->addPackage('modx.transport',$modx->getOption('core_path').'model/'); diff --git a/_build/subpackages/getresources-1.6.0-pl.transport.zip b/_build/subpackages/getresources-1.6.0-pl.transport.zip deleted file mode 100644 index 4d77dfd5960fc45e0156b9522cfc82e820d9e366..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39616 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 b-v5Bs@1ytX5CX#Q&=hAE;Os6w;rs3%P$mJt diff --git a/_build/subpackages/getresources-1.6.1-pl.transport.zip b/_build/subpackages/getresources-1.6.1-pl.transport.zip new file mode 100644 index 0000000000000000000000000000000000000000..6226376a7f8584d551fcf275e459bb7cfff2faa1 GIT binary patch literal 40288 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⪻0BBN;W4&0xkD3bj* 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 Date: Thu, 27 Mar 2014 10:51:40 +0000 Subject: [PATCH 24/42] Add setting for default published status of new article --- .../articles/js/container/container.common.js | 10 ++++++++++ .../articles/controllers/article/create.class.php | 2 +- core/components/articles/lexicon/en/default.inc.php | 1 + 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/assets/components/articles/js/container/container.common.js b/assets/components/articles/js/container/container.common.js index 210d0a2..c3fd29c 100644 --- a/assets/components/articles/js/container/container.common.js +++ b/assets/components/articles/js/container/container.common.js @@ -66,6 +66,16 @@ Articles.panel.ContainerAdvancedSettings = function(config) { ,html: _('resource_longtitle_help') ,cls: 'desc-under' + },{ + xtype: 'combo-boolean' + ,name: 'setting_articlesPublished' + ,hiddenName: 'setting_articlesPublished' + ,id: 'articles-published' + ,fieldLabel: _('resource_published') + ,description: MODx.expandHelp ? '' : _('resource_published_help') + ' ' + _('articles.setting.published_desc') + ,width: 120 + ,listeners: oc + ,value: 1 },{ xtype: 'combo-boolean' ,name: 'setting_articlesRichtext' diff --git a/core/components/articles/controllers/article/create.class.php b/core/components/articles/controllers/article/create.class.php index eba1d7a..abf6181 100755 --- a/core/components/articles/controllers/article/create.class.php +++ b/core/components/articles/controllers/article/create.class.php @@ -75,7 +75,6 @@ public function getLanguageTopics() { public function process(array $scriptProperties = array()) { $placeholders = parent::process($scriptProperties); - $this->resourceArray['published'] = 0; $this->getDefaultContainerSettings(); return $placeholders; } @@ -89,6 +88,7 @@ public function getDefaultContainerSettings() { $settings = $container->getProperties('articles'); $this->resourceArray['template'] = $this->modx->getOption('articleTemplate',$settings,0); $this->resourceArray['richtext'] = $this->modx->getOption('articlesRichtext',$settings,1); + $this->resourceArray['published'] = $this->modx->getOption('articlesPublished',$settings,0); } } } \ No newline at end of file diff --git a/core/components/articles/lexicon/en/default.inc.php b/core/components/articles/lexicon/en/default.inc.php index d3362b8..bbb3a09 100755 --- a/core/components/articles/lexicon/en/default.inc.php +++ b/core/components/articles/lexicon/en/default.inc.php @@ -132,6 +132,7 @@ /* General */ $_lang['articles.setting.updateServicesEnabled'] = 'Enable Update Services'; $_lang['articles.setting.updateServicesEnabled_desc'] = 'If on, Articles will attempt to ping Ping-o-Matic whenever you publish an Article, to send out your article\'s title and URL to major search engines.'; +$_lang['articles.setting.published_desc'] = 'Default published status for new articles.'; $_lang['articles.setting.richtext_desc'] = 'Once created, individual Articles can override this value.'; $_lang['articles.setting.sortBy'] = 'Sort Field'; $_lang['articles.setting.sortBy_desc'] = 'The field to sort by on the main and archives listing pages.'; From ba0a29f2a387e07ea75bab56d1f25f357104ee66 Mon Sep 17 00:00:00 2001 From: Mark Willis Date: Mon, 7 Apr 2014 14:17:56 +0100 Subject: [PATCH 25/42] Added 404 page if no resource is found and the default is selected --- .../articles/model/articles/articlesrouter.class.php | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/core/components/articles/model/articles/articlesrouter.class.php b/core/components/articles/model/articles/articlesrouter.class.php index c55c038..3f3e8ca 100644 --- a/core/components/articles/model/articles/articlesrouter.class.php +++ b/core/components/articles/model/articles/articlesrouter.class.php @@ -96,9 +96,14 @@ public function route() { } else { /* set Archivist parameters for date-based archives */ - $_REQUEST[$prefix.'year'] = $_GET[$prefix.'year'] = $params[0]; - if (isset($params[1])) $_REQUEST[$prefix.'month'] = $_GET[$prefix.'month'] = $params[1]; - if (isset($params[2])) $_REQUEST[$prefix.'day'] = $_GET[$prefix.'day'] = $params[2]; + if(is_numeric($params[0])) { + $_REQUEST[$prefix.'year'] = $_GET[$prefix.'year'] = $params[0]; + if (isset($params[1])) $_REQUEST[$prefix.'month'] = $_GET[$prefix.'month'] = $params[1]; + if (isset($params[2])) $_REQUEST[$prefix.'day'] = $_GET[$prefix.'day'] = $params[2]; + } else { + // Display the default 404 page if nothing found + $this->modx->sendForward($this->modx->getOption('error_page'), 'HTTP/1.1 404 Not Found'); + } } /* forward */ From 2b47eeb95ce3d70a5ff0330513bfad67a43cfb06 Mon Sep 17 00:00:00 2001 From: Mark Willis Date: Mon, 7 Apr 2014 14:51:36 +0100 Subject: [PATCH 26/42] Added 404 to more page alternatives --- .../model/articles/articlesrouter.class.php | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/core/components/articles/model/articles/articlesrouter.class.php b/core/components/articles/model/articles/articlesrouter.class.php index 3f3e8ca..ac96f35 100644 --- a/core/components/articles/model/articles/articlesrouter.class.php +++ b/core/components/articles/model/articles/articlesrouter.class.php @@ -98,12 +98,24 @@ public function route() { if(is_numeric($params[0])) { $_REQUEST[$prefix.'year'] = $_GET[$prefix.'year'] = $params[0]; - if (isset($params[1])) $_REQUEST[$prefix.'month'] = $_GET[$prefix.'month'] = $params[1]; - if (isset($params[2])) $_REQUEST[$prefix.'day'] = $_GET[$prefix.'day'] = $params[2]; + if (isset($params[1]) && is_numeric($params[1])) { + $_REQUEST[$prefix.'month'] = $_GET[$prefix.'month'] = $params[1]; + } else if(isset($params[1])) { + // Display the default 404 page if "month" is not a number + $this->modx->sendForward($this->modx->getOption('error_page'), 'HTTP/1.1 404 Not Found'); + } + if (isset($params[2]) && is_numeric($params[2])) { + $_REQUEST[$prefix.'day'] = $_GET[$prefix.'day'] = $params[2]; + } else if(isset($params[2])) { + // Display the default 404 page if "day" is not a number + $this->modx->sendForward($this->modx->getOption('error_page'), 'HTTP/1.1 404 Not Found'); + + } } else { // Display the default 404 page if nothing found $this->modx->sendForward($this->modx->getOption('error_page'), 'HTTP/1.1 404 Not Found'); } + } /* forward */ From b6b17675db583b066e2fd940803caebb6f541bc8 Mon Sep 17 00:00:00 2001 From: Jan-Christoph Ihrens Date: Fri, 18 Apr 2014 05:39:49 +0200 Subject: [PATCH 27/42] Translated missing/changed phrases to German --- .../articles/lexicon/de/default.inc.php | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/core/components/articles/lexicon/de/default.inc.php b/core/components/articles/lexicon/de/default.inc.php index 60b0e49..eead27c 100644 --- a/core/components/articles/lexicon/de/default.inc.php +++ b/core/components/articles/lexicon/de/default.inc.php @@ -154,7 +154,7 @@ $_lang['articles.setting.articleUriTemplate'] = 'Articles-URL-Format'; $_lang['articles.setting.articleUriTemplate_desc'] = '%Y = Jahr (4-stellig), %m = Monat (mit führenden Nullen), %d = Tag (mit führenden Nullen), %alias = Artikel-Alias, %id = Artikel-ID, %ext = Dateiendung (z.B. html). Hinweis: Änderungen an dieser Einstellung wirken sich nur auf *neue* Artikel aus, es sei denn, Sie ändern den Alias oder ziehen alte Artikel zurück und veröffentlichen sie erneut, wodurch ihre URLs im neuen Format neu generiert werden.'; -/* template / archives settings */ +/* Template / archives settings */ $_lang['articles.setting.articleTemplate'] = 'Artikel-Template'; $_lang['articles.setting.articleTemplate_desc'] = 'Das Template, das standardmäßig für Artikel verwendet wird.'; $_lang['articles.setting.tplArticleRow'] = 'Artikel-Zeilen-Chunk'; @@ -205,7 +205,7 @@ $_lang['articles.setting.rssAlias'] = 'RSS-Alias (Permalink)'; $_lang['articles.setting.rssAlias_desc'] = 'Der Alias (Permalink) für den RSS-Feed, der an die Articles-Container-URL angehängt wird.'; $_lang['articles.setting.rssItems'] = 'Anzahl der RSS-Elemente'; -$_lang['articles.setting.rssItems_desc'] = 'Die Anzahl der RSS-Elemente, die im RSS-Feed angezeigt werden sollen.'; +$_lang['articles.setting.rssItems_desc'] = 'Die Anzahl der RSS-Elemente, die im RSS-Feed angezeigt werden sollen. Geben Sie 0 ein für unbegrenzt viele Elemente.'; $_lang['articles.setting.tplRssFeed'] = 'RSS-Feed-Chunk'; $_lang['articles.setting.tplRssFeed_desc'] = 'Der Chunk, der für das RSS-Feed-Template verwendet wird.'; $_lang['articles.setting.tplRssItem'] = 'RSS-Element-Chunk'; @@ -228,6 +228,8 @@ $_lang['articles.setting.latestPostsLimit_desc'] = 'Die Anzahl der anzuzeigenden neuesten Artikel.'; $_lang['articles.setting.latestPostsOffset'] = 'Start-Index für neueste Artikel'; $_lang['articles.setting.latestPostsOffset_desc'] = 'Der Start-Index der Liste der neuesten Artikel.'; +$_lang['articles.setting.otherLatestPosts'] = 'Andere Listen-Parameter'; +$_lang['articles.setting.otherLatestPosts_desc'] = 'Alle anderen Eigenschaften, die Sie dem getResources-/getPage-Aufruf für das "Neueste Artikel"-Widget hinzufügen möchten. Verwenden Sie dafür MODX-Tag-Syntax, als ob Sie sie zu dem Snippet-Aufruf hinzufügen würden (z.B. &eigenschaft=`wert`).'; /* Notifications */ $_lang['articles.setting.notifyTwitter'] = 'An Twitter senden'; @@ -326,22 +328,29 @@ $_lang['articles.setting.commentsGravatarIcon'] = 'Gravatar-Icon-Stil'; $_lang['articles.setting.commentsGravatarIcon_desc'] = 'Der Gravatar-Icon-Typ, der für Benutzer ohne Gravatar genutzt wird.'; $_lang['articles.setting.commentsGravatarSize'] = 'Gravatar-Icon-Größe'; -$_lang['articles.setting.commentsGravatarSize_desc'] = 'Die Größe des Gravatars in Pixeln.'; +$_lang['articles.setting.commentsGravatarSize_desc'] = 'Die Größe des Gravatars in Pixeln. Der Standardwert ist 50.'; $_lang['articles.setting.'] = ''; $_lang['articles.setting._desc'] = ''; +$_lang['articles.loading'] = 'Lade'; /* Settings */ $_lang['setting_articles.article_show_longtitle'] = 'Feld für langen Titel anzeigen'; $_lang['setting_articles.article_show_longtitle_desc'] = 'Setzen Sie diese Einstellung auf "Ja", wenn das Feld "Langer Titel" beim Bearbeiten eines Artikels eingeblendet werden soll.'; $_lang['setting_articles.default_container_template'] = 'Standard-Artikel-Container-Template'; -$_lang['setting_articles.default_container_template_desc'] = 'Das Template, das standardmäßig verwendet wird, wenn ein neuer Artikel-Container erstellt wird.'; +$_lang['setting_articles.default_container_template_desc'] = 'Das Template (ID), das standardmäßig verwendet wird, wenn ein neuer Artikel-Container erstellt wird.'; $_lang['setting_articles.default_article_template'] = 'Standard-Artikel-Template'; -$_lang['setting_articles.default_article_template_desc'] = 'Das Template, das standardmäßig verwendet wird, wenn ein neuer Artikel erstellt wird und im Container selbst kein Template angegeben ist.'; +$_lang['setting_articles.default_article_template_desc'] = 'Das Template (ID), das standardmäßig verwendet wird, wenn ein neuer Artikel erstellt wird und im Container selbst kein Template angegeben ist.'; $_lang['setting_articles.container_ids'] = 'Container-IDs für das Routing von suchmaschinenfreundlichen URLs'; $_lang['setting_articles.container_ids_desc'] = 'Eine kommaseparierte Liste von Container-IDs, die für das Routing von suchmaschinenfreundlichen URLs verwendet werden. Es wird empfohlen, hier keine Änderungen vorzunehmen.'; // FURL routing $_lang['setting_articles.default_article_sort_field'] = 'Standard-Sortierfeld für Artikel im Manager'; -$_lang['setting_articles.default_article_sort_field_desc'] = 'Das Standard-Sortierfeld für die Artikel-Liste beim Bearbeiten eines Containers.'; \ No newline at end of file +$_lang['setting_articles.default_article_sort_field_desc'] = 'Das Standard-Sortierfeld für die Artikel-Liste beim Bearbeiten eines Containers.'; + +$_lang['setting_articles.mgr_date_format'] = 'Manager-Datumsformat'; +$_lang['setting_articles.mgr_date_format_desc'] = 'Datumsformat, das innerhalb eines Artikel-Containers angezeigt wird, wenn Artikel im Manager aufgelistet werden.'; + +$_lang['setting_articles.mgr_time_format'] = 'Manager-Zeitformat'; +$_lang['setting_articles.mgr_time_format_desc'] = 'Zeitformat, das innerhalb eines Artikel-Containers angezeigt wird, wenn Artikel im Manager aufgelistet werden.'; From 46df8fee865aa5fbc9d26d6173c6d80cad42d1a5 Mon Sep 17 00:00:00 2001 From: JP DeVries Date: Fri, 2 May 2014 10:36:44 -0700 Subject: [PATCH 28/42] Update readme.md --- readme.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/readme.md b/readme.md index 65f4999..438a8fa 100644 --- a/readme.md +++ b/readme.md @@ -4,3 +4,8 @@ This is the official repo for the MODX blogging extra Articles. * The documentation can be found at [MODX Docs](http://rtfm.modx.com/extras/revo/articles). * Help can be found at the [MODX Forum](http://forums.modx.com/board?board=265) + +## Discuss +Join the conversation in our public Gitter chat room. + +[![Gitter chat](https://badges.gitter.im/modxcms/Articles.png)](https://gitter.im/modxcms/Articles) From 468d107a81624a28d85a30fad499c1b07f8a1dbe Mon Sep 17 00:00:00 2001 From: Mark Hamstra Date: Tue, 15 Jul 2014 21:16:59 +0200 Subject: [PATCH 29/42] - #90 Fix Articles in Revolution 2.3 --- .../components/articles/js/article/create.js | 12 +---------- .../components/articles/js/article/update.js | 20 +++++-------------- .../js/container/container.articles.grid.js | 16 +++++++-------- .../articles/js/container/container.common.js | 12 +---------- core/components/articles/docs/changelog.txt | 4 ++++ .../processors/article/getlist.class.php | 14 +++++++++---- 6 files changed, 29 insertions(+), 49 deletions(-) diff --git a/assets/components/articles/js/article/create.js b/assets/components/articles/js/article/create.js index 7d7551f..c482403 100755 --- a/assets/components/articles/js/article/create.js +++ b/assets/components/articles/js/article/create.js @@ -195,11 +195,6 @@ Ext.extend(Articles.panel.Article,MODx.panel.Resource,{ ,hiddenName: 'createdby' ,id: 'modx-resource-createdby' ,allowBlank: true - ,baseParams: { - action: 'getList' - ,combo: '1' - ,limit: 0 - } ,width: 300 ,value: config.record.createdby || MODx.user.id },{ @@ -229,11 +224,6 @@ Ext.extend(Articles.panel.Article,MODx.panel.Resource,{ ,id: 'modx-resource-template' ,anchor: '100%' ,editable: false - ,baseParams: { - action: 'getList' - ,combo: '1' - ,limit: '0' - } },{ xtype: 'textfield' ,fieldLabel: _('articles.article_alias') @@ -340,4 +330,4 @@ Ext.extend(Articles.panel.Article,MODx.panel.Resource,{ Ext.apply(o.form.baseParams,d); } }); -Ext.reg('modx-panel-article',Articles.panel.Article); \ No newline at end of file +Ext.reg('modx-panel-article',Articles.panel.Article); diff --git a/assets/components/articles/js/article/update.js b/assets/components/articles/js/article/update.js index 3d0b6d1..ed81f39 100755 --- a/assets/components/articles/js/article/update.js +++ b/assets/components/articles/js/article/update.js @@ -69,9 +69,9 @@ Ext.extend(Articles.page.UpdateArticle,MODx.page.UpdateResource,{ ,publishArticle: function(btn,e) { MODx.Ajax.request({ - url: MODx.config.connectors_url+'resource/index.php' + url: (MODx.config.connector_url) ? MODx.config.connector_url : MODx.config.connectors_url+'resource/index.php' ,params: { - action: 'publish' + action: (MODx.config.connector_url) ? 'resource/publish' : 'publish' ,id: MODx.request.id } ,listeners: { @@ -99,9 +99,9 @@ Ext.extend(Articles.page.UpdateArticle,MODx.page.UpdateResource,{ ,unpublishArticle: function(btn,e) { MODx.Ajax.request({ - url: MODx.config.connectors_url+'resource/index.php' + url: (MODx.config.connector_url) ? MODx.config.connector_url : MODx.config.connectors_url+'resource/index.php' ,params: { - action: 'unpublish' + action: (MODx.config.connector_url) ? 'resource/unpublish' : 'unpublish' ,id: MODx.request.id } ,listeners: { @@ -371,11 +371,6 @@ Ext.extend(Articles.panel.Article,MODx.panel.Resource,{ ,hiddenName: 'createdby' ,id: 'modx-resource-createdby' ,allowBlank: true - ,baseParams: { - action: 'getList' - ,combo: '1' - ,limit: 0 - } ,width: 300 ,value: config.record.createdby },{ @@ -405,11 +400,6 @@ Ext.extend(Articles.panel.Article,MODx.panel.Resource,{ ,id: 'modx-resource-template' ,anchor: '100%' ,editable: false - ,baseParams: { - action: 'getList' - ,combo: '1' - ,limit: '0' - } },{ xtype: 'textfield' ,fieldLabel: _('articles.article_alias') @@ -539,4 +529,4 @@ Ext.extend(Articles.panel.Article,MODx.panel.Resource,{ } } }); -Ext.reg('modx-panel-article',Articles.panel.Article); \ No newline at end of file +Ext.reg('modx-panel-article',Articles.panel.Article); diff --git a/assets/components/articles/js/container/container.articles.grid.js b/assets/components/articles/js/container/container.articles.grid.js index 0478203..0a2f91b 100644 --- a/assets/components/articles/js/container/container.articles.grid.js +++ b/assets/components/articles/js/container/container.articles.grid.js @@ -264,9 +264,9 @@ Ext.extend(Articles.grid.ContainerArticles,MODx.grid.Grid,{ MODx.msg.confirm({ title: _('articles.article_delete') ,text: _('articles.article_delete_confirm') - ,url: MODx.config.connectors_url+'resource/index.php' + ,url: (MODx.config.connector_url) ? MODx.config.connector_url : MODx.config.connectors_url+'resource/index.php' ,params: { - action: 'delete' + action: (MODx.config.connector_url) ? 'resource/delete' : 'delete' ,id: this.menu.record.id } ,listeners: { @@ -319,9 +319,9 @@ Ext.extend(Articles.grid.ContainerArticles,MODx.grid.Grid,{ ,undeleteArticle: function(btn,e) { MODx.Ajax.request({ - url: MODx.config.connectors_url+'resource/index.php' + url: (MODx.config.connector_url) ? MODx.config.connector_url : MODx.config.connectors_url+'resource/index.php' ,params: { - action: 'undelete' + action: (MODx.config.connector_url) ? 'resource/undelete' : 'undelete' ,id: this.menu.record.id } ,listeners: { @@ -372,9 +372,9 @@ Ext.extend(Articles.grid.ContainerArticles,MODx.grid.Grid,{ ,publishArticle: function(btn,e) { MODx.Ajax.request({ - url: MODx.config.connectors_url+'resource/index.php' + url: (MODx.config.connector_url) ? MODx.config.connector_url : MODx.config.connectors_url+'resource/index.php' ,params: { - action: 'publish' + action: (MODx.config.connector_url) ? 'resource/publish' : 'publish' ,id: this.menu.record.id } ,listeners: { @@ -385,9 +385,9 @@ Ext.extend(Articles.grid.ContainerArticles,MODx.grid.Grid,{ ,unpublishArticle: function(btn,e) { MODx.Ajax.request({ - url: MODx.config.connectors_url+'resource/index.php' + url: (MODx.config.connector_url) ? MODx.config.connector_url : MODx.config.connectors_url+'resource/index.php' ,params: { - action: 'unpublish' + action: (MODx.config.connector_url) ? 'resource/unpublish' : 'unpublish' ,id: this.menu.record.id } ,listeners: { diff --git a/assets/components/articles/js/container/container.common.js b/assets/components/articles/js/container/container.common.js index 210d0a2..569e829 100644 --- a/assets/components/articles/js/container/container.common.js +++ b/assets/components/articles/js/container/container.common.js @@ -1540,11 +1540,6 @@ Ext.extend(Articles.panel.ContainerTemplateSettings,MODx.Panel,{ ,id: 'modx-resource-template' ,anchor: '100%' ,editable: false - ,baseParams: { - action: 'getList' - ,combo: '1' - ,limit: '0' - } ,value: config.record.template || MODx.config['articles.default_container_template'] ,listeners: oc },{ @@ -1573,11 +1568,6 @@ Ext.extend(Articles.panel.ContainerTemplateSettings,MODx.Panel,{ ,anchor: '100%' ,value: config.record.setting_articleTemplate || MODx.config['articles.default_article_template'] ,listeners: oc - ,baseParams: { - action: 'getList' - ,combo: '1' - ,limit: 0 - } },{ xtype: MODx.expandHelp ? 'label' : 'hidden' ,forId: 'articles-setting-articleTemplate' @@ -1651,4 +1641,4 @@ Articles.combo.Shorteners = function(config) { Articles.combo.Shorteners.superclass.constructor.call(this,config); }; Ext.extend(Articles.combo.Shorteners,MODx.combo.ComboBox); -Ext.reg('articles-combo-shorteners',Articles.combo.Shorteners); \ No newline at end of file +Ext.reg('articles-combo-shorteners',Articles.combo.Shorteners); diff --git a/core/components/articles/docs/changelog.txt b/core/components/articles/docs/changelog.txt index 0105496..bac2cd8 100644 --- a/core/components/articles/docs/changelog.txt +++ b/core/components/articles/docs/changelog.txt @@ -1,5 +1,9 @@ Changelog for Articles. +Articles 1.7.7 +=============================== +- #90 Fix Articles in Revolution 2.3 + Articles 1.7.6 =============================== - #50 Conditionally load classes in controller diff --git a/core/components/articles/processors/article/getlist.class.php b/core/components/articles/processors/article/getlist.class.php index 29b0d54..d78129c 100644 --- a/core/components/articles/processors/article/getlist.class.php +++ b/core/components/articles/processors/article/getlist.class.php @@ -31,7 +31,7 @@ class ArticleGetListProcessor extends modObjectGetListProcessor { public $objectType = 'article'; public $languageTopics = array('resource','articles:default'); - /** @var modAction $editAction */ + /** @var int|string $editAction */ public $editAction; /** @var modTemplateVar $tvTags */ public $tvTags; @@ -41,10 +41,16 @@ class ArticleGetListProcessor extends modObjectGetListProcessor { public $commentsEnabled = false; public function initialize() { - $this->editAction = $this->modx->getObject('modAction',array( + $action = $this->modx->getObject('modAction',array( 'namespace' => 'core', 'controller' => 'resource/update', )); + if ($action) { + $this->editAction = $action->get('id'); + } + else { + $this->editAction = 'resource/update'; + } $this->defaultSortField = $this->modx->getOption('articles.default_article_sort_field',null,'createdon'); if ($this->getParentContainer()) { @@ -185,7 +191,7 @@ public function prepareRow(xPDOObject $object) { $resourceArray['publishedon_time'] = strftime($this->modx->getOption('articles.mgr_time_format',null,'%H:%I %p'),$publishedon); $resourceArray['publishedon'] = strftime('%b %d, %Y %H:%I %p',$publishedon); } - $resourceArray['action_edit'] = '?a='.$this->editAction->get('id').'&action=post/update&id='.$resourceArray['id']; + $resourceArray['action_edit'] = '?a='.$this->editAction.'&action=post/update&id='.$resourceArray['id']; if (!array_key_exists('comments',$resourceArray)) $resourceArray['comments'] = 0; $this->modx->getContext($resourceArray['context_key']); @@ -235,4 +241,4 @@ public function ellipsis($string,$length = 300) { return $string; } } -return 'ArticleGetListProcessor'; \ No newline at end of file +return 'ArticleGetListProcessor'; From 36fdf11aab2f69e9b02e35c1e732381e9716c0d7 Mon Sep 17 00:00:00 2001 From: Mark Hamstra Date: Tue, 15 Jul 2014 21:20:09 +0200 Subject: [PATCH 30/42] Add contentblocks_replacement class to make Articles compatible with ContentBlocks 1.1 (cherry picked from commit 6064a035fbab61dae09200ee42c192a47ca9f6d3) --- assets/components/articles/js/article/create.js | 1 + assets/components/articles/js/article/update.js | 1 + 2 files changed, 2 insertions(+) diff --git a/assets/components/articles/js/article/create.js b/assets/components/articles/js/article/create.js index c482403..7a17018 100755 --- a/assets/components/articles/js/article/create.js +++ b/assets/components/articles/js/article/create.js @@ -126,6 +126,7 @@ Ext.extend(Articles.panel.Article,MODx.panel.Resource,{ ,height: 400 ,grow: false ,value: (config.record.content || config.record.ta) || '' + ,itemCls: 'contentblocks_replacement' },{ id: 'modx-content-below' ,border: false diff --git a/assets/components/articles/js/article/update.js b/assets/components/articles/js/article/update.js index ed81f39..019b8e2 100755 --- a/assets/components/articles/js/article/update.js +++ b/assets/components/articles/js/article/update.js @@ -305,6 +305,7 @@ Ext.extend(Articles.panel.Article,MODx.panel.Resource,{ ,height: 400 ,grow: false ,value: (config.record.content || config.record.ta) || '' + ,itemCls: 'contentblocks_replacement' },{ id: 'modx-content-below' ,border: false From b28b1087388abdaa517e368deb00d13bfa3839a4 Mon Sep 17 00:00:00 2001 From: Mark Hamstra Date: Tue, 15 Jul 2014 21:21:00 +0200 Subject: [PATCH 31/42] - #87 Implement compatibility for ContentBlocks (v1.1) --- core/components/articles/docs/changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/core/components/articles/docs/changelog.txt b/core/components/articles/docs/changelog.txt index bac2cd8..c5684c3 100644 --- a/core/components/articles/docs/changelog.txt +++ b/core/components/articles/docs/changelog.txt @@ -3,6 +3,7 @@ Changelog for Articles. Articles 1.7.7 =============================== - #90 Fix Articles in Revolution 2.3 +- #87 Implement compatibility for ContentBlocks (v1.1) Articles 1.7.6 =============================== From 5d677904d8669fa3b3fe95bd82b0b2ed96555495 Mon Sep 17 00:00:00 2001 From: Mark Hamstra Date: Tue, 15 Jul 2014 21:24:17 +0200 Subject: [PATCH 32/42] Update version in build --- _build/build.transport.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_build/build.transport.php b/_build/build.transport.php index e5bc9ce..0f99c9b 100644 --- a/_build/build.transport.php +++ b/_build/build.transport.php @@ -28,7 +28,7 @@ /* define package */ define('PKG_NAME','Articles'); define('PKG_NAME_LOWER',strtolower(PKG_NAME)); -define('PKG_VERSION','1.7.6'); +define('PKG_VERSION','1.7.7'); define('PKG_RELEASE','pl'); /* define sources */ From 37a621ad31437cd82b64d2481268df8fc4fb8967 Mon Sep 17 00:00:00 2001 From: JP DeVries Date: Wed, 16 Jul 2014 08:50:06 -0700 Subject: [PATCH 33/42] Fix processor not found error on Article update Closes modxcms/Articles#92 --- assets/components/articles/js/article/update.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/components/articles/js/article/update.js b/assets/components/articles/js/article/update.js index 019b8e2..c5a8f69 100755 --- a/assets/components/articles/js/article/update.js +++ b/assets/components/articles/js/article/update.js @@ -15,7 +15,7 @@ Ext.extend(Articles.page.UpdateArticle,MODx.page.UpdateResource,{ var btns = []; if (cfg.canSave == 1) { btns.push({ - process: 'update' + process: (MODx.config.connector_url) ? 'resource/update' : 'update' ,text: _('save') ,method: 'remote' ,checkDirty: cfg.richtext || MODx.request.activeSave == 1 ? false : true From 4c9cb4a53c35dbb58896aa1216b79f433c8d030e Mon Sep 17 00:00:00 2001 From: JP DeVries Date: Wed, 16 Jul 2014 10:57:05 -0700 Subject: [PATCH 34/42] Bumping version to 1.7.8 and updating changelog --- _build/build.transport.php | 2 +- core/components/articles/docs/changelog.txt | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/_build/build.transport.php b/_build/build.transport.php index 0f99c9b..5466bdd 100644 --- a/_build/build.transport.php +++ b/_build/build.transport.php @@ -28,7 +28,7 @@ /* define package */ define('PKG_NAME','Articles'); define('PKG_NAME_LOWER',strtolower(PKG_NAME)); -define('PKG_VERSION','1.7.7'); +define('PKG_VERSION','1.7.8'); define('PKG_RELEASE','pl'); /* define sources */ diff --git a/core/components/articles/docs/changelog.txt b/core/components/articles/docs/changelog.txt index c5684c3..dba7331 100644 --- a/core/components/articles/docs/changelog.txt +++ b/core/components/articles/docs/changelog.txt @@ -1,5 +1,9 @@ Changelog for Articles. +Articles 1.7.8 +=============================== +- #92 Fix Articles save on update in Revolution 2.3 + Articles 1.7.7 =============================== - #90 Fix Articles in Revolution 2.3 From 590f9a1472cc03dc3355db1fa350c15f1b3e23b9 Mon Sep 17 00:00:00 2001 From: exside Date: Tue, 5 Aug 2014 12:03:42 +0200 Subject: [PATCH 35/42] Fix Articles container > articles grid buttons --- .../articles/js/container/container.articles.grid.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/assets/components/articles/js/container/container.articles.grid.js b/assets/components/articles/js/container/container.articles.grid.js index 0a2f91b..ca6a41c 100644 --- a/assets/components/articles/js/container/container.articles.grid.js +++ b/assets/components/articles/js/container/container.articles.grid.js @@ -63,6 +63,7 @@ Articles.grid.ContainerArticles = function(config) { }] ,tbar: [{ text: _('articles.article_create') + ,cls: 'primary-button' ,handler: this.createArticle ,scope: this },{ @@ -100,6 +101,7 @@ Articles.grid.ContainerArticles = function(config) { xtype: 'textfield' ,name: 'search' ,id: 'articles-article-search' + ,cls: 'x-form-filter' ,emptyText: _('search_ellipsis') ,listeners: { 'change': {fn: this.search, scope: this} @@ -117,6 +119,7 @@ Articles.grid.ContainerArticles = function(config) { },{ xtype: 'button' ,id: 'modx-filter-clear' + ,cls: 'x-form-filter-clear' ,text: _('filter_clear') ,listeners: { 'click': {fn: this.clearFilter, scope: this} From 63b8873a24748220514357799105edc94044f8dd Mon Sep 17 00:00:00 2001 From: exside Date: Tue, 5 Aug 2014 12:30:11 +0200 Subject: [PATCH 36/42] Fix import window, removed height needs a check in 2.2.x for undesired effects --- .../js/container/articles.import.window.js | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/assets/components/articles/js/container/articles.import.window.js b/assets/components/articles/js/container/articles.import.window.js index 53ac395..c3fb38d 100644 --- a/assets/components/articles/js/container/articles.import.window.js +++ b/assets/components/articles/js/container/articles.import.window.js @@ -5,9 +5,9 @@ Articles.window.ArticlesImport = function(config) { Ext.applyIf(config,{ title: _('articles.articles_import') ,id: this.ident - ,height: 150 - ,width: '75%' - ,minWidth: 650 + // ,height: 150 + // ,width: '75%' + ,width: 600 ,url: Articles.connector_url ,action: 'container/import' ,fileUpload: true @@ -81,12 +81,13 @@ Articles.panel.ImportOptionsWordPress = function(config) { msgTarget: 'under' } ,items: [{ - xtype: 'textfield' - ,inputType: 'file' + xtype: (MODx.config.connector_url) ? 'fileuploadfield' : 'textfield' // check for 2.3 + ,buttonText: _('upload.buttons.upload') ,name: 'wp-file' ,fieldLabel: _('articles.import_wp_file') + ,inputType: (MODx.config.connector_url) ? 'text' : 'file' // check for 2.3 ,id: this.ident+'-wp-file' - ,anchor: '98%' + ,anchor: (MODx.config.connector_url) ? '100%' : '98%' // check for 2.3 },{ xtype: MODx.expandHelp ? 'label' : 'hidden' ,forId: this.ident+'-wp-file' @@ -98,7 +99,7 @@ Articles.panel.ImportOptionsWordPress = function(config) { ,fieldLabel: _('articles.import_wp_file_server') ,description: MODx.expandHelp ? '' : _('articles.import_wp_file_server') ,id: this.ident+'-wp-file-server' - ,anchor: '98%' + ,anchor: (MODx.config.connector_url) ? '100%' : '98%' // check for 2.3 ,value: '{core_path}import/' },{ xtype: MODx.expandHelp ? 'label' : 'hidden' @@ -264,12 +265,13 @@ Articles.panel.ImportOptionsBlogger = function(config) { msgTarget: 'under' } ,items: [{ - xtype: 'textfield' - ,inputType: 'file' + xtype: (MODx.config.connector_url) ? 'fileuploadfield' : 'textfield' // check for 2.3 + ,buttonText: _('upload.buttons.upload') ,name: 'blogger-file' ,fieldLabel: _('articles.import_blogger_file') + ,inputType: (MODx.config.connector_url) ? 'text' : 'file' // check for 2.3 ,id: this.ident+'-blogger-file' - ,anchor: '98%' + ,anchor: (MODx.config.connector_url) ? '100%' : '98%' // check for 2.3 },{ xtype: MODx.expandHelp ? 'label' : 'hidden' ,forId: this.ident+'-blogger-file' @@ -281,7 +283,7 @@ Articles.panel.ImportOptionsBlogger = function(config) { ,fieldLabel: _('articles.import_blogger_file_server') ,description: MODx.expandHelp ? '' : _('articles.import_blogger_file_server') ,id: this.ident+'-blogger-file-server' - ,anchor: '98%' + ,anchor: (MODx.config.connector_url) ? '100%' : '98%' // check for 2.3 ,value: '{core_path}import/' },{ xtype: MODx.expandHelp ? 'label' : 'hidden' From 9ff0438b4795c78c6f42775433e849aa29882dca Mon Sep 17 00:00:00 2001 From: exside Date: Tue, 5 Aug 2014 12:37:33 +0200 Subject: [PATCH 37/42] Fix missing close button for special articles tag field --- assets/components/articles/js/extras/tagfield.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/components/articles/js/extras/tagfield.js b/assets/components/articles/js/extras/tagfield.js index b7c690c..1721628 100755 --- a/assets/components/articles/js/extras/tagfield.js +++ b/assets/components/articles/js/extras/tagfield.js @@ -137,7 +137,7 @@ Ext.extend(Articles.extra.Tags,Ext.form.ComboBox,{ this.el.parent().wrap({ tag: 'div' - ,class: 'bxr-field-tags' + ,class: 'bxr-field-tags x-superboxselect' // x-superboxselect class needed to correctly display the tag remove button/cross }); this.el.parent().wrap({ From 4850b25def32a7946deec27af086ad8e8db5e46b Mon Sep 17 00:00:00 2001 From: exside Date: Tue, 5 Aug 2014 12:43:11 +0200 Subject: [PATCH 38/42] Add missing primary-button class to article update actionbar --- assets/components/articles/js/article/update.js | 1 + 1 file changed, 1 insertion(+) diff --git a/assets/components/articles/js/article/update.js b/assets/components/articles/js/article/update.js index c5a8f69..8e37a64 100755 --- a/assets/components/articles/js/article/update.js +++ b/assets/components/articles/js/article/update.js @@ -17,6 +17,7 @@ Ext.extend(Articles.page.UpdateArticle,MODx.page.UpdateResource,{ btns.push({ process: (MODx.config.connector_url) ? 'resource/update' : 'update' ,text: _('save') + ,cls: 'primary-button' ,method: 'remote' ,checkDirty: cfg.richtext || MODx.request.activeSave == 1 ? false : true ,keys: [{ From 52c22cf0abb5a8a5a0e3eda592e27bcbdd2a2ad2 Mon Sep 17 00:00:00 2001 From: Mark Willis Date: Tue, 9 Sep 2014 10:52:14 +0100 Subject: [PATCH 39/42] Updated getlist to be multibyte safe --- .../articles/processors/article/getlist.class.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/components/articles/processors/article/getlist.class.php b/core/components/articles/processors/article/getlist.class.php index d78129c..21b7078 100644 --- a/core/components/articles/processors/article/getlist.class.php +++ b/core/components/articles/processors/article/getlist.class.php @@ -235,9 +235,9 @@ public function prepareRow(xPDOObject $object) { } public function ellipsis($string,$length = 300) { - if (strlen($string) > $length) { - $string = substr($string,0,$length).'...'; - } + if (mb_strlen($string) > $length) { + $string = mb_substr($string,0,$length,$this->modx->config['charset']).'...'; + } return $string; } } From b9f2c4c07c4c3fcc42aea1a5f9265416e9becad0 Mon Sep 17 00:00:00 2001 From: Mark Willis Date: Tue, 9 Sep 2014 11:31:02 +0100 Subject: [PATCH 40/42] Updated manager article "update" screen to pre-load the existing MODx.page.UpdateResource buttons then replace any that are needed. Rather than overriding the original ones. Also updated the article.class.php to allow articles outside of an article container (Allowing support for StageCoach and Workflow Extras) --- .../components/articles/js/article/update.js | 98 ++++++++++++------- .../articles/model/articles/article.class.php | 10 +- 2 files changed, 66 insertions(+), 42 deletions(-) diff --git a/assets/components/articles/js/article/update.js b/assets/components/articles/js/article/update.js index c5a8f69..25578d2 100755 --- a/assets/components/articles/js/article/update.js +++ b/assets/components/articles/js/article/update.js @@ -10,13 +10,19 @@ Articles.page.UpdateArticle = function(config) { Articles.page.UpdateArticle.superclass.constructor.call(this,config); }; Ext.extend(Articles.page.UpdateArticle,MODx.page.UpdateResource,{ - - getButtons: function(cfg) { - var btns = []; - if (cfg.canSave == 1) { + doesButtonExist: function(btnArray, lexiconKey) { + var exists = false; + btnArray.map(function(item) { + if(lexiconKey == item.text) exists = true; + }); + return exists; + } + ,getButtons: function(cfg) { + var btns = MODx.page.UpdateResource.prototype.getButtons(cfg); //[]; + if (cfg.canSave == 1 && !this.doesButtonExist(btns, _('save'))) { btns.push({ process: (MODx.config.connector_url) ? 'resource/update' : 'update' - ,text: _('save') + ,text:_('save') ,method: 'remote' ,checkDirty: cfg.richtext || MODx.request.activeSave == 1 ? false : true ,keys: [{ @@ -25,7 +31,7 @@ Ext.extend(Articles.page.UpdateArticle,MODx.page.UpdateResource,{ }] }); btns.push('-'); - } else if (cfg.locked) { + } else if (cfg.locked && !this.doesButtonExist(btns, _('locked'))) { btns.push({ text: cfg.lockedText || _('locked') ,handler: Ext.emptyFn @@ -33,38 +39,54 @@ Ext.extend(Articles.page.UpdateArticle,MODx.page.UpdateResource,{ }); btns.push('-'); } - btns.push({ - text: _('articles.article_publish') - ,id: 'modx-article-publish' - ,hidden: cfg.record.published ? true : false - ,handler: this.publishArticle - }); - btns.push({ - text: _('articles.article_unpublish') - ,id: 'modx-article-unpublish' - ,hidden: cfg.record.published ? false : true - ,handler: this.unpublishArticle - }); - btns.push('-'); - btns.push({ - process: 'preview' - ,text: _('view') - ,handler: this.preview - ,scope: this - }); - btns.push('-'); - btns.push({ - process: 'cancel' - ,text: _('cancel') - ,handler: this.cancel - ,scope: this - }); - btns.push('-'); - btns.push({ - text: _('help_ex') - ,handler: MODx.loadHelpPane - }); - return btns; + if(cfg.publish_document && !this.doesButtonExist(btns, _('articles.article_publish'))) { + btns.push({ + text: _('articles.article_publish') + ,id: 'modx-article-publish' + ,hidden: cfg.record.published ? true : false + ,handler: this.publishArticle + }); + btns.push({ + text: _('articles.article_unpublish') + ,id: 'modx-article-unpublish' + ,hidden: cfg.record.published ? false : true + ,handler: this.unpublishArticle + }); + btns.push('-'); + } + if(!this.doesButtonExist(btns, _('view'))) { + btns.push({ + process: 'preview' + ,text: _('view') + ,handler: this.preview + ,scope: this + }); + btns.push('-'); + } + if(!this.doesButtonExist(btns, _('cancel'))) { + btns.push({ + process: 'cancel' + ,text: _('cancel') + ,handler: this.cancel + ,scope: this + }); + btns.push('-'); + } + if(!this.doesButtonExist(btns, _('help_ex'))) { + btns.push({ + text: _('help_ex') + ,handler: MODx.loadHelpPane + }); + } + + // remove duplicate spacings + for(var i=0; i<=(btns.length - 1); i++) { + var item = btns[i]; + if(item != '-') continue; + if(btns[i+1] == '-' || (btns[i+1] && btns[i+1].hidden == true)) btns.splice(i,1); + } + + return btns; } ,publishArticle: function(btn,e) { diff --git a/core/components/articles/model/articles/article.class.php b/core/components/articles/model/articles/article.class.php index 2f69387..e1b05ce 100644 --- a/core/components/articles/model/articles/article.class.php +++ b/core/components/articles/model/articles/article.class.php @@ -72,9 +72,9 @@ public function getContainerSettings() { $settings = $this->getProperties('articles'); /** @var ArticlesContainer $container */ $container = $this->getOne('Container'); - if ($container) { - $settings = $container->getContainerSettings(); - } + if(method_exists($container, 'getContainerSettings')) { + $settings = $container->getContainerSettings(); + } return is_array($settings) ? $settings : array(); } @@ -257,7 +257,9 @@ public function setArchiveUri() { return false; } - $settings = $container->getContainerSettings(); + if(method_exists($container, 'getContainerSettings')) { + $settings = $container->getContainerSettings(); + } if($this->get('pub_date')) $date = $this->get('pub_date'); else $date = $this->get('published') ? $this->get('publishedon') : $this->get('createdon'); From 814fb30a1e74f1f8f7bc165d62f602c75ebb759f Mon Sep 17 00:00:00 2001 From: Jan Peca Date: Wed, 8 Oct 2014 13:45:10 +0200 Subject: [PATCH 41/42] Bump version 1.7.9 --- _build/build.transport.php | 2 +- _build/config.json | 2 +- core/components/articles/docs/changelog.txt | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/_build/build.transport.php b/_build/build.transport.php index 5466bdd..835fe27 100644 --- a/_build/build.transport.php +++ b/_build/build.transport.php @@ -28,7 +28,7 @@ /* define package */ define('PKG_NAME','Articles'); define('PKG_NAME_LOWER',strtolower(PKG_NAME)); -define('PKG_VERSION','1.7.8'); +define('PKG_VERSION','1.7.9'); define('PKG_RELEASE','pl'); /* define sources */ diff --git a/_build/config.json b/_build/config.json index f4adddc..f03aed6 100755 --- a/_build/config.json +++ b/_build/config.json @@ -3,7 +3,7 @@ ,"lowCaseName": "articles" ,"description": "" ,"author": "Shaun McCormick" - ,"version": "1.7.2" + ,"version": "1.7.9" ,"package":{ "elements": { "plugins": [{ diff --git a/core/components/articles/docs/changelog.txt b/core/components/articles/docs/changelog.txt index d03450f..4f8f62b 100644 --- a/core/components/articles/docs/changelog.txt +++ b/core/components/articles/docs/changelog.txt @@ -1,5 +1,7 @@ Changelog for Articles. +Articles 1.7.9 +=============================== - Add setting for default published status of new article - Updated getlist to be multibyte safe and article update getButtons override change - 2.3 Fixes From 7a1fd81e2d1fa99a367cfd8593364cc5463da465 Mon Sep 17 00:00:00 2001 From: JP DeVries Date: Fri, 28 Nov 2014 13:06:08 -0800 Subject: [PATCH 42/42] Fixes View and Close buttons thanks to @gadgetto for the fix Closes modxcms/articles#104 --- assets/components/articles/js/article/update.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/components/articles/js/article/update.js b/assets/components/articles/js/article/update.js index 5f5e32b..b8fa181 100755 --- a/assets/components/articles/js/article/update.js +++ b/assets/components/articles/js/article/update.js @@ -18,7 +18,7 @@ Ext.extend(Articles.page.UpdateArticle,MODx.page.UpdateResource,{ return exists; } ,getButtons: function(cfg) { - var btns = MODx.page.UpdateResource.prototype.getButtons(cfg); //[]; + var btns = []; if (cfg.canSave == 1 && !this.doesButtonExist(btns, _('save'))) { btns.push({ process: (MODx.config.connector_url) ? 'resource/update' : 'update'