Skip to content

Commit

Permalink
added feature 'news'
Browse files Browse the repository at this point in the history
  • Loading branch information
Ivo committed Feb 26, 2014
1 parent 8fc2217 commit d6eb8b2
Show file tree
Hide file tree
Showing 15 changed files with 894 additions and 1 deletion.
20 changes: 19 additions & 1 deletion config/i18n/en.ini
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ messageValidationErrorAlphaNumeric = should be only alphabets and numbers.
menuDashboard = Dashboard
menuUser = Users
menuGroups = Groups
menuNews = News
menuReports = Reports
menuSettings = Settings
menuManageGroupCategory = Manage Group Category
Expand Down Expand Up @@ -147,4 +148,21 @@ labelPrivateChat = Private Chat
labelGroupChat = Group Chat
labelTargetName = User/Group Name
chatTextBoxPlaceHolder = Type your message here...
chatTextBoxSend = Send
chatTextBoxSend = Send

[news]
labelNews = News
btnNewNews = Add New Story
formNewsTitle = Story Title
formNewsBody = Story Content
formNewsCreated = Created
labelAddNews = New Story
labelEditNews = Edit Story
labelViewNews = Story Detail
formStoryTitle = Title
formStoryContent = Content
messageNewsAdded = New story created.
messageNewsChanged = Story updated.
messageConfirmDeleteStory = This story will be deleted, please confirm.
messageStoryDeleted = Story is deleted.
labelReadMore = Read more...
2 changes: 2 additions & 0 deletions etc/app.php
Original file line number Diff line number Diff line change
Expand Up @@ -82,12 +82,14 @@
$app->mount('/api/', new Spika\Controller\GroupController());
$app->mount('/api/', new Spika\Controller\CheckUniqueController());
$app->mount('/api/', new Spika\Controller\AsyncTaskController());
$app->mount('/api/', new Spika\Controller\WebViewController());
$app->mount('/page/', new Spika\Controller\PasswordResetController());
$app->mount('/page/', new Spika\Controller\Web\StaticPageController());

