Commit 4f9dfeb5 authored by Gunasekaran Venugopal's avatar Gunasekaran Venugopal

Initial commit

parents

Too many changes to show.

To preserve performance only 1000 of 1000+ files are displayed.
Requirements:
=============
php 5.4 (no higher / lower version accepted)
symfony 1.4
mysql 5.7.27
How to setup
------------
PLEASE FIND DATABASE AND OTHER HELP DOCS IN jobeet/documents directory
1. Configure php 5.4 (Though the application still run even in php 7.2, you may face errors while using command line tools used)
2. place "jobeet" in document root
2.1 try the following commands if you have any permission issues
cd jobeet
php lib/vendor/symfony/data/bin/symfony - for linux
2.2 still facing permission issues, try to have 755 for directories and 644 for all the files and apply 777 to jobeet/cache directory
3. configure virtual host and map jobeet directory (domain shoud point to web/index.php)
4. import the data from jobeet.sql
5. check db credentials (config/databases.yml)
6. check mailer credentials (apps/backend/config/factories.yml)
7. run jobeet.in or jobeet.in/frontend_dev.php in browser
App Details:
------------
[ Backend Application ]
url:
http://jobeet.in/backend_dev.php/
login:
username: admin
password: Admin123
mail_test:
http://jobeet.in/backend_dev.php/send_mail
Note:
Search not work, requires zend search integration so left it as it involves additional timing. But you can look at here, if you are going to integrate
https://symfony.com/legacy/doc/jobeet/1_4/en/17?orm=Propel
[ Frontend Application ]
url:
http://jobeet.in/frontend_dev.php
This source diff could not be displayed because it is too large. You can view the blob instead.
# You can find more information about this file on the symfony website:
# http://www.symfony-project.org/reference/1_4/en/11-App
# default values
#all:
<?php
class backendConfiguration extends sfApplicationConfiguration
{
public function configure()
{
}
}
# You can find more information about this file on the symfony website:
# http://www.symfony-project.org/reference/1_4/en/09-Cache
default:
enabled: false
with_layout: false
lifetime: 86400
# You can find more information about this file on the symfony website:
# http://www.symfony-project.org/reference/1_4/en/05-Factories
prod:
logger:
class: sfNoLogger
param:
level: err
loggers: ~
test:
storage:
class: sfSessionTestStorage
param:
session_path: %SF_TEST_CACHE_DIR%/sessions
response:
class: sfWebResponse
param:
send_http_headers: false
mailer:
param:
delivery_strategy: none
dev:
mailer:
param:
delivery_strategy: realtime
all:
routing:
class: sfPatternRouting
param:
generate_shortest_url: true
extra_parameters_as_query_string: true
view_cache_manager:
class: sfViewCacheManager
param:
cache_key_use_vary_headers: true
cache_key_use_host_name: true
mailer:
class: sfMailer
param:
delivery_strategy: realtime
#logging: %SF_LOGGING_ENABLED%
#charset: %SF_CHARSET%
transport:
class: Swift_SmtpTransport
param:
host: smtp.sendgrid.net
port: 587
encryption: ~
username: rhodes_smtp
password: Ma1l5erver
\ No newline at end of file
# You can find more information about this file on the symfony website:
# http://www.symfony-project.org/reference/1_4/en/12-Filters
rendering: ~
security: ~
# insert your own filters here
cache: ~
execution: ~
jobeet_category:
class: sfPropelRouteCollection
options:
model: JobeetCategory
module: category
prefix_path: /category
column: id
with_wildcard_routes: true
jobeet_job:
class: sfPropelRouteCollection
options:
model: JobeetJob
module: job
prefix_path: /job
column: id
with_wildcard_routes: true
# You can find more information about this file on the symfony website:
# http://www.symfony-project.org/reference/1_4/en/10-Routing
# default rules
homepage:
url: /
param: { module: job, action: index }
send_mail:
url: /send_mail
param: { module: job, action sendMail }
# generic rules
# please, remove them by adding more specific rules
default_index:
url: /:module
param: { action: index }
default:
url: /:module/:action/*
# You can find more information about this file on the symfony website:
# http://www.symfony-project.org/reference/1_4/en/08-Security
default:
is_secure: on
# You can find more information about this file on the symfony website:
# http://www.symfony-project.org/reference/1_4/en/04-Settings
prod:
.settings:
no_script_name: false
logging_enabled: false
dev:
.settings:
error_reporting: <?php echo (E_ALL | E_STRICT)."\n" ?>
web_debug: true
cache: false
no_script_name: false
etag: false
test:
.settings:
error_reporting: <?php echo ((E_ALL | E_STRICT) ^ E_NOTICE)."\n" ?>
cache: false
web_debug: false
no_script_name: false
etag: false
all:
.settings:
# Form security secret (CSRF protection)
csrf_secret: b31e5cdc80fb18c2c9d63673e473adc36c9f2df0
# Output escaping settings
escaping_strategy: true
escaping_method: ESC_SPECIALCHARS
# Enable the database manager
use_database: true
enabled_modules: [ default, sfGuardAuth]
#enabled_modules: [ default, sfGuardAuth, sfGuardGroup, sfGuardUser, sfGuardPermission ]
login_module: sfGuardAuth
login_action: signin
\ No newline at end of file
# You can find more information about this file on the symfony website:
# http://www.symfony-project.org/reference/1_4/en/13-View
default:
http_metas:
content-type: text/html
metas:
#title: symfony project
#description: symfony project
#keywords: symfony, project
#language: en
#robots: index, follow
stylesheets: [main.css]
javascripts: []
has_layout: true
layout: layout
<?php
class myUser extends sfGuardSecurityUser
{
}
<?php
require_once dirname(__FILE__).'/../lib/categoryGeneratorConfiguration.class.php';
require_once dirname(__FILE__).'/../lib/categoryGeneratorHelper.class.php';
/**
* category actions.
*
* @package jobeet
* @subpackage category
* @author Your name here
* @version SVN: $Id: actions.class.php 12474 2008-10-31 10:41:27Z fabien $
*/
class categoryActions extends autoCategoryActions
{
public function executeBatchExtend(sfWebRequest $request)
{
$ids = $request->getParameter('ids');
$jobs = JobeetJobPeer::retrieveByPks($ids);
foreach ($jobs as $job)
{
$job->extend(true);
}
$this->getUser()->setFlash('notice', 'The selected jobs have been extended successfully.');
$this->redirect('jobeet_job');
}
}
generator:
class: sfPropelGenerator
param:
model_class: JobeetCategory
theme: admin
non_verbose_templates: true
with_show: false
singular: JobeetCategory
plural: JobeetCategorys
route_prefix: jobeet_category
with_propel_route: 1
actions_base_class: sfActions
config:
actions: ~
fields: ~
list:
batch_actions:
_delete: ~
extend: ~
object_actions: {}
filter: ~
form: ~
edit: ~
new: ~
<?php
/**
* category module configuration.
*
* @package jobeet
* @subpackage category
* @author Your name here
* @version SVN: $Id: configuration.php 12474 2008-10-31 10:41:27Z fabien $
*/
class categoryGeneratorConfiguration extends BaseCategoryGeneratorConfiguration
{
}
<?php
/**
* category module helper.
*
* @package jobeet
* @subpackage category
* @author Your name here
* @version SVN: $Id: helper.php 12474 2008-10-31 10:41:27Z fabien $
*/
class categoryGeneratorHelper extends BaseCategoryGeneratorHelper
{
}
<?php
require_once dirname(__FILE__).'/../lib/jobGeneratorConfiguration.class.php';
require_once dirname(__FILE__).'/../lib/jobGeneratorHelper.class.php';
/**
* job actions.
*
* @package jobeet
* @subpackage job
* @author Your name here
* @version SVN: $Id: actions.class.php 12474 2008-10-31 10:41:27Z fabien $
*/
class jobActions extends autoJobActions
{
public function executeListExtend(sfWebRequest $request)
{
$job = $this->getRoute()->getObject();
$job->extend(true);
$this->getUser()->setFlash('notice', 'The selected jobs have been extended successfully.');
$this->redirect('jobeet_job');
}
public function executeListDeleteNeverActivated(sfWebRequest $request)
{
$nb = JobeetJobPeer::cleanup(60);
if ($nb)
{
$this->getUser()->setFlash('notice', sprintf('%d never activated jobs have been deleted successfully.', $nb));
}
else
{
$this->getUser()->setFlash('notice', 'No job to delete.');
}
$this->redirect('jobeet_job');
}
public function executeSendMail(){
/*
* Both type messages will work, just uncomment any type and run
*/
#TYPE 1
$message = $this->getMailer()->compose(
array('gunasekaran.venugopal@intergy.com.au' => 'Jobeet Bot'),
'gunasekaran.venugopal@intergy.com.au',
'Jobeet affiliate token',
"
Your Jobeet affiliate account has been activated.
Your token is XYZ.
The Jobeet Bot.
"
);
//dd($this->getMailer()->send($message));
$this->getMailer()->send($message);
#TYPE 2
/*
$message = Swift_Message::newInstance()
->setFrom('gunasekaran.venugopal@intergy.com.au')
->setTo('gunasekaran.venugopal@intergy.com.au')
->setSubject('subject test')
->setBody('body test')
->setContentType('text/html');
dd($this->getMailer()->send($message));
*/
}
}
generator:
class: sfPropelGenerator
param:
model_class: JobeetJob
theme: admin
non_verbose_templates: true
with_show: false
singular: JobeetJob
plural: JobeetJobs
route_prefix: jobeet_job
with_propel_route: 1
actions_base_class: sfActions
config:
actions: ~
fields: ~
list:
title: Job Management
layout: stacked
display: [company, position, location, url, is_activated, email]
params: |
%%is_activated%% <small>%%jobeet_category%%</small> - %%company%%
(<em>%%email%%</em>) is looking for a %%=position%% (%%location%%)
sort: [expires_at, desc]
max_per_page: 10
object_actions:
extend: ~
_edit: ~
_delete: ~
actions:
deleteNeverActivated: { label: Delete never activated jobs }
peer_method: doSelectJoinJobeetCategory
filter: ~
form:
class: BackendJobeetJobForm
display:
Content: [category_id, type, company, logo, url, position, location, description, how_to_apply, is_public, email]
Admin: [_generated_token, is_activated, expires_at]
edit: ~
new: ~
<?php
/**
* job module configuration.
*
* @package jobeet
* @subpackage job
* @author Your name here
* @version SVN: $Id: configuration.php 12474 2008-10-31 10:41:27Z fabien $
*/
class jobGeneratorConfiguration extends BaseJobGeneratorConfiguration
{
}
<?php
/**
* job module helper.
*
* @package jobeet
* @subpackage job
* @author Your name here
* @version SVN: $Id: helper.php 12474 2008-10-31 10:41:27Z fabien $
*/
class jobGeneratorHelper extends BaseJobGeneratorHelper
{
}
<div class="sf_admin_form_row">
<label>Token</label>
<?php echo $form->getObject()->getToken() ?>
</div>
\ No newline at end of file
<?php
echo("your mail has been sent!");
?>
\ No newline at end of file
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Jobeet Admin Interface</title>
<link rel="shortcut icon" href="/favicon.ico" />
<?php use_stylesheet('admin.css') ?>
<?php include_javascripts() ?>
<?php include_stylesheets() ?>
</head>
<body>
<div id="container">
<div id="header">
<h1>
<a href="<?php echo url_for('homepage') ?>">
<img src="/legacy/images/logo.jpg" alt="Jobeet Job Board" />
</a>
</h1>
</div>
<?php if ($sf_user->isAuthenticated()): ?>
<div id="menu">
<ul>
<li>
<?php echo link_to('Jobs', 'jobeet_job') ?>
</li>
<li>
<?php echo link_to('Categories', 'jobeet_category') ?>
</li>
<li>
<?php echo link_to('Logout', 'sf_guard_signout') ?>
</li>
</ul>
</div>
<?php endif ?>
<div id="content">
<?php echo $sf_content ?>
</div>
<div id="footer">
<img src="/legacy/images/jobeet-mini.png" />
powered by <a href="/">
<img src="/legacy/images/symfony.gif" alt="symfony framework" /></a>
</div>
</div>
</body>
</html>
\ No newline at end of file
# You can find more information about this file on the symfony website:
# http://www.symfony-project.org/reference/1_4/en/11-App
# default values
all:
max_jobs: 10
max_jobs_on_homepage: 10
max_jobs_on_category: 10
\ No newline at end of file
# You can find more information about this file on the symfony website:
# http://www.symfony-project.org/reference/1_4/en/09-Cache
default:
enabled: false
with_layout: false
lifetime: 86400
# You can find more information about this file on the symfony website:
# http://www.symfony-project.org/reference/1_4/en/05-Factories
prod:
logger:
class: sfNoLogger
param:
level: err
loggers: ~
test:
storage:
class: sfSessionTestStorage
param:
session_path: %SF_TEST_CACHE_DIR%/sessions
response:
class: sfWebResponse
param:
send_http_headers: false
mailer:
param:
delivery_strategy: none
dev:
mailer:
param:
delivery_strategy: none
all:
routing:
class: sfPatternRouting
param:
generate_shortest_url: true
extra_parameters_as_query_string: true
view_cache_manager:
class: sfViewCacheManager
param:
cache_key_use_vary_headers: true
cache_key_use_host_name: true
# You can find more information about this file on the symfony website:
# http://www.symfony-project.org/reference/1_4/en/12-Filters
rendering: ~
security: ~
# insert your own filters here
cache: ~
execution: ~
<?php
class frontendConfiguration extends sfApplicationConfiguration
{
public function configure()
{
// parent::initialize(); // load symfony autoloading first
// // insert your own autoloading callables here
// spl_autoload_register(array('customUtil'));
}
}
# You can find more information about this file on the symfony website:
# http://www.symfony-project.org/reference/1_4/en/10-Routing
job:
class: sfPropelRouteCollection
options:
model: JobeetJob
column: token
object_actions: { publish: put }
requirements:
token: \w+
job_show_user:
url: /job/:company_slug/:location_slug/:id/:position_slug
class: sfPropelRoute
options: { model: JobeetJob, type: object, method_for_criteria: doSelectActive }
param: { module: job, action: show }
requirements:
id: \d+
sf_method: [get]
category:
url: /category/:c_slug
class: sfPropelRoute
options: { model: JobeetCategory, type: object }
param: { module: category, action: show }
# default rules
homepage:
url: /
param: { module: job, action: index }
# generic rules
# please, remove them by adding more specific rules
default_index:
url: /:module
param: { action: index }
default:
url: /:module/:action/*
# You can find more information about this file on the symfony website:
# http://www.symfony-project.org/reference/1_4/en/08-Security
default:
is_secure: false
# You can find more information about this file on the symfony website:
# http://www.symfony-project.org/reference/1_4/en/04-Settings
prod:
.settings:
no_script_name: true
logging_enabled: false
dev:
.settings:
error_reporting: <?php echo (E_ALL | E_STRICT)."\n" ?>
web_debug: true
cache: false
no_script_name: false
etag: false
test:
.settings:
error_reporting: <?php echo ((E_ALL | E_STRICT) ^ E_NOTICE)."\n" ?>
cache: false
web_debug: false
no_script_name: false
etag: false
all:
.settings:
# Form security secret (CSRF protection)
csrf_secret: 9a934c1920ad677acac7d7fa05f8fc9854b115c9
# Output escaping settings
escaping_strategy: true
escaping_method: ESC_SPECIALCHARS
# Enable the database manager
use_database: true
# You can find more information about this file on the symfony website:
# http://www.symfony-project.org/reference/1_4/en/13-View
default:
http_metas:
content-type: text/html
metas:
#title: symfony project
#description: symfony project
#keywords: symfony, project
#language: en
#robots: index, follow
stylesheets: [main.css]
javascripts: []
has_layout: true
layout: layout
<?php
function test(){
return 'Hello!!';
}
?>
<?php
class myUser extends sfBasicSecurityUser
{
public function addJobHistory(JobeetJob $job){
$jobIds = $this->getAttribute('jobHistory', []);
if(!in_array($job->getId(), $jobIds)){
array_unshift($jobIds, $job->getId());
$this->setAttribute('jobHistory', array_slice($jobIds, 0,3));
}
}
public function getJobHistory(){
$recentlyViewedJobs = [];
$jobIds = $this->getAttribute('jobHistory', []);
if(count($jobIds)){
$recentlyViewedJobs = JobeetJobPeer::retrieveByPKs($jobIds);
}
return $recentlyViewedJobs;
}
public function resetJobHistory(){
$this->getAttributeHolder()->remove('jobHistory');
}
}
<?php
class CustomUtil{
static public function sampleFunction(){
return "World!";
}
}
?>
\ No newline at end of file
<?php
/**
* category actions.
*
* @package jobeet
* @subpackage category
* @author Your name here
* @version SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
*/
class categoryActions extends sfActions
{
/**
* Executes index action
*
* @param sfRequest $request A request object
*/
public function executeIndex(sfWebRequest $request)
{
$this->forward('default', 'module');
}
public function executeShow(sfWebRequest $request)
{
$this->category = $this->getRoute()->getObject();
$this->pager = new sfPropelPager(
'JobeetJob',
sfConfig::get('app_max_jobs_on_category')
);
$this->pager->setCriteria($this->category->getActiveJobsCriteria());
$this->pager->setPage($request->getParameter('page', 1));
$this->pager->init();
}
}
<!-- apps/frontend/modules/category/templates/showSuccess.php -->
<?php use_stylesheet('jobs.css') ?>
<?php slot('title', sprintf('Jobs in the %s category', $category->getName())) ?>
<div class="category">
<div class="feed">
<a href="">Feed</a>
</div>
<h1><?php echo $category ?></h1>
</div>
<?php include_partial('job/list', array('jobs' => $pager->getResults())) ?>
<?php if ($pager->haveToPaginate()): ?>
<div class="pagination">
<a href="<?php echo url_for('category', $category) ?>?page=1">
<img src="/legacy/images/first.png" alt="First page" title="First page" />
</a>
<a href="<?php echo url_for('category', $category) ?>?page=<?php echo $pager->getPreviousPage() ?>">
<img src="/legacy/images/previous.png" alt="Previous page" title="Previous page" />
</a>
<?php foreach ($pager->getLinks() as $page): ?>
<?php if ($page == $pager->getPage()): ?>
<?php echo $page ?>
<?php else: ?>
<a href="<?php echo url_for('category', $category) ?>?page=<?php echo $page ?>"><?php echo $page ?></a>
<?php endif; ?>
<?php endforeach; ?>
<a href="<?php echo url_for('category', $category) ?>?page=<?php echo $pager->getNextPage() ?>">
<img src="/legacy/images/next.png" alt="Next page" title="Next page" />
</a>
<a href="<?php echo url_for('category', $category) ?>?page=<?php echo $pager->getLastPage() ?>">
<img src="/legacy/images/last.png" alt="Last page" title="Last page" />
</a>
</div>
<?php endif; ?>
<div class="pagination_desc">
<strong><?php echo count($pager) ?></strong> jobs in this category
<?php if ($pager->haveToPaginate()): ?>
- page <strong><?php echo $pager->getPage() ?>/<?php echo $pager->getLastPage() ?></strong>
<?php endif; ?>
</div>
\ No newline at end of file
<?php
/**
* job actions.
*
* @package jobeet
* @subpackage job
* @author Your name here
*/
#require_once '/var/www/html/php5-4/jobeet/lib/components/VarDumper/VarDumper.php';
use Symfony\Component\VarDumper\VarDumper;
class jobActions extends sfActions
{
public function executeIndex(sfWebRequest $request)
{
#$this->JobeetJobs = JobeetJobPeer::doSelect(new Criteria());
#$this->JobeetJobs = JobeetJobPeer::getActiveJobs();
$this->categories = JobeetCategoryPeer::getWithJobs();
}
public function executeShow(sfWebRequest $request)
{
#$this->job = JobeetJobPeer::retrieveByPk($request->getParameter('id'));
$this->job = $this->getRoute()->getObject();
$this->getUser()->addJobHistory($this->job);
$this->forward404Unless($this->job);
}
public function executeNew(sfWebRequest $request)
{
$this->form = new JobeetJobForm();
}
public function executeCreate(sfWebRequest $request)
{
$this->forward404Unless($request->isMethod(sfRequest::POST));
$this->form = new JobeetJobForm();
$this->processForm($request, $this->form);
$this->setTemplate('new');
}
public function executeEdit(sfWebRequest $request)
{
/*
$this->forward404Unless($JobeetJob = JobeetJobPeer::retrieveByPk($request->getParameter('id')), sprintf('Object JobeetJob does not exist (%s).', $request->getParameter('id')));
$this->form = new JobeetJobForm($JobeetJob);
*/
$this->form = new JobeetJobForm($this->getRoute()->getObject());
}
public function executeUpdate(sfWebRequest $request)
{
$this->forward404Unless($request->isMethod(sfRequest::POST) || $request->isMethod(sfRequest::PUT));
/*
$this->forward404Unless($JobeetJob = JobeetJobPeer::retrieveByPk($request->getParameter('id')), sprintf('Object JobeetJob does not exist (%s).', $request->getParameter('id')));
$this->form = new JobeetJobForm($JobeetJob);
*/
$this->form = new JobeetJobForm($this->getRoute()->getObject());
$this->processForm($request, $this->form);
$this->setTemplate('edit');
}
public function executeDelete(sfWebRequest $request)
{
$request->checkCSRFProtection();
//$this->forward404Unless($JobeetJob = JobeetJobPeer::retrieveByPk($request->getParameter('id')), sprintf('Object JobeetJob does not exist (%s).', $request->getParameter('id')));
$JobeetJob = $this->getRoute()->getObject();
$JobeetJob->delete();
$this->redirect('job/index');
}
public function executePublish(sfWebRequest $request){
$request->checkCSRFProtection();
$JobeetJob = $this->getRoute()->getObject();
$JobeetJob->publish();
$this->getUser()->setFlash('notice', sprintf('Your job is now online for %s days.', sfConfig::get('app_active_days')));
$this->redirect('job_show_user', $JobeetJob);
}
protected function processForm(sfWebRequest $request, sfForm $form)
{
$form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
if ($form->isValid())
{
$JobeetJob = $form->save();
//$this->redirect('job/edit?id='.$JobeetJob->getId());
$this->redirect('job_show', $JobeetJob);
}
}
}
indexSuccess:
stylesheets: [jobs.css]
showSuccess:
stylesheets: [job.css]
\ No newline at end of file
<div id="job_actions">
<h3>Admin</h3>
<ul>
<?php if (!$job->getIsActivated()): ?>
<li><?php echo link_to('Edit', 'job_edit', $job) ?></li>
<li><?php echo link_to('Publish', 'job_publish', $job, ['method' => 'put']) ?></li>
<?php endif ?>
<li><?php echo link_to('Delete', 'job_delete', $job, array('method' => 'delete', 'confirm' => 'Are you sure?')) ?></li>
<?php if ($job->getIsActivated()): ?>
<li<?php $job->expiresSoon() and print ' class="expires_soon"' ?>>
<?php if ($job->isExpired()): ?>
Expired
<?php else: ?>
Expires in <strong><?php echo $job->getDaysBeforeExpires() ?></strong> days
<?php endif ?>
<?php if ($job->expiresSoon()): ?>
- <a href="">Extend</a> for another <?php echo sfConfig::get('app_active_days') ?> days
<?php endif ?>
</li>
<?php else: ?>
<li>
[Bookmark this <?php echo link_to('URL', 'job_show', $job, true) ?> to manage this job in the future.]
</li>
<?php endif ?>
</ul>
</div>
\ No newline at end of file
<?php use_stylesheets_for_form($form) ?>
<?php use_javascripts_for_form($form) ?>
<?php echo form_tag_for($form, '@job') ?>
<table id="job_form">
<tfoot>
<tr>
<td colspan="2">
<input type="submit" value="Preview your job" />
</td>
</tr>
</tfoot>
<tbody>
<?php echo $form ?>
</tbody>
</table>
</form>
\ No newline at end of file
<table class="jobs">
<?php foreach ($jobs as $i => $job): ?>
<tr class="<?php echo fmod($i, 2) ? 'even' : 'odd' ?>">
<td class="location">
<?php echo $job->getLocation() ?>
</td>
<td class="position">
<?php
//echo link_to($job->getPosition(), 'job_show_user', $job)
echo link_to($job->getPosition(), 'job_show', $job);
?>
</td>
<td class="company">
<?php echo $job->getCompany() ?>
</td>
</tr>
<?php endforeach; ?>
</table>
\ No newline at end of file
<h1>Edit JobeetJob</h1>
<?php include_partial('form', array('form' => $form)) ?>
<div id="jobs">
<?php foreach ($categories as $category): ?>
<div class="category_<?php echo Jobeet::slugify($category->getName()) ?>">
<div class="category">
<div class="feed">
<a href="">Feed</a>
</div>
<h1><?php echo link_to($category, 'category', $category) ?></h1>
</div>
<?php include_partial('job/list', array('jobs' => $category->getJobs())); ?>
<?php
if (($count = $category->countActiveJobs() - sfConfig::get('app_max_jobs_on_homepage')) > 0): ?>
<div class="more_jobs">
and <?php echo link_to($count, 'category', $category) ?>
more...
</div>
<?php endif; ?>
</div>
<?php endforeach; ?>
</div>
\ No newline at end of file
<h1>New JobeetJob</h1>
<?php include_partial('form', array('form' => $form)) ?>
<?php use_stylesheet('job.css') ?>
<?php use_helper('Text') ?>
<?php slot('title', 'Jobeet - Job specific title'); ?>
<?php
if($sf_request->getParameter('token') == $job->getToken()){
include_partial('job/admin', array('job' => $job));
}
?>
<div id="job">
<h1><?php echo $job->getCompany() ?></h1>
<h2><?php echo $job->getLocation() ?></h2>
<h3>
<?php echo $job->getPosition() ?>
<small> - <?php echo $job->getType() ?></small>
</h3>
<?php if ($job->getLogo()): ?>
<div class="logo">
<a href="<?php echo $job->getUrl() ?>">
<img src="/uploads/jobs/<?php echo $job->getLogo() ?>"
alt="<?php echo $job->getCompany() ?> logo" width=200 height = 100 />
</a>
</div>
<?php endif ?>
<div class="description">
<?php echo simple_format_text($job->getDescription()) ?>
</div>
<h4>How to apply?</h4>
<p class="how_to_apply"><?php echo $job->getHowToApply() ?></p>
<div class="meta">
<small>posted on <?php echo $job->getCreatedAt('m/d/Y') ?></small>
</div>
<div style="padding: 20px 0">
<a href="<?php echo url_for('job_edit', $job); ?>">
Edit
</a>
</div>
</div>
\ No newline at end of file
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title><?php include_slot('title', 'Jobeet - Your best job board'); ?></title>
<link rel="shortcut icon" href="/favicon.ico" />
<?php include_javascripts() ?>
<?php include_stylesheets() ?>
</head>
<body>
<div id="container">
<div id="header">
<div class="content">
<h1><a href="<?php echo url_for('@homepage') ?>">
<img src="/legacy/images/logo.jpg" alt="Jobeet Job Board" />
</a></h1>
<div id="sub_header">
<div class="post">
<h2>Ask for people</h2>
<div>
<a href="<?php echo url_for('job/index') ?>">Post a Job</a>
</div>
</div>
<div class="search">
<h2>Ask for a job</h2>
<form action="" method="get">
<input type="text" name="keywords"
id="search_keywords" />
<input type="submit" value="search" />
<div class="help">
Enter some keywords (city, country, position, ...)
</div>
</form>
</div>
</div>
</div>
</div>
<?php if($jobHistory = $sf_user->getJobHistory()): ?>
<div id="job_history">
Recent viewed jobs:
<ul>
<?php foreach ($jobHistory as $job): ?>
<li>
<?php echo link_to($job->getPosition().' - '.$job->getCompany(), 'job_show_user', $job) ?>
</li>
<?php endforeach ?>
</ul>
</div>
<?php endif ?>
<div id="content">
<?php if ($sf_user->hasFlash('notice')): ?>
<div class="flash_notice">
<?php echo $sf_user->getFlash('notice') ?>
</div>
<?php endif ?>
<?php if ($sf_user->hasFlash('error')): ?>
<div class="flash_error">
<?php echo $sf_user->getFlash('error') ?>
</div>
<?php endif ?>
<div class="content">
<div>
<a href="<?php echo url_for('job_new') ?>">Post a Job</a>
</div>
<?php echo $sf_content ?>
</div>
</div>
<div id="footer">
<div class="content">
<span class="symfony">
<img src="/legacy/images/jobeet-mini.png" />
powered by <a href="/">
<img src="/legacy/images/symfony.gif" alt="symfony framework" />
</a>
</span>
<ul>
<li><a href="">About Jobeet</a></li>
<li class="feed"><a href="">Full feed</a></li>
<li><a href="">Jobeet API</a></li>
<li class="last"><a href="">Affiliates</a></li>
</ul>
</div>
</div>
</div>
</body>
</html>
\ No newline at end of file
<?php
// auto-generated by sfDefineEnvironmentConfigHandler
// date: 2019/10/11 07:58:10
sfConfig::add(array(
'app_max_jobs' => 10,
'app_max_jobs_on_homepage' => 10,
'app_max_jobs_on_category' => 10,
));
This diff is collapsed.
<?php
// auto-generated by sfRootConfigHandler
// date: 2019/10/11 07:58:10
$this->handlers['config/autoload.yml'] = new sfAutoloadConfigHandler();
$this->handlers['config/databases.yml'] = new sfDatabaseConfigHandler();
$this->handlers['config/settings.yml'] = new sfDefineEnvironmentConfigHandler(array (
'prefix' => 'sf_',
));
$this->handlers['config/app.yml'] = new sfDefineEnvironmentConfigHandler(array (
'prefix' => 'app_',
));
$this->handlers['config/factories.yml'] = new sfFactoryConfigHandler();
$this->handlers['config/core_compile.yml'] = new sfCompileConfigHandler();
$this->handlers['config/filters.yml'] = new sfFilterConfigHandler();
$this->handlers['config/routing.yml'] = new sfRoutingConfigHandler();
$this->handlers['modules/*/config/generator.yml'] = new sfGeneratorConfigHandler();
$this->handlers['modules/*/config/view.yml'] = new sfViewConfigHandler();
$this->handlers['modules/*/config/security.yml'] = new sfSecurityConfigHandler();
$this->handlers['modules/*/config/cache.yml'] = new sfCacheConfigHandler();
$this->handlers['modules/*/config/module.yml'] = new sfDefineEnvironmentConfigHandler(array (
'prefix' => 'mod_',
'module' => true,
));
<?php
// auto-generated by sfDatabaseConfigHandler
// date: 2019/10/11 07:58:10
return array(
'propel' => new sfPropelDatabase(array (
'classname' => 'DebugPDO',
'dsn' => 'mysql:host=localhost;dbname=jobeet',
'username' => 'root',
'password' => 'root',
'encoding' => 'utf8',
'persistent' => true,
'pooling' => true,
'debug' =>
array (
'realmemoryusage' => true,
'details' =>
array (
'time' =>
array (
'enabled' => true,
),
'slow' =>
array (
'enabled' => true,
'threshold' => 0.10000000000000001,
),
'mem' =>
array (
'enabled' => true,
),
'mempeak' =>
array (
'enabled' => true,
),
'memdelta' =>
array (
'enabled' => true,
),
),
),
'name' => 'propel',
)),);
<?php
// auto-generated by sfFactoryConfigHandler
// date: 2019/10/11 07:58:10
$class = sfConfig::get('sf_factory_logger', 'sfAggregateLogger');
$this->factories['logger'] = new $class($this->dispatcher, array_merge(array('auto_shutdown' => false), sfConfig::get('sf_factory_logger_parameters', array (
'level' => 'debug',
))));
$logger = new sfWebDebugLogger($this->dispatcher, array_merge(array('auto_shutdown' => false), array (
'level' => 'debug',
'xdebug_logging' => false,
'web_debug_class' => 'sfWebDebug',
)));
$this->factories['logger']->addLogger($logger);
$logger = new sfFileLogger($this->dispatcher, array_merge(array('auto_shutdown' => false), array (
'level' => 'debug',
'file' => '/var/www/html/php5-4/jobeet/log/backend_dev.log',
)));
$this->factories['logger']->addLogger($logger);
if (sfConfig::get('sf_i18n'))
{
$class = sfConfig::get('sf_factory_i18n', 'sfI18N');
$cache = new sfFileCache(array (
'automatic_cleaning_factor' => 0,
'cache_dir' => '/var/www/html/php5-4/jobeet/cache/backend/dev/i18n',
'lifetime' => 31556926,
'prefix' => '/var/www/html/php5-4/jobeet/apps/backend/i18n',
));
$this->factories['i18n'] = new $class($this->configuration, $cache, array (
'source' => 'XLIFF',
'debug' => false,
'untranslated_prefix' => '[T]',
'untranslated_suffix' => '[/T]',
));
sfWidgetFormSchemaFormatter::setTranslationCallable(array($this->factories['i18n'], '__'));
}
$class = sfConfig::get('sf_factory_controller', 'sfFrontWebController');
$this->factories['controller'] = new $class($this);
$class = sfConfig::get('sf_factory_request', 'sfWebRequest');
$this->factories['request'] = new $class($this->dispatcher, array(), array(), sfConfig::get('sf_factory_request_parameters', array (
'logging' => '1',
'path_info_array' => 'SERVER',
'path_info_key' => 'PATH_INFO',
'relative_url_root' => NULL,
'formats' =>
array (
'txt' => 'text/plain',
'js' =>
array (
0 => 'application/javascript',
1 => 'application/x-javascript',
2 => 'text/javascript',
),
'css' => 'text/css',
'json' =>
array (
0 => 'application/json',
1 => 'application/x-json',
),
'xml' =>
array (
0 => 'text/xml',
1 => 'application/xml',
2 => 'application/x-xml',
),
'rdf' => 'application/rdf+xml',
'atom' => 'application/atom+xml',
),
'no_script_name' => false,
)), sfConfig::get('sf_factory_request_attributes', array()));
$class = sfConfig::get('sf_factory_response', 'sfWebResponse');
$this->factories['response'] = new $class($this->dispatcher, sfConfig::get('sf_factory_response_parameters', array_merge(array('http_protocol' => isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : null), array (
'logging' => '1',
'charset' => 'utf-8',
'send_http_headers' => true,
))));
if ($this->factories['request'] instanceof sfWebRequest
&& $this->factories['response'] instanceof sfWebResponse
&& 'HEAD' == $this->factories['request']->getMethod())
{
$this->factories['response']->setHeaderOnly(true);
}
$class = sfConfig::get('sf_factory_routing', 'sfPatternRouting');
$cache = null;
$this->factories['routing'] = new $class($this->dispatcher, $cache, array_merge(array('auto_shutdown' => false, 'context' => $this->factories['request']->getRequestContext()), sfConfig::get('sf_factory_routing_parameters', array (
'load_configuration' => true,
'suffix' => '',
'default_module' => 'default',
'default_action' => 'index',
'debug' => '1',
'logging' => '1',
'generate_shortest_url' => true,
'extra_parameters_as_query_string' => true,
'cache' => NULL,
))));
if ($parameters = $this->factories['routing']->parse($this->factories['request']->getPathInfo()))
{
$this->factories['request']->addRequestParameters($parameters);
}
$class = sfConfig::get('sf_factory_storage', 'sfSessionStorage');
$this->factories['storage'] = new $class(array_merge(array(
'auto_shutdown' => false, 'session_id' => $this->getRequest()->getParameter('symfony'),
), sfConfig::get('sf_factory_storage_parameters', array (
'session_name' => 'symfony',
))));
$class = sfConfig::get('sf_factory_user', 'myUser');
$this->factories['user'] = new $class($this->dispatcher, $this->factories['storage'], array_merge(array('auto_shutdown' => false, 'culture' => $this->factories['request']->getParameter('sf_culture')), sfConfig::get('sf_factory_user_parameters', array (
'timeout' => 1800,
'logging' => '1',
'use_flash' => true,
'default_culture' => 'en',
))));
if (sfConfig::get('sf_cache'))
{
$class = sfConfig::get('sf_factory_view_cache', 'sfFileCache');
$cache = new $class(sfConfig::get('sf_factory_view_cache_parameters', array (
'automatic_cleaning_factor' => 0,
'cache_dir' => '/var/www/html/php5-4/jobeet/cache/backend/dev/template',
'lifetime' => 86400,
'prefix' => '/var/www/html/php5-4/jobeet/apps/backend/template',
)));
$this->factories['viewCacheManager'] = new sfViewCacheManager($this, $cache, array (
'cache_key_use_vary_headers' => true,
'cache_key_use_host_name' => true,
));
}
else
{
$this->factories['viewCacheManager'] = null;
}
require_once sfConfig::get('sf_symfony_lib_dir').'/vendor/swiftmailer/classes/Swift.php';
Swift::registerAutoload();
sfMailer::initialize();
$this->setMailerConfiguration(array_merge(array('class' => sfConfig::get('sf_factory_mailer', 'sfMailer')), sfConfig::get('sf_factory_mailer_parameters', array (
'logging' => '1',
'charset' => 'utf-8',
'delivery_strategy' => 'realtime',
'transport' =>
array (
'class' => 'Swift_SmtpTransport',
'param' =>
array (
'host' => 'smtp.sendgrid.net',
'port' => 587,
'encryption' => NULL,
'username' => 'rhodes_smtp',
'password' => 'Ma1l5erver',
),
),
))));
This diff is collapsed.
<?php
// auto-generated by sfDefineEnvironmentConfigHandler
// date: 2019/10/11 07:58:10
sfConfig::add(array(
'sf_error_404_module' => 'default',
'sf_error_404_action' => 'error404',
'sf_login_module' => 'sfGuardAuth',
'sf_login_action' => 'signin',
'sf_secure_module' => 'default',
'sf_secure_action' => 'secure',
'sf_module_disabled_module' => 'default',
'sf_module_disabled_action' => 'disabled',
'sf_use_database' => true,
'sf_i18n' => false,
'sf_compressed' => false,
'sf_check_lock' => false,
'sf_csrf_secret' => 'b31e5cdc80fb18c2c9d63673e473adc36c9f2df0',
'sf_escaping_strategy' => true,
'sf_escaping_method' => 'ESC_SPECIALCHARS',
'sf_no_script_name' => false,
'sf_cache' => false,
'sf_etag' => false,
'sf_web_debug' => true,
'sf_error_reporting' => 32767,
'sf_file_link_format' => NULL,
'sf_admin_web_dir' => '/sf/sf_admin',
'sf_web_debug_web_dir' => '/sf/sf_web_debug',
'sf_standard_helpers' => array (
0 => 'Partial',
1 => 'Cache',
),
'sf_enabled_modules' => array (
0 => 'default',
1 => 'sfGuardAuth',
),
'sf_charset' => 'utf-8',
'sf_logging_enabled' => true,
'sf_default_culture' => 'en',
));
<?php
// auto-generated by sfFilterConfigHandler
// date: 2019/10/11 09:30:08
list($class, $parameters) = (array) sfConfig::get('sf_rendering_filter', array('sfRenderingFilter', array (
)));
$filter = new $class(sfContext::getInstance(), $parameters);
$this->register($filter);
// does this action require security?
if ($actionInstance->isSecure())
{
list($class, $parameters) = (array) sfConfig::get('sf_security_filter', array('sfBasicSecurityFilter', array (
)));
$filter = new $class(sfContext::getInstance(), $parameters);
$this->register($filter);
}
list($class, $parameters) = (array) sfConfig::get('sf_execution_filter', array('sfExecutionFilter', array (
)));
$filter = new $class(sfContext::getInstance(), $parameters);
$this->register($filter);
<?php
// auto-generated by sfGeneratorConfigHandler
// date: 2019/10/11 09:30:08
require_once(sfConfig::get('sf_module_cache_dir').'/autoCategory/actions/actions.class.php');
<?php
// auto-generated by sfDefineEnvironmentConfigHandler
// date: 2019/10/11 09:30:08
sfConfig::add(array(
'mod_category_enabled' => true,
'mod_category_view_class' => 'sfPHP',
));
<?php
// auto-generated by sfSecurityConfigHandler
// date: 2019/10/11 09:30:08
$this->security = array (
'all' =>
array (
'is_secure' => 'on',
),
);
<?php
// auto-generated by sfViewConfigHandler
// date: 2019/10/11 09:30:08
$response = $this->context->getResponse();
$templateName = sfConfig::get('symfony.view.'.$this->moduleName.'_'.$this->actionName.'_template', $this->actionName);
$this->setTemplate($templateName.$this->viewName.$this->getExtension());
if (null !== $layout = sfConfig::get('symfony.view.'.$this->moduleName.'_'.$this->actionName.'_layout'))
{
$this->setDecoratorTemplate(false === $layout ? false : $layout.$this->getExtension());
}
else if (null === $this->getDecoratorTemplate() && !$this->context->getRequest()->isXmlHttpRequest())
{
$this->setDecoratorTemplate('' == 'layout' ? false : 'layout'.$this->getExtension());
}
$response->addHttpMeta('content-type', 'text/html', false);
$response->addStylesheet('main.css', '', array ());
<?php
// auto-generated by sfFilterConfigHandler
// date: 2019/10/11 07:58:10
list($class, $parameters) = (array) sfConfig::get('sf_rendering_filter', array('sfRenderingFilter', array (
)));
$filter = new $class(sfContext::getInstance(), $parameters);
$this->register($filter);
// does this action require security?
if ($actionInstance->isSecure())
{
list($class, $parameters) = (array) sfConfig::get('sf_security_filter', array('sfBasicSecurityFilter', array (
)));
$filter = new $class(sfContext::getInstance(), $parameters);
$this->register($filter);
}
list($class, $parameters) = (array) sfConfig::get('sf_execution_filter', array('sfExecutionFilter', array (
)));
$filter = new $class(sfContext::getInstance(), $parameters);
$this->register($filter);
<?php
// auto-generated by sfGeneratorConfigHandler
// date: 2019/10/11 07:58:10
require_once(sfConfig::get('sf_module_cache_dir').'/autoJob/actions/actions.class.php');
<?php
// auto-generated by sfDefineEnvironmentConfigHandler
// date: 2019/10/11 07:58:10
sfConfig::add(array(
'mod_job_enabled' => true,
'mod_job_view_class' => 'sfPHP',
));
<?php
// auto-generated by sfSecurityConfigHandler
// date: 2019/10/11 07:58:10
$this->security = array (
'all' =>
array (
'is_secure' => 'on',
),
);
<?php
// auto-generated by sfViewConfigHandler
// date: 2019/10/11 07:58:11
$response = $this->context->getResponse();
$templateName = sfConfig::get('symfony.view.'.$this->moduleName.'_'.$this->actionName.'_template', $this->actionName);
$this->setTemplate($templateName.$this->viewName.$this->getExtension());
if (null !== $layout = sfConfig::get('symfony.view.'.$this->moduleName.'_'.$this->actionName.'_layout'))
{
$this->setDecoratorTemplate(false === $layout ? false : $layout.$this->getExtension());
}
else if (null === $this->getDecoratorTemplate() && !$this->context->getRequest()->isXmlHttpRequest())
{
$this->setDecoratorTemplate('' == 'layout' ? false : 'layout'.$this->getExtension());
}
$response->addHttpMeta('content-type', 'text/html', false);
$response->addStylesheet('main.css', '', array ());
<?php
// auto-generated by sfFilterConfigHandler
// date: 2019/10/11 09:29:46
list($class, $parameters) = (array) sfConfig::get('sf_rendering_filter', array('sfRenderingFilter', array (
)));
$filter = new $class(sfContext::getInstance(), $parameters);
$this->register($filter);
// does this action require security?
if ($actionInstance->isSecure())
{
list($class, $parameters) = (array) sfConfig::get('sf_security_filter', array('sfBasicSecurityFilter', array (
)));
$filter = new $class(sfContext::getInstance(), $parameters);
$this->register($filter);
}
list($class, $parameters) = (array) sfConfig::get('sf_execution_filter', array('sfExecutionFilter', array (
)));
$filter = new $class(sfContext::getInstance(), $parameters);
$this->register($filter);
<?php
// auto-generated by sfDefineEnvironmentConfigHandler
// date: 2019/10/11 09:29:46
sfConfig::add(array(
'mod_sfguardauth_enabled' => true,
'mod_sfguardauth_view_class' => 'sfPHP',
));
<?php
// auto-generated by sfSecurityConfigHandler
// date: 2019/10/11 09:29:46
$this->security = array (
'secure' =>
array (
'is_secure' => false,
),
'signin' =>
array (
'is_secure' => false,
),
'signout' =>
array (
'is_secure' => false,
),
'all' =>
array (
'is_secure' => 'on',
),
);
<?php
// auto-generated by sfViewConfigHandler
// date: 2019/10/11 09:29:46
$response = $this->context->getResponse();
$templateName = sfConfig::get('symfony.view.'.$this->moduleName.'_'.$this->actionName.'_template', $this->actionName);
$this->setTemplate($templateName.$this->viewName.$this->getExtension());
if (null !== $layout = sfConfig::get('symfony.view.'.$this->moduleName.'_'.$this->actionName.'_layout'))
{
$this->setDecoratorTemplate(false === $layout ? false : $layout.$this->getExtension());
}
else if (null === $this->getDecoratorTemplate() && !$this->context->getRequest()->isXmlHttpRequest())
{
$this->setDecoratorTemplate('' == 'layout' ? false : 'layout'.$this->getExtension());
}
$response->addHttpMeta('content-type', 'text/html', false);
$response->addStylesheet('main.css', '', array ());
<?php
require_once(dirname(__FILE__).'/../lib/BaseCategoryGeneratorConfiguration.class.php');
require_once(dirname(__FILE__).'/../lib/BaseCategoryGeneratorHelper.class.php');
/**
* category actions.
*
* @package ##PROJECT_NAME##
* @subpackage category
* @author ##AUTHOR_NAME##
*/
abstract class autoCategoryActions extends sfActions
{
public function preExecute()
{
$this->configuration = new categoryGeneratorConfiguration();
if (!$this->getUser()->hasCredential($this->configuration->getCredentials($this->getActionName())))
{
$this->forward(sfConfig::get('sf_secure_module'), sfConfig::get('sf_secure_action'));
}
$this->dispatcher->notify(new sfEvent($this, 'admin.pre_execute', array('configuration' => $this->configuration)));
$this->helper = new categoryGeneratorHelper();
parent::preExecute();
}
public function executeIndex(sfWebRequest $request)
{
// sorting
if ($request->getParameter('sort') && $this->isValidSortColumn($request->getParameter('sort')))
{
$this->setSort(array($request->getParameter('sort'), $request->getParameter('sort_type')));
}
// pager
if ($request->getParameter('page'))
{
$this->setPage($request->getParameter('page'));
}
$this->pager = $this->getPager();
$this->sort = $this->getSort();
}
public function executeFilter(sfWebRequest $request)
{
$this->setPage(1);
if ($request->hasParameter('_reset'))
{
$this->setFilters($this->configuration->getFilterDefaults());
$this->redirect('@jobeet_category');
}
$this->filters = $this->configuration->getFilterForm($this->getFilters());
$this->filters->bind($request->getParameter($this->filters->getName()));
if ($this->filters->isValid())
{
$this->setFilters($this->filters->getValues());
$this->redirect('@jobeet_category');
}
$this->pager = $this->getPager();
$this->sort = $this->getSort();
$this->setTemplate('index');
}
public function executeNew(sfWebRequest $request)
{
$this->form = $this->configuration->getForm();
$this->JobeetCategory = $this->form->getObject();
}
public function executeCreate(sfWebRequest $request)
{
$this->form = $this->configuration->getForm();
$this->JobeetCategory = $this->form->getObject();
$this->processForm($request, $this->form);
$this->setTemplate('new');
}
public function executeEdit(sfWebRequest $request)
{
$this->JobeetCategory = $this->getRoute()->getObject();
$this->form = $this->configuration->getForm($this->JobeetCategory);
}
public function executeUpdate(sfWebRequest $request)
{
$this->JobeetCategory = $this->getRoute()->getObject();
$this->form = $this->configuration->getForm($this->JobeetCategory);
$this->processForm($request, $this->form);
$this->setTemplate('edit');
}
public function executeDelete(sfWebRequest $request)
{
$request->checkCSRFProtection();
$this->dispatcher->notify(new sfEvent($this, 'admin.delete_object', array('object' => $this->getRoute()->getObject())));
$this->getRoute()->getObject()->delete();
$this->getUser()->setFlash('notice', 'The item was deleted successfully.');
$this->redirect('@jobeet_category');
}
public function executeBatch(sfWebRequest $request)
{
$request->checkCSRFProtection();
if (!$ids = $request->getParameter('ids'))
{
$this->getUser()->setFlash('error', 'You must at least select one item.');
$this->redirect('@jobeet_category');
}
if (!$action = $request->getParameter('batch_action'))
{
$this->getUser()->setFlash('error', 'You must select an action to execute on the selected items.');
$this->redirect('@jobeet_category');
}
if (!method_exists($this, $method = 'execute'.ucfirst($action)))
{
throw new InvalidArgumentException(sprintf('You must create a "%s" method for action "%s"', $method, $action));
}
if (!$this->getUser()->hasCredential($this->configuration->getCredentials($action)))
{
$this->forward(sfConfig::get('sf_secure_module'), sfConfig::get('sf_secure_action'));
}
$validator = new sfValidatorPropelChoice(array('multiple' => true, 'model' => 'JobeetCategory'));
try
{
// validate ids
$ids = $validator->clean($ids);
// execute batch
$this->$method($request);
}
catch (sfValidatorError $e)
{
$this->getUser()->setFlash('error', 'A problem occurs when deleting the selected items as some items do not exist anymore.');
}
$this->redirect('@jobeet_category');
}
protected function executeBatchDelete(sfWebRequest $request)
{
$ids = $request->getParameter('ids');
$count = 0;
foreach (JobeetCategoryPeer::retrieveByPks($ids) as $object)
{
$this->dispatcher->notify(new sfEvent($this, 'admin.delete_object', array('object' => $object)));
$object->delete();
if ($object->isDeleted())
{
$count++;
}
}
if ($count >= count($ids))
{
$this->getUser()->setFlash('notice', 'The selected items have been deleted successfully.');
}
else
{
$this->getUser()->setFlash('error', 'A problem occurs when deleting the selected items.');
}
$this->redirect('@jobeet_category');
}
protected function processForm(sfWebRequest $request, sfForm $form)
{
$form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
if ($form->isValid())
{
$notice = $form->getObject()->isNew() ? 'The item was created successfully.' : 'The item was updated successfully.';
$JobeetCategory = $form->save();
$this->dispatcher->notify(new sfEvent($this, 'admin.save_object', array('object' => $JobeetCategory)));
if ($request->hasParameter('_save_and_add'))
{
$this->getUser()->setFlash('notice', $notice.' You can add another one below.');
$this->redirect('@jobeet_category_new');
}
else
{
$this->getUser()->setFlash('notice', $notice);
$this->redirect(array('sf_route' => 'jobeet_category_edit', 'sf_subject' => $JobeetCategory));
}
}
else
{
$this->getUser()->setFlash('error', 'The item has not been saved due to some errors.', false);
}
}
protected function getFilters()
{
return $this->getUser()->getAttribute('category.filters', $this->configuration->getFilterDefaults(), 'admin_module');
}
protected function setFilters(array $filters)
{
return $this->getUser()->setAttribute('category.filters', $filters, 'admin_module');
}
protected function getPager()
{
$pager = $this->configuration->getPager('JobeetCategory');
$pager->setCriteria($this->buildCriteria());
$pager->setPage($this->getPage());
$pager->setPeerMethod($this->configuration->getPeerMethod());
$pager->setPeerCountMethod($this->configuration->getPeerCountMethod());
$pager->init();
return $pager;
}
protected function setPage($page)
{
$this->getUser()->setAttribute('category.page', $page, 'admin_module');
}
protected function getPage()
{
return $this->getUser()->getAttribute('category.page', 1, 'admin_module');
}
protected function buildCriteria()
{
if (null === $this->filters)
{
$this->filters = $this->configuration->getFilterForm($this->getFilters());
}
$criteria = $this->filters->buildCriteria($this->getFilters());
$this->addSortCriteria($criteria);
$event = $this->dispatcher->filter(new sfEvent($this, 'admin.build_criteria'), $criteria);
$criteria = $event->getReturnValue();
return $criteria;
}
protected function addSortCriteria($criteria)
{
if (array(null, null) == ($sort = $this->getSort()))
{
return;
}
$column = JobeetCategoryPeer::translateFieldName($sort[0], BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_COLNAME);
if ('asc' == $sort[1])
{
$criteria->addAscendingOrderByColumn($column);
}
else
{
$criteria->addDescendingOrderByColumn($column);
}
}
protected function getSort()
{
if (null !== $sort = $this->getUser()->getAttribute('category.sort', null, 'admin_module'))
{
return $sort;
}
$this->setSort($this->configuration->getDefaultSort());
return $this->getUser()->getAttribute('category.sort', null, 'admin_module');
}
protected function setSort(array $sort)
{
if (null !== $sort[0] && null === $sort[1])
{
$sort[1] = 'asc';
}
$this->getUser()->setAttribute('category.sort', $sort, 'admin_module');
}
protected function isValidSortColumn($column)
{
return in_array($column, BasePeer::getFieldnames('JobeetCategory', BasePeer::TYPE_FIELDNAME));
}
}
<?php
/**
* category module configuration.
*
* @package ##PROJECT_NAME##
* @subpackage category
* @author ##AUTHOR_NAME##
* @version SVN: $Id: configuration.php 24171 2009-11-19 16:37:50Z Kris.Wallsmith $
*/
abstract class BaseCategoryGeneratorConfiguration extends sfModelGeneratorConfiguration
{
public function getActionsDefault()
{
return array();
}
public function getFormActions()
{
return array( '_delete' => NULL, '_list' => NULL, '_save' => NULL, '_save_and_add' => NULL,);
}
public function getNewActions()
{
return array();
}
public function getEditActions()
{
return array();
}
public function getListObjectActions()
{
return array();
}
public function getListActions()
{
return array( '_new' => NULL,);
}
public function getListBatchActions()
{
return array( '_delete' => NULL, 'extend' => NULL,);
}
public function getListParams()
{
return '%%id%% - %%name%% - %%c_slug%%';
}
public function getListLayout()
{
return 'tabular';
}
public function getListTitle()
{
return 'Category List';
}
public function getEditTitle()
{
return 'Edit Category';
}
public function getNewTitle()
{
return 'New Category';
}
public function getFilterDisplay()
{
return array();
}
public function getFormDisplay()
{
return array();
}
public function getEditDisplay()
{
return array();
}
public function getNewDisplay()
{
return array();
}
public function getListDisplay()
{
return array( 0 => 'id', 1 => 'name', 2 => 'c_slug',);
}
public function getFieldsDefault()
{
return array(
'id' => array( 'is_link' => true, 'is_real' => true, 'is_partial' => false, 'is_component' => false, 'type' => 'Text',),
'name' => array( 'is_link' => false, 'is_real' => true, 'is_partial' => false, 'is_component' => false, 'type' => 'Text',),
'c_slug' => array( 'is_link' => false, 'is_real' => true, 'is_partial' => false, 'is_component' => false, 'type' => 'Text',),
'jobeet_category_affiliate_list' => array( 'is_link' => false, 'is_real' => false, 'is_partial' => false, 'is_component' => false, 'type' => 'Text',),
);
}
public function getFieldsList()
{
return array(
'id' => array(),
'name' => array(),
'c_slug' => array(),
'jobeet_category_affiliate_list' => array(),
);
}
public function getFieldsFilter()
{
return array(
'id' => array(),
'name' => array(),
'c_slug' => array(),
'jobeet_category_affiliate_list' => array(),
);
}
public function getFieldsForm()
{
return array(
'id' => array(),
'name' => array(),
'c_slug' => array(),
'jobeet_category_affiliate_list' => array(),
);
}
public function getFieldsEdit()
{
return array(
'id' => array(),
'name' => array(),
'c_slug' => array(),
'jobeet_category_affiliate_list' => array(),
);
}
public function getFieldsNew()
{
return array(
'id' => array(),
'name' => array(),
'c_slug' => array(),
'jobeet_category_affiliate_list' => array(),
);
}
/**
* Gets the form class name.
*
* @return string The form class name
*/
public function getFormClass()
{
return 'JobeetCategoryForm';
}
public function hasFilterForm()
{
return true;
}
/**
* Gets the filter form class name
*
* @return string The filter form class name associated with this generator
*/
public function getFilterFormClass()
{
return 'JobeetCategoryFormFilter';
}
public function getPagerClass()
{
return 'sfPropelPager';
}
public function getPagerMaxPerPage()
{
return 20;
}
public function getDefaultSort()
{
return array(null, null);
}
public function getPeerMethod()
{
return 'doSelect';
}
public function getPeerCountMethod()
{
return 'doCount';
}
}
<?php
/**
* category module configuration.
*
* @package ##PROJECT_NAME##
* @subpackage category
* @author ##AUTHOR_NAME##
*/
abstract class BaseCategoryGeneratorHelper extends sfModelGeneratorHelper
{
public function getUrlForAction($action)
{
return 'list' == $action ? 'jobeet_category' : 'jobeet_category_'.$action;
}
}
<?php use_stylesheet('/sfPropelPlugin/css/global.css', 'first') ?>
<?php use_stylesheet('/sfPropelPlugin/css/default.css', 'first') ?>
<?php use_stylesheets_for_form($form) ?>
<?php use_javascripts_for_form($form) ?>
<div class="sf_admin_filter">
<?php if ($form->hasGlobalErrors()): ?>
<?php echo $form->renderGlobalErrors() ?>
<?php endif; ?>
<form action="<?php echo url_for('jobeet_category_collection', array('action' => 'filter')) ?>" method="post">
<table cellspacing="0">
<tfoot>
<tr>
<td colspan="2">
<?php echo $form->renderHiddenFields() ?>
<?php echo link_to(__('Reset', array(), 'sf_admin'), 'jobeet_category_collection', array('action' => 'filter'), array('query_string' => '_reset', 'method' => 'post')) ?>
<input type="submit" value="<?php echo __('Filter', array(), 'sf_admin') ?>" />
</td>
</tr>
</tfoot>
<tbody>
<?php foreach ($configuration->getFormFilterFields($form) as $name => $field): ?>
<?php if ((isset($form[$name]) && $form[$name]->isHidden()) || (!isset($form[$name]) && $field->isReal())) continue ?>
<?php include_partial('category/filters_field', array(
'name' => $name,
'attributes' => $field->getConfig('attributes', array()),
'label' => $field->getConfig('label'),
'help' => $field->getConfig('help'),
'form' => $form,
'field' => $field,
'class' => 'sf_admin_form_row sf_admin_'.strtolower($field->getType()).' sf_admin_filter_field_'.$name,
)) ?>
<?php endforeach; ?>
</tbody>
</table>
</form>
</div>
<?php if ($field->isPartial()): ?>
<?php include_partial('category/'.$name, array('type' => 'filter', 'form' => $form, 'attributes' => $attributes instanceof sfOutputEscaper ? $attributes->getRawValue() : $attributes)) ?>
<?php elseif ($field->isComponent()): ?>
<?php include_component('category', $name, array('type' => 'filter', 'form' => $form, 'attributes' => $attributes instanceof sfOutputEscaper ? $attributes->getRawValue() : $attributes)) ?>
<?php else: ?>
<tr class="<?php echo $class ?>">
<td>
<?php echo $form[$name]->renderLabel($label) ?>
</td>
<td>
<?php echo $form[$name]->renderError() ?>
<?php echo $form[$name]->render($attributes instanceof sfOutputEscaper ? $attributes->getRawValue() : $attributes) ?>
<?php if ($help || $help = $form[$name]->renderHelp()): ?>
<div class="help"><?php echo __($help, array(), 'messages') ?></div>
<?php endif; ?>
</td>
</tr>
<?php endif; ?>
<?php if ($sf_user->hasFlash('notice')): ?>
<div class="notice"><?php echo __($sf_user->getFlash('notice'), array(), 'sf_admin') ?></div>
<?php endif; ?>
<?php if ($sf_user->hasFlash('error')): ?>
<div class="error"><?php echo __($sf_user->getFlash('error'), array(), 'sf_admin') ?></div>
<?php endif; ?>
<?php use_stylesheets_for_form($form) ?>
<?php use_javascripts_for_form($form) ?>
<div class="sf_admin_form">
<?php echo form_tag_for($form, '@jobeet_category') ?>
<?php echo $form->renderHiddenFields(false) ?>
<?php if ($form->hasGlobalErrors()): ?>
<?php echo $form->renderGlobalErrors() ?>
<?php endif; ?>
<?php foreach ($configuration->getFormFields($form, $form->isNew() ? 'new' : 'edit') as $fieldset => $fields): ?>
<?php include_partial('category/form_fieldset', array('JobeetCategory' => $JobeetCategory, 'form' => $form, 'fields' => $fields, 'fieldset' => $fieldset)) ?>
<?php endforeach; ?>
<?php include_partial('category/form_actions', array('JobeetCategory' => $JobeetCategory, 'form' => $form, 'configuration' => $configuration, 'helper' => $helper)) ?>
</form>
</div>
<ul class="sf_admin_actions">
<?php if ($form->isNew()): ?>
<?php echo $helper->linkToDelete($form->getObject(), array( 'params' => array( ), 'confirm' => 'Are you sure?', 'class_suffix' => 'delete', 'label' => 'Delete',)) ?>
<?php echo $helper->linkToList(array( 'params' => array( ), 'class_suffix' => 'list', 'label' => 'Back to list',)) ?>
<?php echo $helper->linkToSave($form->getObject(), array( 'params' => array( ), 'class_suffix' => 'save', 'label' => 'Save',)) ?>
<?php echo $helper->linkToSaveAndAdd($form->getObject(), array( 'params' => array( ), 'class_suffix' => 'save_and_add', 'label' => 'Save and add',)) ?>
<?php else: ?>
<?php echo $helper->linkToDelete($form->getObject(), array( 'params' => array( ), 'confirm' => 'Are you sure?', 'class_suffix' => 'delete', 'label' => 'Delete',)) ?>
<?php echo $helper->linkToList(array( 'params' => array( ), 'class_suffix' => 'list', 'label' => 'Back to list',)) ?>
<?php echo $helper->linkToSave($form->getObject(), array( 'params' => array( ), 'class_suffix' => 'save', 'label' => 'Save',)) ?>
<?php echo $helper->linkToSaveAndAdd($form->getObject(), array( 'params' => array( ), 'class_suffix' => 'save_and_add', 'label' => 'Save and add',)) ?>
<?php endif; ?>
</ul>
<?php if ($field->isPartial()): ?>
<?php include_partial('category/'.$name, array('form' => $form, 'attributes' => $attributes instanceof sfOutputEscaper ? $attributes->getRawValue() : $attributes)) ?>
<?php elseif ($field->isComponent()): ?>
<?php include_component('category', $name, array('form' => $form, 'attributes' => $attributes instanceof sfOutputEscaper ? $attributes->getRawValue() : $attributes)) ?>
<?php else: ?>
<div class="<?php echo $class ?><?php $form[$name]->hasError() and print ' errors' ?>">
<?php echo $form[$name]->renderError() ?>
<div>
<?php echo $form[$name]->renderLabel($label) ?>
<div class="content"><?php echo $form[$name]->render($attributes instanceof sfOutputEscaper ? $attributes->getRawValue() : $attributes) ?></div>
<?php if ($help): ?>
<div class="help"><?php echo __($help, array(), 'messages') ?></div>
<?php elseif ($help = $form[$name]->renderHelp()): ?>
<div class="help"><?php echo $help ?></div>
<?php endif; ?>
</div>
</div>
<?php endif; ?>
<fieldset id="sf_fieldset_<?php echo preg_replace('/[^a-z0-9_]/', '_', strtolower($fieldset)) ?>">
<?php if ('NONE' != $fieldset): ?>
<h2><?php echo __($fieldset, array(), 'messages') ?></h2>
<?php endif; ?>
<?php foreach ($fields as $name => $field): ?>
<?php if ((isset($form[$name]) && $form[$name]->isHidden()) || (!isset($form[$name]) && $field->isReal())) continue ?>
<?php include_partial('category/form_field', array(
'name' => $name,
'attributes' => $field->getConfig('attributes', array()),
'label' => $field->getConfig('label'),
'help' => $field->getConfig('help'),
'form' => $form,
'field' => $field,
'class' => 'sf_admin_form_row sf_admin_'.strtolower($field->getType()).' sf_admin_form_field_'.$name,
)) ?>
<?php endforeach; ?>
</fieldset>
<div class="sf_admin_list">
<?php if (!$pager->getNbResults()): ?>
<p><?php echo __('No result', array(), 'sf_admin') ?></p>
<?php else: ?>
<table cellspacing="0">
<thead>
<tr>
<th id="sf_admin_list_batch_actions"><input id="sf_admin_list_batch_checkbox" type="checkbox" onclick="checkAll();" /></th>
<?php include_partial('category/list_th_tabular', array('sort' => $sort)) ?>
</tr>
</thead>
<tfoot>
<tr>
<th colspan="4">
<?php if ($pager->haveToPaginate()): ?>
<?php include_partial('category/pagination', array('pager' => $pager)) ?>
<?php endif; ?>
<?php echo format_number_choice('[0] no result|[1] 1 result|(1,+Inf] %1% results', array('%1%' => $pager->getNbResults()), $pager->getNbResults(), 'sf_admin') ?>
<?php if ($pager->haveToPaginate()): ?>
<?php echo __('(page %%page%%/%%nb_pages%%)', array('%%page%%' => $pager->getPage(), '%%nb_pages%%' => $pager->getLastPage()), 'sf_admin') ?>
<?php endif; ?>
</th>
</tr>
</tfoot>
<tbody>
<?php foreach ($pager->getResults() as $i => $JobeetCategory): $odd = fmod(++$i, 2) ? 'odd' : 'even' ?>
<tr class="sf_admin_row <?php echo $odd ?>">
<?php include_partial('category/list_td_batch_actions', array('JobeetCategory' => $JobeetCategory, 'helper' => $helper)) ?>
<?php include_partial('category/list_td_tabular', array('JobeetCategory' => $JobeetCategory)) ?>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<?php endif; ?>
</div>
<script type="text/javascript">
/* <![CDATA[ */
function checkAll()
{
var boxes = document.getElementsByTagName('input'); for(var index = 0; index < boxes.length; index++) { box = boxes[index]; if (box.type == 'checkbox' && box.className == 'sf_admin_batch_checkbox') box.checked = document.getElementById('sf_admin_list_batch_checkbox').checked } return true;
}
/* ]]> */
</script>
<?php echo $helper->linkToNew(array( 'params' => array( ), 'class_suffix' => 'new', 'label' => 'New',)) ?>
<li class="sf_admin_batch_actions_choice">
<select name="batch_action">
<option value=""><?php echo __('Choose an action', array(), 'sf_admin') ?></option>
<option value="batchDelete"><?php echo __('Delete', array(), 'sf_admin') ?></option>
<option value="batchExtend"><?php echo __('Extend', array(), 'sf_admin') ?></option>
</select>
<?php $form = new BaseForm(); if ($form->isCSRFProtected()): ?>
<input type="hidden" name="<?php echo $form->getCSRFFieldName() ?>" value="<?php echo $form->getCSRFToken() ?>" />
<?php endif; ?>
<input type="submit" value="<?php echo __('go', array(), 'sf_admin') ?>" />
</li>
<?php if ($value): ?>
<?php echo image_tag(sfConfig::get('sf_admin_module_web_dir').'/images/tick.png', array('alt' => __('Checked', array(), 'sf_admin'), 'title' => __('Checked', array(), 'sf_admin'))) ?>
<?php else: ?>
&nbsp;
<?php endif; ?>
<td>
<ul class="sf_admin_td_actions">
</ul>
</td>
<td>
<input type="checkbox" name="ids[]" value="<?php echo $JobeetCategory->getPrimaryKey() ?>" class="sf_admin_batch_checkbox" />
</td>
<td colspan="3">
<?php echo __('%%id%% - %%name%% - %%c_slug%%', array('%%id%%' => link_to($JobeetCategory->getId(), 'jobeet_category_edit', $JobeetCategory), '%%name%%' => $JobeetCategory->getName(), '%%c_slug%%' => $JobeetCategory->getCSlug()), 'messages') ?>
</td>
<td class="sf_admin_text sf_admin_list_td_id">
<?php echo link_to($JobeetCategory->getId(), 'jobeet_category_edit', $JobeetCategory) ?>
</td>
<td class="sf_admin_text sf_admin_list_td_name">
<?php echo $JobeetCategory->getName() ?>
</td>
<td class="sf_admin_text sf_admin_list_td_c_slug">
<?php echo $JobeetCategory->getCSlug() ?>
</td>
<?php include_partial('category/list_th_tabular', array('sort' => $sort)) ?>
<?php slot('sf_admin.current_header') ?>
<th class="sf_admin_text sf_admin_list_th_id">
<?php if ('id' == $sort[0]): ?>
<?php echo link_to(__('Id', array(), 'messages'), '@jobeet_category', array('query_string' => 'sort=id&sort_type='.($sort[1] == 'asc' ? 'desc' : 'asc'))) ?>
<?php echo image_tag(sfConfig::get('sf_admin_module_web_dir').'/images/'.$sort[1].'.png', array('alt' => __($sort[1], array(), 'sf_admin'), 'title' => __($sort[1], array(), 'sf_admin'))) ?>
<?php else: ?>
<?php echo link_to(__('Id', array(), 'messages'), '@jobeet_category', array('query_string' => 'sort=id&sort_type=asc')) ?>
<?php endif; ?>
</th>
<?php end_slot(); ?>
<?php include_slot('sf_admin.current_header') ?><?php slot('sf_admin.current_header') ?>
<th class="sf_admin_text sf_admin_list_th_name">
<?php if ('name' == $sort[0]): ?>
<?php echo link_to(__('Name', array(), 'messages'), '@jobeet_category', array('query_string' => 'sort=name&sort_type='.($sort[1] == 'asc' ? 'desc' : 'asc'))) ?>
<?php echo image_tag(sfConfig::get('sf_admin_module_web_dir').'/images/'.$sort[1].'.png', array('alt' => __($sort[1], array(), 'sf_admin'), 'title' => __($sort[1], array(), 'sf_admin'))) ?>
<?php else: ?>
<?php echo link_to(__('Name', array(), 'messages'), '@jobeet_category', array('query_string' => 'sort=name&sort_type=asc')) ?>
<?php endif; ?>
</th>
<?php end_slot(); ?>
<?php include_slot('sf_admin.current_header') ?><?php slot('sf_admin.current_header') ?>
<th class="sf_admin_text sf_admin_list_th_c_slug">
<?php if ('c_slug' == $sort[0]): ?>
<?php echo link_to(__('C slug', array(), 'messages'), '@jobeet_category', array('query_string' => 'sort=c_slug&sort_type='.($sort[1] == 'asc' ? 'desc' : 'asc'))) ?>
<?php echo image_tag(sfConfig::get('sf_admin_module_web_dir').'/images/'.$sort[1].'.png', array('alt' => __($sort[1], array(), 'sf_admin'), 'title' => __($sort[1], array(), 'sf_admin'))) ?>
<?php else: ?>
<?php echo link_to(__('C slug', array(), 'messages'), '@jobeet_category', array('query_string' => 'sort=c_slug&sort_type=asc')) ?>
<?php endif; ?>
</th>
<?php end_slot(); ?>
<?php include_slot('sf_admin.current_header') ?>
\ No newline at end of file
<div class="sf_admin_pagination">
<a href="<?php echo url_for('@jobeet_category') ?>?page=1">
<?php echo image_tag(sfConfig::get('sf_admin_module_web_dir').'/images/first.png', array('alt' => __('First page', array(), 'sf_admin'), 'title' => __('First page', array(), 'sf_admin'))) ?>
</a>
<a href="<?php echo url_for('@jobeet_category') ?>?page=<?php echo $pager->getPreviousPage() ?>">
<?php echo image_tag(sfConfig::get('sf_admin_module_web_dir').'/images/previous.png', array('alt' => __('Previous page', array(), 'sf_admin'), 'title' => __('Previous page', array(), 'sf_admin'))) ?>
</a>
<?php foreach ($pager->getLinks() as $page): ?>
<?php if ($page == $pager->getPage()): ?>
<?php echo $page ?>
<?php else: ?>
<a href="<?php echo url_for('@jobeet_category') ?>?page=<?php echo $page ?>"><?php echo $page ?></a>
<?php endif; ?>
<?php endforeach; ?>
<a href="<?php echo url_for('@jobeet_category') ?>?page=<?php echo $pager->getNextPage() ?>">
<?php echo image_tag(sfConfig::get('sf_admin_module_web_dir').'/images/next.png', array('alt' => __('Next page', array(), 'sf_admin'), 'title' => __('Next page', array(), 'sf_admin'))) ?>
</a>
<a href="<?php echo url_for('@jobeet_category') ?>?page=<?php echo $pager->getLastPage() ?>">
<?php echo image_tag(sfConfig::get('sf_admin_module_web_dir').'/images/last.png', array('alt' => __('Last page', array(), 'sf_admin'), 'title' => __('Last page', array(), 'sf_admin'))) ?>
</a>
</div>
<?php use_helper('I18N', 'Date') ?>
<?php include_partial('category/assets') ?>
<div id="sf_admin_container">
<h1><?php echo __('Edit Category', array(), 'messages') ?></h1>
<?php include_partial('category/flashes') ?>
<div id="sf_admin_header">
<?php include_partial('category/form_header', array('JobeetCategory' => $JobeetCategory, 'form' => $form, 'configuration' => $configuration)) ?>
</div>
<div id="sf_admin_content">
<?php include_partial('category/form', array('JobeetCategory' => $JobeetCategory, 'form' => $form, 'configuration' => $configuration, 'helper' => $helper)) ?>
</div>
<div id="sf_admin_footer">
<?php include_partial('category/form_footer', array('JobeetCategory' => $JobeetCategory, 'form' => $form, 'configuration' => $configuration)) ?>
</div>
</div>
<?php use_helper('I18N', 'Date') ?>
<?php include_partial('category/assets') ?>
<div id="sf_admin_container">
<h1><?php echo __('Category List', array(), 'messages') ?></h1>
<?php include_partial('category/flashes') ?>
<div id="sf_admin_header">
<?php include_partial('category/list_header', array('pager' => $pager)) ?>
</div>
<div id="sf_admin_bar">
<?php include_partial('category/filters', array('form' => $filters, 'configuration' => $configuration)) ?>
</div>
<div id="sf_admin_content">
<form action="<?php echo url_for('jobeet_category_collection', array('action' => 'batch')) ?>" method="post">
<?php include_partial('category/list', array('pager' => $pager, 'sort' => $sort, 'helper' => $helper)) ?>
<ul class="sf_admin_actions">
<?php include_partial('category/list_batch_actions', array('helper' => $helper)) ?>
<?php include_partial('category/list_actions', array('helper' => $helper)) ?>
</ul>
</form>
</div>
<div id="sf_admin_footer">
<?php include_partial('category/list_footer', array('pager' => $pager)) ?>
</div>
</div>
<?php use_helper('I18N', 'Date') ?>
<?php include_partial('category/assets') ?>
<div id="sf_admin_container">
<h1><?php echo __('New Category', array(), 'messages') ?></h1>
<?php include_partial('category/flashes') ?>
<div id="sf_admin_header">
<?php include_partial('category/form_header', array('JobeetCategory' => $JobeetCategory, 'form' => $form, 'configuration' => $configuration)) ?>
</div>
<div id="sf_admin_content">
<?php include_partial('category/form', array('JobeetCategory' => $JobeetCategory, 'form' => $form, 'configuration' => $configuration, 'helper' => $helper)) ?>
</div>
<div id="sf_admin_footer">
<?php include_partial('category/form_footer', array('JobeetCategory' => $JobeetCategory, 'form' => $form, 'configuration' => $configuration)) ?>
</div>
</div>
<?php
require_once(dirname(__FILE__).'/../lib/BaseJobGeneratorConfiguration.class.php');
require_once(dirname(__FILE__).'/../lib/BaseJobGeneratorHelper.class.php');
/**
* job actions.
*
* @package ##PROJECT_NAME##
* @subpackage job
* @author ##AUTHOR_NAME##
*/
abstract class autoJobActions extends sfActions
{
public function preExecute()
{
$this->configuration = new jobGeneratorConfiguration();
if (!$this->getUser()->hasCredential($this->configuration->getCredentials($this->getActionName())))
{
$this->forward(sfConfig::get('sf_secure_module'), sfConfig::get('sf_secure_action'));
}
$this->dispatcher->notify(new sfEvent($this, 'admin.pre_execute', array('configuration' => $this->configuration)));
$this->helper = new jobGeneratorHelper();
parent::preExecute();
}
public function executeIndex(sfWebRequest $request)
{
// sorting
if ($request->getParameter('sort') && $this->isValidSortColumn($request->getParameter('sort')))
{
$this->setSort(array($request->getParameter('sort'), $request->getParameter('sort_type')));
}
// pager
if ($request->getParameter('page'))
{
$this->setPage($request->getParameter('page'));
}
$this->pager = $this->getPager();
$this->sort = $this->getSort();
}
public function executeFilter(sfWebRequest $request)
{
$this->setPage(1);
if ($request->hasParameter('_reset'))
{
$this->setFilters($this->configuration->getFilterDefaults());
$this->redirect('@jobeet_job');
}
$this->filters = $this->configuration->getFilterForm($this->getFilters());
$this->filters->bind($request->getParameter($this->filters->getName()));
if ($this->filters->isValid())
{
$this->setFilters($this->filters->getValues());
$this->redirect('@jobeet_job');
}
$this->pager = $this->getPager();
$this->sort = $this->getSort();
$this->setTemplate('index');
}
public function executeNew(sfWebRequest $request)
{
$this->form = $this->configuration->getForm();
$this->JobeetJob = $this->form->getObject();
}
public function executeCreate(sfWebRequest $request)
{
$this->form = $this->configuration->getForm();
$this->JobeetJob = $this->form->getObject();
$this->processForm($request, $this->form);
$this->setTemplate('new');
}
public function executeEdit(sfWebRequest $request)
{
$this->JobeetJob = $this->getRoute()->getObject();
$this->form = $this->configuration->getForm($this->JobeetJob);
}
public function executeUpdate(sfWebRequest $request)
{
$this->JobeetJob = $this->getRoute()->getObject();
$this->form = $this->configuration->getForm($this->JobeetJob);
$this->processForm($request, $this->form);
$this->setTemplate('edit');
}
public function executeDelete(sfWebRequest $request)
{
$request->checkCSRFProtection();
$this->dispatcher->notify(new sfEvent($this, 'admin.delete_object', array('object' => $this->getRoute()->getObject())));
$this->getRoute()->getObject()->delete();
$this->getUser()->setFlash('notice', 'The item was deleted successfully.');
$this->redirect('@jobeet_job');
}
public function executeBatch(sfWebRequest $request)
{
$request->checkCSRFProtection();
if (!$ids = $request->getParameter('ids'))
{
$this->getUser()->setFlash('error', 'You must at least select one item.');
$this->redirect('@jobeet_job');
}
if (!$action = $request->getParameter('batch_action'))
{
$this->getUser()->setFlash('error', 'You must select an action to execute on the selected items.');
$this->redirect('@jobeet_job');
}
if (!method_exists($this, $method = 'execute'.ucfirst($action)))
{
throw new InvalidArgumentException(sprintf('You must create a "%s" method for action "%s"', $method, $action));
}
if (!$this->getUser()->hasCredential($this->configuration->getCredentials($action)))
{
$this->forward(sfConfig::get('sf_secure_module'), sfConfig::get('sf_secure_action'));
}
$validator = new sfValidatorPropelChoice(array('multiple' => true, 'model' => 'JobeetJob'));
try
{
// validate ids
$ids = $validator->clean($ids);
// execute batch
$this->$method($request);
}
catch (sfValidatorError $e)
{
$this->getUser()->setFlash('error', 'A problem occurs when deleting the selected items as some items do not exist anymore.');
}
$this->redirect('@jobeet_job');
}
protected function executeBatchDelete(sfWebRequest $request)
{
$ids = $request->getParameter('ids');
$count = 0;
foreach (JobeetJobPeer::retrieveByPks($ids) as $object)
{
$this->dispatcher->notify(new sfEvent($this, 'admin.delete_object', array('object' => $object)));
$object->delete();
if ($object->isDeleted())
{
$count++;
}
}
if ($count >= count($ids))
{
$this->getUser()->setFlash('notice', 'The selected items have been deleted successfully.');
}
else
{
$this->getUser()->setFlash('error', 'A problem occurs when deleting the selected items.');
}
$this->redirect('@jobeet_job');
}
protected function processForm(sfWebRequest $request, sfForm $form)
{
$form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
if ($form->isValid())
{
$notice = $form->getObject()->isNew() ? 'The item was created successfully.' : 'The item was updated successfully.';
$JobeetJob = $form->save();
$this->dispatcher->notify(new sfEvent($this, 'admin.save_object', array('object' => $JobeetJob)));
if ($request->hasParameter('_save_and_add'))
{
$this->getUser()->setFlash('notice', $notice.' You can add another one below.');
$this->redirect('@jobeet_job_new');
}
else
{
$this->getUser()->setFlash('notice', $notice);
$this->redirect(array('sf_route' => 'jobeet_job_edit', 'sf_subject' => $JobeetJob));
}
}
else
{
$this->getUser()->setFlash('error', 'The item has not been saved due to some errors.', false);
}
}
protected function getFilters()
{
return $this->getUser()->getAttribute('job.filters', $this->configuration->getFilterDefaults(), 'admin_module');
}
protected function setFilters(array $filters)
{
return $this->getUser()->setAttribute('job.filters', $filters, 'admin_module');
}
protected function getPager()
{
$pager = $this->configuration->getPager('JobeetJob');
$pager->setCriteria($this->buildCriteria());
$pager->setPage($this->getPage());
$pager->setPeerMethod($this->configuration->getPeerMethod());
$pager->setPeerCountMethod($this->configuration->getPeerCountMethod());
$pager->init();
return $pager;
}
protected function setPage($page)
{
$this->getUser()->setAttribute('job.page', $page, 'admin_module');
}
protected function getPage()
{
return $this->getUser()->getAttribute('job.page', 1, 'admin_module');
}
protected function buildCriteria()
{
if (null === $this->filters)
{
$this->filters = $this->configuration->getFilterForm($this->getFilters());
}
$criteria = $this->filters->buildCriteria($this->getFilters());
$this->addSortCriteria($criteria);
$event = $this->dispatcher->filter(new sfEvent($this, 'admin.build_criteria'), $criteria);
$criteria = $event->getReturnValue();
return $criteria;
}
protected function addSortCriteria($criteria)
{
if (array(null, null) == ($sort = $this->getSort()))
{
return;
}
$column = JobeetJobPeer::translateFieldName($sort[0], BasePeer::TYPE_FIELDNAME, BasePeer::TYPE_COLNAME);
if ('asc' == $sort[1])
{
$criteria->addAscendingOrderByColumn($column);
}
else
{
$criteria->addDescendingOrderByColumn($column);
}
}
protected function getSort()
{
if (null !== $sort = $this->getUser()->getAttribute('job.sort', null, 'admin_module'))
{
return $sort;
}
$this->setSort($this->configuration->getDefaultSort());
return $this->getUser()->getAttribute('job.sort', null, 'admin_module');
}
protected function setSort(array $sort)
{
if (null !== $sort[0] && null === $sort[1])
{
$sort[1] = 'asc';
}
$this->getUser()->setAttribute('job.sort', $sort, 'admin_module');
}
protected function isValidSortColumn($column)
{
return in_array($column, BasePeer::getFieldnames('JobeetJob', BasePeer::TYPE_FIELDNAME));
}
}
<?php
/**
* job module configuration.
*
* @package ##PROJECT_NAME##
* @subpackage job
* @author ##AUTHOR_NAME##
* @version SVN: $Id: configuration.php 24171 2009-11-19 16:37:50Z Kris.Wallsmith $
*/
abstract class BaseJobGeneratorConfiguration extends sfModelGeneratorConfiguration
{
public function getActionsDefault()
{
return array();
}
public function getFormActions()
{
return array( '_delete' => NULL, '_list' => NULL, '_save' => NULL, '_save_and_add' => NULL,);
}
public function getNewActions()
{
return array();
}
public function getEditActions()
{
return array();
}
public function getListObjectActions()
{
return array( 'extend' => NULL, '_edit' => NULL, '_delete' => NULL,);
}
public function getListActions()
{
return array( 'deleteNeverActivated' => array( 'label' => 'Delete never activated jobs', ),);
}
public function getListBatchActions()
{
return array( '_delete' => NULL,);
}
public function getListParams()
{
return '%%is_activated%% <small>%%jobeet_category%%</small> - %%company%%(<em>%%email%%</em>) is looking for a %%=position%% (%%location%%)';
}
public function getListLayout()
{
return 'stacked';
}
public function getListTitle()
{
return 'Job Management';
}
public function getEditTitle()
{
return 'Edit Job';
}
public function getNewTitle()
{
return 'New Job';
}
public function getFilterDisplay()
{
return array();
}
public function getFormDisplay()
{
return array( 'Content' => array( 0 => 'category_id', 1 => 'type', 2 => 'company', 3 => 'logo', 4 => 'url', 5 => 'position', 6 => 'location', 7 => 'description', 8 => 'how_to_apply', 9 => 'is_public', 10 => 'email', ), 'Admin' => array( 0 => '_generated_token', 1 => 'is_activated', 2 => 'expires_at', ),);
}
public function getEditDisplay()
{
return array();
}
public function getNewDisplay()
{
return array();
}
public function getListDisplay()
{
return array( 0 => 'company', 1 => 'position', 2 => 'location', 3 => 'url', 4 => 'is_activated', 5 => 'email',);
}
public function getFieldsDefault()
{
return array(
'id' => array( 'is_link' => true, 'is_real' => true, 'is_partial' => false, 'is_component' => false, 'type' => 'Text',),
'category_id' => array( 'is_link' => false, 'is_real' => true, 'is_partial' => false, 'is_component' => false, 'type' => 'ForeignKey',),
'type' => array( 'is_link' => false, 'is_real' => true, 'is_partial' => false, 'is_component' => false, 'type' => 'Text',),
'company' => array( 'is_link' => false, 'is_real' => true, 'is_partial' => false, 'is_component' => false, 'type' => 'Text',),
'logo' => array( 'is_link' => false, 'is_real' => true, 'is_partial' => false, 'is_component' => false, 'type' => 'Text',),
'url' => array( 'is_link' => false, 'is_real' => true, 'is_partial' => false, 'is_component' => false, 'type' => 'Text',),
'position' => array( 'is_link' => false, 'is_real' => true, 'is_partial' => false, 'is_component' => false, 'type' => 'Text',),
'location' => array( 'is_link' => false, 'is_real' => true, 'is_partial' => false, 'is_component' => false, 'type' => 'Text',),
'description' => array( 'is_link' => false, 'is_real' => true, 'is_partial' => false, 'is_component' => false, 'type' => 'Text',),
'how_to_apply' => array( 'is_link' => false, 'is_real' => true, 'is_partial' => false, 'is_component' => false, 'type' => 'Text',),
'token' => array( 'is_link' => false, 'is_real' => true, 'is_partial' => false, 'is_component' => false, 'type' => 'Text',),
'is_public' => array( 'is_link' => false, 'is_real' => true, 'is_partial' => false, 'is_component' => false, 'type' => 'Boolean',),
'is_activated' => array( 'is_link' => false, 'is_real' => true, 'is_partial' => false, 'is_component' => false, 'type' => 'Boolean',),
'email' => array( 'is_link' => false, 'is_real' => true, 'is_partial' => false, 'is_component' => false, 'type' => 'Text',),
'expires_at' => array( 'is_link' => false, 'is_real' => true, 'is_partial' => false, 'is_component' => false, 'type' => 'Date',),
'created_at' => array( 'is_link' => false, 'is_real' => true, 'is_partial' => false, 'is_component' => false, 'type' => 'Date',),
'updated_at' => array( 'is_link' => false, 'is_real' => true, 'is_partial' => false, 'is_component' => false, 'type' => 'Date',),
);
}
public function getFieldsList()
{
return array(
'id' => array(),
'category_id' => array(),
'type' => array(),
'company' => array(),
'logo' => array(),
'url' => array(),
'position' => array(),
'location' => array(),
'description' => array(),
'how_to_apply' => array(),
'token' => array(),
'is_public' => array(),
'is_activated' => array(),
'email' => array(),
'expires_at' => array(),
'created_at' => array(),
'updated_at' => array(),
);
}
public function getFieldsFilter()
{
return array(
'id' => array(),
'category_id' => array(),
'type' => array(),
'company' => array(),
'logo' => array(),
'url' => array(),
'position' => array(),
'location' => array(),
'description' => array(),
'how_to_apply' => array(),
'token' => array(),
'is_public' => array(),
'is_activated' => array(),
'email' => array(),
'expires_at' => array(),
'created_at' => array(),
'updated_at' => array(),
);
}
public function getFieldsForm()
{
return array(
'id' => array(),
'category_id' => array(),
'type' => array(),
'company' => array(),
'logo' => array(),
'url' => array(),
'position' => array(),
'location' => array(),
'description' => array(),
'how_to_apply' => array(),
'token' => array(),
'is_public' => array(),
'is_activated' => array(),
'email' => array(),
'expires_at' => array(),
'created_at' => array(),
'updated_at' => array(),
);
}
public function getFieldsEdit()
{
return array(
'id' => array(),
'category_id' => array(),
'type' => array(),
'company' => array(),
'logo' => array(),
'url' => array(),
'position' => array(),
'location' => array(),
'description' => array(),
'how_to_apply' => array(),
'token' => array(),
'is_public' => array(),
'is_activated' => array(),
'email' => array(),
'expires_at' => array(),
'created_at' => array(),
'updated_at' => array(),
);
}
public function getFieldsNew()
{
return array(
'id' => array(),
'category_id' => array(),
'type' => array(),
'company' => array(),
'logo' => array(),
'url' => array(),
'position' => array(),
'location' => array(),
'description' => array(),
'how_to_apply' => array(),
'token' => array(),
'is_public' => array(),
'is_activated' => array(),
'email' => array(),
'expires_at' => array(),
'created_at' => array(),
'updated_at' => array(),
);
}
/**
* Gets the form class name.
*
* @return string The form class name
*/
public function getFormClass()
{
return 'BackendJobeetJobForm';
}
public function hasFilterForm()
{
return true;
}
/**
* Gets the filter form class name
*
* @return string The filter form class name associated with this generator
*/
public function getFilterFormClass()
{
return 'JobeetJobFormFilter';
}
public function getPagerClass()
{
return 'sfPropelPager';
}
public function getPagerMaxPerPage()
{
return 10;
}
public function getDefaultSort()
{
return array('expires_at', 'desc');
}
public function getPeerMethod()
{
return 'doSelectJoinJobeetCategory';
}
public function getPeerCountMethod()
{
return 'doCount';
}
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment