Просмотр исходного кода

Move creation of categories in a new Controller

Category names are 255 chars max
Marien Fressinaud 11 лет назад
Родитель
Сommit
edb02c8fef

+ 64 - 0
app/Controllers/categoryController.php

@@ -0,0 +1,64 @@
+<?php
+
+/**
+ * Controller to handle actions relative to categories.
+ * User needs to be connected.
+ */
+class FreshRSS_category_Controller extends Minz_ActionController {
+	/**
+	 * This action is called before every other action in that class. It is
+	 * the common boiler plate for every action. It is triggered by the
+	 * underlying framework.
+	 *
+	 */
+	public function firstAction() {
+		if (!$this->view->loginOk) {
+			Minz_Error::error(
+				403,
+				array('error' => array(_t('access_denied')))
+			);
+		}
+
+		$catDAO = new FreshRSS_CategoryDAO();
+		$catDAO->checkDefault();
+	}
+
+	/**
+	 * This action creates a new category.
+	 *
+	 * URL parameter is:
+	 *   - new-category
+	 */
+	public function createAction() {
+		$catDAO = new FreshRSS_CategoryDAO();
+		$url_redirect = array('c' => 'configure', 'a' => 'categorize');
+
+		if (Minz_Request::isPost()) {
+			invalidateHttpCache();
+
+			$cat_name = Minz_Request::param('new-category');
+			if (!$cat_name) {
+				Minz_Request::bad(_t('category_no_name'), $url_redirect);
+			}
+
+			$cat = new FreshRSS_Category($cat_name);
+
+			if ($catDAO->searchByName($cat->name()) != null) {
+				Minz_Request::bad(_t('category_name_exists'), $url_redirect);
+			}
+
+			$values = array(
+				'id' => $cat->id(),
+				'name' => $cat->name(),
+			);
+
+			if ($catDAO->addCategory($values)) {
+				Minz_Request::good(_t('category_created', $cat->name()), $url_redirect);
+			} else {
+				Minz_Request::bad(_t('category_not_created'), $url_redirect);
+			}
+		}
+
+		Minz_Request::forward($url_redirect, true);
+	}
+}

+ 0 - 12
app/Controllers/configureController.php

@@ -45,7 +45,6 @@ class FreshRSS_configure_Controller extends Minz_ActionController {
 		if (Minz_Request::isPost()) {
 			$cats = Minz_Request::param('categories', array());
 			$ids = Minz_Request::param('ids', array());
-			$newCat = trim(Minz_Request::param('new_category', ''));
 
 			foreach ($cats as $key => $name) {
 				if (strlen($name) > 0) {
@@ -64,17 +63,6 @@ class FreshRSS_configure_Controller extends Minz_ActionController {
 				}
 			}
 
-			if ($newCat != '') {
-				$cat = new FreshRSS_Category($newCat);
-				$values = array(
-					'id' => $cat->id(),
-					'name' => $cat->name(),
-				);
-
-				if ($catDAO->searchByName($newCat) == null) {
-					$catDAO->addCategory($values);
-				}
-			}
 			invalidateHttpCache();
 
 			Minz_Request::good(_t('categories_updated'),

+ 1 - 1
app/Models/Category.php

@@ -61,7 +61,7 @@ class FreshRSS_Category extends Minz_Model {
 		$this->id = $value;
 	}
 	public function _name ($value) {
-		$this->name = $value;
+		$this->name = substr(trim($value), 0, 255);
 	}
 	public function _feeds ($values) {
 		if (!is_array ($values)) {

+ 1 - 1
app/views/configure/categorize.phtml

@@ -7,7 +7,7 @@
 		<div class="box-title"><label for="new-category"><?php echo _t('add_category'); ?></label></div>
 
 		<div class="box-content">
-			<form action="" methos="post">
+			<form action="<?php echo _url('category', 'create'); ?>" method="post">
 				<input type="text" id="new-category" name="new-category" placeholder="<?php echo _t('new_category'); ?>" />
 				<input type="submit" value="<?php echo _t('submit'); ?>" />
 			</form>