$app->mount('/', new Spika\Controller\Web\Installer\InstallerController());
$app->mount('/client', new Spika\Controller\Web\Client\LoginController());
$app->mount('/client/', new Spika\Controller\Web\Client\GroupController());
$app->mount('/client/', new Spika\Controller\Web\Client\NewsController());
$app->mount('/client/', new Spika\Controller\Web\Client\UserController());
$app->mount('/client/', new Spika\Controller\Web\Client\GroupCategoryController());
$app->mount('/client/', new Spika\Controller\Web\Client\EmoticonController());
Expand Down
12 changes: 12 additions & 0 deletions install/databaseschema.sql
Original file line number Diff line number Diff line change
Expand Up @@ -160,3 +160,15 @@ CREATE TABLE IF NOT EXISTS `user_group` (
KEY `user_id` (`user_id`,`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

DROP TABLE IF EXISTS `news`;
CREATE TABLE IF NOT EXISTS `news` (
`_id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`title` varchar(255) COLLATE utf8_bin NOT NULL,
`content` text COLLATE utf8_bin NOT NULL,
`created` int(11) NOT NULL,
`modified` int(11) NOT NULL,
PRIMARY KEY (`_id`),
KEY `user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

257 changes: 257 additions & 0 deletions src/Spika/Controller/Web/Client/NewsController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,257 @@
<?php

/*
* This file is part of the Silex framework.
*
* Copyright (c) 2013 clover studio official account
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace Spika\Controller\Web\Client;

use Silex\Application;
use Silex\ControllerProviderInterface;
use Symfony\Component\Debug\ExceptionHandler;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\ParameterBag;
use Doctrine\DBAL\DriverManager;
use Spika\Controller\Web\SpikaWebBaseController;
use Spika\Controller\FileController;
use Symfony\Component\HttpFoundation\Cookie;

class NewsController extends SpikaWebBaseController
{

public function connect(Application $app)
{
parent::connect($app);

$controllers = $app['controllers_factory'];
$self = $this;


//
// List/paging logics
//

$controllers->get('news/list', function (Request $request) use ($app,$self) {

$self->setVariables();

$count = $self->app['spikadb']->findStoriesCount();

$page = $request->get('page');
if(empty($page))
$page = 1;

$msg = $request->get('msg');
if(!empty($msg))
$self->setInfoAlert($self->language[$msg]);

$news = $self->app['spikadb']->findAllNews(($page-1)*ADMIN_LISTCOUNT,ADMIN_LISTCOUNT);

// convert timestamp to date
for($i = 0 ; $i < count($news) ; $i++){
$news[$i]['created'] = date("Y.m.d",$news[$i]['created']);
$news[$i]['modified'] = date("Y.m.d",$news[$i]['modified']);
}

return $self->render('client/newsList.twig', array(
'news' => $news,
'pager' => array(
'baseURL' => ROOT_URL . "/client/news/list?page=",
'pageCount' => ceil($count / ADMIN_LISTCOUNT) - 1,
'page' => $page,
),

));

})->before($app['adminBeforeTokenChecker']);

///**************************************************
//***************************************************

$controllers->get('news/add', function (Request $request) use ($app,$self) {

$self->setVariables();

return $self->render('client/newsForm.twig', array(
'mode' => 'new',
'formValues' => $self->getEmptyFormData(),
));

})->before($app['adminBeforeTokenChecker']);

//
// create new logics
//

$controllers->post('news/add', function (Request $request) use ($app,$self) {

$self->setVariables();

$validationError = false;

$formValues = $request->request->all();

//validation
if(empty($formValues['title']) || empty($formValues['content'])){
$self->setErrorAlert($self->language['messageValidationErrorRequired']);
$validationError = true;
}

if(!$validationError){

$result = $self->app['spikadb']->createStory(
$formValues['title'],
$formValues['content'],
$self->loginedUser['_id']
);

return $app->redirect(ROOT_URL . '/client/news/list?msg=messageNewsAdded');
}

return $self->render('client/newsForm.twig', array(
'mode' => 'new',
'formValues' => $formValues
));

})->before($app['adminBeforeTokenChecker']);

//
// Detail logics
//
$controllers->get('news/view/{id}', function (Request $request,$id) use ($app,$self) {

$self->setVariables();

$story = $self->app['spikadb']->findStoryById($id);

return $self->render('client/newsForm.twig', array(
'mode' => 'view',
'formValues' => $story
));

})->before($app['adminBeforeTokenChecker']);

//
// Edit logics
//

$controllers->get('news/edit/{id}', function (Request $request,$id) use ($app,$self) {

$self->setVariables();

$story = $self->app['spikadb']->findStoryById($id);
if($story['user_id'] != $self->loginedUser['_id'] && $self->loginedUser['_id'] != SUPPORT_USER_ID){
return $app->redirect(ROOT_URL . '/client/news/list?msg=messageNoPermission');
}

return $self->render('client/newsForm.twig', array(
'id' => $id,
'mode' => 'edit',
'formValues' => $story
));

})->before($app['adminBeforeTokenChecker']);

$controllers->post('news/edit/{id}', function (Request $request,$id) use ($app,$self) {

$self->setVariables();

$story = $self->app['spikadb']->findStoryById($id);
if($story['user_id'] != $self->loginedUser['_id'] && $self->loginedUser['_id'] != SUPPORT_USER_ID){
return $app->redirect(ROOT_URL . '/client/news/list?msg=messageNoPermission');
}

$formValues = $request->request->all();

$validationError = false;

//validation
if(empty($formValues['title']) || empty($formValues['content'])){
$self->setErrorAlert($self->language['messageValidationErrorRequired']);
$validationError = true;
}

if(!$validationError){

$self->app['spikadb']->updateStory(
$id,
$formValues['title'],
$formValues['content'],
$formValues['description']
);

return $app->redirect(ROOT_URL . '/client/news/list?msg=messageNewsChanged');

}

return $self->render('client/newsForm.twig', array(
'id' => $id,
'mode' => 'edit',
'formValues' => $story
));

})->before($app['adminBeforeTokenChecker']);

//
// Delete logics
//
$controllers->get('news/delete/{id}', function (Request $request,$id) use ($app,$self) {

$self->setVariables();

$story = $self->app['spikadb']->findStoryById($id);
if($story['user_id'] != $self->loginedUser['_id'] && $self->loginedUser['_id'] != SUPPORT_USER_ID){
return $app->redirect(ROOT_URL . '/client/news/list?msg=messageNoPermission');
}

$story = $self->app['spikadb']->findStoryById($id);

return $self->render('client/newsDelete.twig', array(
'id' => $id,
'mode' => 'delete',
'formValues' => $story
));

})->before($app['adminBeforeTokenChecker']);

$controllers->post('news/delete/{id}', function (Request $request,$id) use ($app,$self) {

$self->setVariables();

$story = $self->app['spikadb']->findStoryById($id);
if($story['user_id'] != $self->loginedUser['_id'] && $self->loginedUser['_id'] != SUPPORT_USER_ID){
return $app->redirect(ROOT_URL . '/client/news/list?msg=messageNoPermission');
}

$formValues = $request->request->all();

if(isset($formValues['submit_delete'])){
$self->app['spikadb']->deleteStory($id);
return $app->redirect(ROOT_URL . '/client/news/list?msg=messageStoryDeleted');
}else{
return $app->redirect(ROOT_URL . '/client/news/list');
}

})->before($app['adminBeforeTokenChecker']);

return $controllers;
}

public function getEmptyFormData(){
return array(
'_id'=>'',
'user_id'=>'',
'title'=>'',
'content'=>'',
'modified'=>'',
'created'=>'',
);
}

}
Loading

0 comments on commit d6eb8b2

Please sign in to comment.