summaryrefslogtreecommitdiffstats
path: root/appinfo
diff options
context:
space:
mode:
authorBernhard Posselt <nukeawhale@gmail.com>2013-01-27 04:15:53 +0100
committerBernhard Posselt <nukeawhale@gmail.com>2013-01-27 04:15:53 +0100
commitae7393db3d99a7ac223ae917129cccd9f49888e3 (patch)
tree7f54b72b0d01c38afd1378365a67e4f192922423 /appinfo
parent483784caa38bd6131405ac474347a215584e30a5 (diff)
merged the angularjs branch
Diffstat (limited to 'appinfo')
-rw-r--r--appinfo/app.php34
-rw-r--r--appinfo/bootstrap.php110
-rw-r--r--appinfo/routes.php202
-rw-r--r--appinfo/version3
4 files changed, 324 insertions, 25 deletions
diff --git a/appinfo/app.php b/appinfo/app.php
index 7825f4fc5..2f7c3d868 100644
--- a/appinfo/app.php
+++ b/appinfo/app.php
@@ -10,34 +10,22 @@
*
*/
-OC::$CLASSPATH['OCA\News\StatusFlag'] = 'apps/news/lib/item.php';
-OC::$CLASSPATH['OCA\News\Item'] = 'apps/news/lib/item.php';
-OC::$CLASSPATH['OCA\News\Collection'] = 'apps/news/lib/collection.php';
-OC::$CLASSPATH['OCA\News\Feed'] = 'apps/news/lib/feed.php';
-OC::$CLASSPATH['OCA\News\Folder'] = 'apps/news/lib/folder.php';
-OC::$CLASSPATH['OCA\News\FeedType'] = 'apps/news/lib/feedtypes.php';
+namespace OCA\News;
-OC::$CLASSPATH['OCA\News\FeedMapper'] = 'apps/news/lib/feedmapper.php';
-OC::$CLASSPATH['OCA\News\ItemMapper'] = 'apps/news/lib/itemmapper.php';
-OC::$CLASSPATH['OCA\News\FolderMapper'] = 'apps/news/lib/foldermapper.php';
+require_once \OC_App::getAppPath('news') . '/appinfo/bootstrap.php';
-OC::$CLASSPATH['OCA\News\Utils'] = 'apps/news/lib/utils.php';
-OC::$CLASSPATH['OC_Search_Provider_News'] = 'apps/news/lib/search.php';
-
-OC::$CLASSPATH['OCA\News\Backgroundjob'] = 'apps/news/lib/backgroundjob.php';
-OCP\Backgroundjob::addRegularTask( 'OCA\News\Backgroundjob', 'run' );
-
-OC::$CLASSPATH['OCA\News\Share_Backend_News_Item'] = 'apps/news/lib/share/item.php';
-
-OCP\App::addNavigationEntry( array(
+\OCP\App::addNavigationEntry( array(
'id' => 'news',
'order' => 74,
- 'href' => OC_Helper::linkTo( 'news', 'index.php' ),
- 'icon' => OC_Helper::imagePath( 'news', 'icon.svg' ),
- 'name' => OC_L10N::get('news')->t('News')
+ 'href' => \OC_Helper::linkToRoute('news_index'),
+ 'icon' => \OC_Helper::imagePath( 'news', 'icon.svg' ),
+ 'name' => \OC_L10N::get('news')->t('News')
));
-OC_Search::registerProvider('OC_Search_Provider_News');
+\OC_Search::registerProvider('OC_Search_Provider_News');
+
+\OCP\Backgroundjob::addRegularTask( 'OCA\News\Backgroundjob', 'run' );
+\OCP\Share::registerBackend('news_item', 'OCA\News\Share_Backend_News_Item');
+
-OCP\Share::registerBackend('news_item', 'OCA\News\Share_Backend_News_Item');
diff --git a/appinfo/bootstrap.php b/appinfo/bootstrap.php
new file mode 100644
index 000000000..03a9a79fc
--- /dev/null
+++ b/appinfo/bootstrap.php
@@ -0,0 +1,110 @@
+<?php
+/**
+* ownCloud - News app
+*
+* @author Alessandro Copyright
+* @author Bernhard Posselt
+* @copyright 2012 Alessandro Cosentino cosenal@gmail.com
+* @copyright 2012 Bernhard Posselt nukeawhale@gmail.com
+*
+* This file is licensed under the Affero General Public License version 3 or later.
+* See the COPYING-README file
+*
+*/
+
+namespace OCA\News;
+
+\OC::$CLASSPATH['Pimple'] = 'apps/news/3rdparty/Pimple/Pimple.php';
+
+\OC::$CLASSPATH['OC_Search_Provider_News'] = 'apps/news/lib/search.php';
+\OC::$CLASSPATH['OCA\News\Backgroundjob'] = 'apps/news/lib/backgroundjob.php';
+\OC::$CLASSPATH['OCA\News\Share_Backend_News_Item'] = 'apps/news/lib/share/item.php';
+\OC::$CLASSPATH['OCA\News\Utils'] = 'apps/news/lib/utils.php';
+\OC::$CLASSPATH['OCA\News\Security'] = 'apps/news/lib/security.php';
+\OC::$CLASSPATH['OCA\News\API'] = 'apps/news/lib/api.php';
+\OC::$CLASSPATH['OCA\News\Request'] = 'apps/news/lib/request.php';
+\OC::$CLASSPATH['OCA\News\TemplateResponse'] = 'apps/news/lib/response.php';
+\OC::$CLASSPATH['OCA\News\JSONResponse'] = 'apps/news/lib/response.php';
+\OC::$CLASSPATH['OCA\News\TextDownloadResponse'] = 'apps/news/lib/response.php';
+\OC::$CLASSPATH['OCA\News\Controller'] = 'apps/news/lib/controller.php';
+
+\OC::$CLASSPATH['OCA\News\OPMLParser'] = 'apps/news/opmlparser.php';
+\OC::$CLASSPATH['OCA\News\OPMLExporter'] = 'apps/news/opmlexporter.php';
+\OC::$CLASSPATH['OCA\News\OPMLImporter'] = 'apps/news/opmlimporter.php';
+
+\OC::$CLASSPATH['OCA\News\Enclosure'] = 'apps/news/db/enclosure.php';
+\OC::$CLASSPATH['OCA\News\FeedMapper'] = 'apps/news/db/feedmapper.php';
+\OC::$CLASSPATH['OCA\News\ItemMapper'] = 'apps/news/db/itemmapper.php';
+\OC::$CLASSPATH['OCA\News\FolderMapper'] = 'apps/news/db/foldermapper.php';
+\OC::$CLASSPATH['OCA\News\Folder'] = 'apps/news/db/folder.php';
+\OC::$CLASSPATH['OCA\News\Feed'] = 'apps/news/db/feed.php';
+\OC::$CLASSPATH['OCA\News\Item'] = 'apps/news/db/item.php';
+\OC::$CLASSPATH['OCA\News\Collection'] = 'apps/news/db/collection.php';
+\OC::$CLASSPATH['OCA\News\FeedType'] = 'apps/news/db/feedtype.php';
+\OC::$CLASSPATH['OCA\News\StatusFlag'] = 'apps/news/db/statusflag.php';
+
+\OC::$CLASSPATH['OCA\News\NewsController'] = 'apps/news/controllers/news.controller.php';
+\OC::$CLASSPATH['OCA\News\NewsAjaxController'] = 'apps/news/controllers/news.ajax.controller.php';
+
+
+/**
+ * @return a new DI container with prefilled values for the news app
+ */
+function createDIContainer(){
+ $newsContainer = new \Pimple();
+
+ /**
+ * CONSTANTS
+ */
+ $newsContainer['AppName'] = 'news';
+
+
+ /**
+ * CLASSES
+ */
+ $newsContainer['API'] = $newsContainer->share(function($c){
+ return new API($c['AppName']);
+ });
+
+
+ $newsContainer['Request'] = $newsContainer->share(function($c){
+ return new Request($_GET, $_POST, $_FILES);
+ });
+
+
+ $newsContainer['Security'] = $newsContainer->share(function($c) {
+ return new Security($c['AppName']);
+ });
+
+
+ /**
+ * MAPPERS
+ */
+ $newsContainer['ItemMapper'] = $newsContainer->share(function($c){
+ return new ItemMapper($c['API']->getUserId());
+ });
+
+ $newsContainer['FeedMapper'] = $newsContainer->share(function($c){
+ return new FeedMapper($c['API']->getUserId());
+ });
+
+ $newsContainer['FolderMapper'] = $newsContainer->share(function($c){
+ return new FolderMapper($c['API']->getUserId());
+ });
+
+
+ /**
+ * CONTROLLERS
+ */
+ $newsContainer['NewsController'] = function($c){
+ return new NewsController($c['Request'], $c['API'], $c['FeedMapper'],
+ $c['FolderMapper']);
+ };
+
+ $newsContainer['NewsAjaxController'] = function($c){
+ return new NewsAjaxController($c['Request'], $c['API'], $c['FeedMapper'],
+ $c['FolderMapper'], $c['ItemMapper']);
+ };
+
+ return $newsContainer;
+} \ No newline at end of file
diff --git a/appinfo/routes.php b/appinfo/routes.php
new file mode 100644
index 000000000..21c1de90d
--- /dev/null
+++ b/appinfo/routes.php
@@ -0,0 +1,202 @@
+<?php
+/**
+* ownCloud - News app
+*
+* @author Bernhard Posselt
+* Copyright (c) 2012 - Bernhard Posselt <nukeawhale@gmail.com>
+*
+* This file is licensed under the Affero General Public License version 3 or later.
+* See the COPYING-README file
+*
+*/
+
+namespace OCA\News;
+
+require_once \OC_App::getAppPath('news') . '/appinfo/bootstrap.php';
+
+/**
+ * Shortcut for calling a controller method and printing the result
+ * @param string $controllerName: the name of the controller under which it is
+ * stored in the DI container
+ * @param string $methodName: the method that you want to call
+ * @param array $urlParams: an array with variables extracted from the routes
+ * @param bool $disableAdminCheck: disables the check for adminuser rights
+ * @param bool $isAjax: if the request is an ajax request
+ */
+function callController($controllerName, $methodName, $urlParams, $disableAdminCheck=true,
+ $isAjax=false){
+ $container = createDIContainer();
+
+ // run security checks
+ $security = $container['Security'];
+ runSecurityChecks($security, $isAjax, $disableAdminCheck);
+
+ // call the controller and render the page
+ $controller = $container[$controllerName];
+ $response = $controller->$methodName($urlParams);
+ echo $response->render();
+}
+
+
+/**
+ * Shortcut for calling an ajax controller method and printing the result
+ * @param string $controllerName: the name of the controller under which it is
+ * stored in the DI container
+ * @param string $methodName: the method that you want to call
+ * @param array $urlParams: an array with variables extracted from the routes
+ * @param bool $disableAdminCheck: disables the check for adminuser rights
+ */
+function callAjaxController($controllerName, $methodName, $urlParams, $disableAdminCheck=true){
+ callController($controllerName, $methodName, $urlParams, $disableAdminCheck, true);
+}
+
+
+/**
+ * Runs the security checks and exits on error
+ * @param Security $security: the security object
+ * @param bool $isAjax: if true, the ajax checks will be run, otherwise the normal
+ * checks
+ * @param bool $disableAdminCheck: disables the check for adminuser rights
+ */
+function runSecurityChecks($security, $isAjax=false, $disableAdminCheck=true){
+ if($disableAdminCheck){
+ $security->setIsAdminCheck(false);
+ }
+
+ if($isAjax){
+ $security->runAJAXChecks();
+ } else {
+ $security->runChecks();
+ }
+}
+
+
+/*************************
+ * Define your routes here
+ */
+
+
+/**
+ * Normal Routes
+ */
+$this->create('news_index', '/')->action(
+ function($params){
+ callController('NewsController', 'index', $params, true);
+ }
+);
+
+$this->create('news_index_feed', '/feed/{feedid}')->action(
+ function($params){
+ callController('NewsController', 'index', $params, true);
+ }
+);
+
+$this->create('news_export_opml', '/export/opml')->action(
+ function($params){
+ callController('NewsController', 'exportOPML', $params, true);
+ }
+);
+
+
+/**
+ * AJAX Routes
+ */
+$this->create('news_ajax_init', '/ajax/init')->action(
+ function($params){
+ callAjaxController('NewsAjaxController', 'init', $params);
+ }
+);
+
+$this->create('news_ajax_setshowall', '/ajax/setshowall')->action(
+ function($params){
+ callAjaxController('NewsAjaxController', 'setShowAll', $params);
+ }
+);
+
+
+/**
+ * Folders
+ */
+$this->create('news_ajax_collapsefolder', '/ajax/collapsefolder')->action(
+ function($params){
+ callAjaxController('NewsAjaxController', 'collapseFolder', $params);
+ }
+);
+
+$this->create('news_ajax_changefoldername', '/ajax/changefoldername')->action(
+ function($params){
+ callAjaxController('NewsAjaxController', 'changeFolderName', $params);
+ }
+);
+
+$this->create('news_ajax_createfolder', '/ajax/createfolder')->action(
+ function($params){
+ callAjaxController('NewsAjaxController', 'createFolder', $params);
+ }
+);
+
+$this->create('news_ajax_deletefolder', '/ajax/deletefolder')->action(
+ function($params){
+ callAjaxController('NewsAjaxController', 'deleteFolder', $params);
+ }
+);
+
+
+/**
+ * Feeds
+ */
+$this->create('news_ajax_loadfeed', '/ajax/loadfeed')->action(
+ function($params){
+ callAjaxController('NewsAjaxController', 'loadFeed', $params);
+ }
+);
+
+$this->create('news_ajax_deletefeed', '/ajax/deletefeed')->action(
+ function($params){
+ callAjaxController('NewsAjaxController', 'deleteFeed', $params);
+ }
+);
+
+$this->create('news_ajax_movefeedtofolder', '/ajax/movefeedtofolder')->action(
+ function($params){
+ callAjaxController('NewsAjaxController', 'moveFeedToFolder', $params);
+ }
+);
+
+$this->create('news_ajax_updatefeed', '/ajax/updatefeed')->action(
+ function($params){
+ callAjaxController('NewsAjaxController', 'updateFeed', $params);
+ }
+);
+
+$this->create('news_ajax_createfeed', '/ajax/createfeed')->action(
+ function($params){
+ callAjaxController('NewsAjaxController', 'createFeed', $params);
+ }
+);
+
+
+/**
+ * Items
+ */
+$this->create('news_ajax_setitemstatus', '/ajax/setitemstatus')->action(
+ function($params){
+ callAjaxController('NewsAjaxController', 'setItemStatus', $params);
+ }
+);
+
+$this->create('news_ajax_setallitemsread', '/ajax/setallitemsread')->action(
+ function($params){
+ callAjaxController('NewsAjaxController', 'setAllItemsRead', $params);
+ }
+);
+
+
+/**
+ * Import stuff
+ */
+$this->create('news_ajax_importOPML', '/import')->action(
+ function($params){
+ callAjaxController('NewsAjaxController', 'uploadOPML', $params);
+ }
+);
diff --git a/appinfo/version b/appinfo/version
index a9212c01c..f5cce03c3 100644
--- a/appinfo/version
+++ b/appinfo/version
@@ -1,2 +1 @@
-7.6
-
+7.6 \ No newline at end of file