Skip to content

Commit

Permalink
Merge branch 'feature/job-options' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
cbleek committed Mar 3, 2015
2 parents 3c53919 + 43f0b9c commit 410e410
Show file tree
Hide file tree
Showing 16 changed files with 469 additions and 93 deletions.
4 changes: 2 additions & 2 deletions module/Applications/config/module.config.php
Expand Up @@ -69,10 +69,10 @@

'service_manager' => array(
'invokables' => array(
'Applications\Options\ModuleOptions' => 'Applications\Options\ModuleOptions'
'Applications/Options/ModuleOptions' => 'Applications\Options\ModuleOptions'
),
'factories' => array(
'Applications\Options' => 'Applications\Factory\ModuleOptionsFactory',
'Applications/Options' => 'Applications\Factory\ModuleOptionsFactory',
'ApplicationRepository' => 'Applications\Repository\Service\ApplicationRepositoryFactory',
'ApplicationMapper' => 'Applications\Repository\Service\ApplicationMapperFactory',
'EducationMapper' => 'Applications\Repository\Service\EducationMapperFactory',
Expand Down
13 changes: 10 additions & 3 deletions module/Applications/src/Applications/Form/AttachmentsFactory.php
Expand Up @@ -11,7 +11,7 @@
namespace Applications\Form;

use Core\Form\FileUploadFactory;
use Applications\Options\ModuleOptions;
use Zend\Stdlib\AbstractOptions;

/**
* Factors a file upload form to attach files to an application.
Expand Down Expand Up @@ -48,14 +48,21 @@ class AttachmentsFactory extends FileUploadFactory
*/
protected $multiple = true;

/**
* use abstract options defined in "Applications/Options"
*
* @var string
*/
protected $options="Applications/Options";


/**
* configure the formular for uploading attachments
*
* @param \Core\Form\Form $form
* @param ModuleOptions $options
* @param AbstractOptions $options
*/
protected function configureForm($form , ModuleOptions $options)
protected function configureForm($form , AbstractOptions $options)
{

/** @var $form \Core\Form\Form */
Expand Down
19 changes: 16 additions & 3 deletions module/Auth/src/Auth/Form/UserImageFactory.php
Expand Up @@ -10,7 +10,7 @@
/** */
namespace Auth\Form;

use Applications\Options\ModuleOptions;
use Zend\Stdlib\AbstractOptions;
use Core\Form\FileUploadFactory;
use Auth\Entity\UserImage;
/**
Expand All @@ -23,8 +23,21 @@ class UserImageFactory extends FileUploadFactory
protected $fileName = 'image';
protected $fileEntityClass = 'Auth\Entity\UserImage';
protected $configKey = 'user_image';

protected function configureForm($form, ModuleOptions $options)

/**
* Use abstract options defined in "Applications/Options"
*
* @var string
*/
protected $options = 'Applications/Options';

/**
* Configure the file upload formular with Applications/Options
*
* @param \Core\Form\Form $form
* @param AbstractOptions $options
*/
protected function configureForm($form, AbstractOptions $options)
{

$form->get($this->fileName)->setViewHelper('FormImageUpload')
Expand Down
19 changes: 14 additions & 5 deletions module/Core/src/Core/Form/FileUploadFactory.php
Expand Up @@ -17,6 +17,7 @@
use Auth\Entity\AnonymousUser;
use Core\Entity\Hydrator\FileCollectionUploadHydrator;
use Applications\Options\ModuleOptions;
use Zend\Stdlib\AbstractOptions;


/**
Expand Down Expand Up @@ -68,15 +69,23 @@ class FileUploadFactory implements FactoryInterface
protected $config;

/**
* The configuration from the FileUploadFactory configuration
* Optional Module Options. eg. "Jobs/Options" or "Applications/Options"
*
* @var string|null
*/
protected $options;

/**
* The configuration from the FileUploadFactory configuration
*/
public function createService(ServiceLocatorInterface $serviceLocator)
{
/* @var $serviceLocator \Zend\Form\FormElementManager */
$service = $serviceLocator->getServiceLocator();
$options = $service->get('Applications\Options');

$options=null;
if ($this->options){
$options = $service->get($this->options);
}

// Retrieve configuration.
if ($this->configKey) {
Expand Down Expand Up @@ -143,9 +152,9 @@ public function createService(ServiceLocatorInterface $serviceLocator)
* Configures the factored form.
*
* @param \Core\Form\Form $form
* @param ModuleOptions $options
* @param AbstractOptions $options
*/
protected function configureForm($form, ModuleOptions $options)
protected function configureForm($form, AbstractOptions $options)
{ }

}
20 changes: 0 additions & 20 deletions module/Jobs/build.xml

This file was deleted.

16 changes: 0 additions & 16 deletions module/Jobs/config/build.properties.dist
Expand Up @@ -3,19 +3,3 @@
*/
YAWIK.bundled=true

/**
* Email
**/
multiposting.approvalMail=jobs@yawik.org

/**
* Rest-Server, that imports multipostings
*/
multiposting.target.uri=
multiposting.target.user=
multiposting.target.pw=

/**
* default logo, which is displayed in job openings, if a company has no own logo
*/
default_logo=/Jobs/images/yawik-small.jpg
1 change: 1 addition & 0 deletions module/Jobs/config/module.config.php
Expand Up @@ -144,6 +144,7 @@
'Jobs/Listener/Publisher' => 'Jobs\Listener\Publisher',
),
'factories' => array(
'Jobs/Options' => 'Jobs\Factory\ModuleOptionsFactory',
'Jobs\Form\Hydrator\OrganizationNameHydrator' => '\Jobs\Form\Hydrator\SLFactory\OrganizationNameHydratorSLFactory',
'Jobs/JsonJobsEntityHydrator' => 'Jobs\Entity\Hydrator\JsonJobsEntityHydratorFactory',
'Jobs/RestClient' => 'Jobs\Factory\Service\JobsPublisherFactory',
Expand Down
34 changes: 34 additions & 0 deletions module/Jobs/config/module.jobs.options.local.php.dist
@@ -0,0 +1,34 @@
<?php

$options = array(

/**
* If not set, the email address of the default user is used
* @see Jobs\Options\ModulesOptionFactory
*/
'multipostingApprovalMail' => '',

/**
* If a target Uri is set, a rest Request is sent to this target in case
* a job posting was accepted.
*/
'multipostingTargetUri' => '',

/**
* default Logo, if a company has no logo.
*/
'default_logo' => '/Jobs/images/yawik-small.jpg',

/**
* Maximum size in bytes of a company Logo
*/
'companyLogoMaxSize' => 100000,

/**
* Allowed Mime-Types for company Logos
*/
'companyLogoMimeType' => array("image")

);

return array('jobs_options' => $options);
18 changes: 1 addition & 17 deletions module/Jobs/config/module.jobs.portals.config.local.php.dist
Expand Up @@ -40,24 +40,8 @@ return array(
)
),
),
'approvalMail' => '%%approvalMail%%',
'target' => array(
'restServer' => array(
'uri' => '%%multiposting.target.uri%%',
'PHP_AUTH_USER' => '%%multiposting.target.user%%',
'PHP_AUTH_PW' => '%%multiposting.target.pw%%'
)
),
),
'Jobs' => array(
'default_logo' => '%%default_logo%%'
),
),

'view_manager' => array(
// Define the discriptions for the channels
'template_map' => array(

),
),

);
39 changes: 39 additions & 0 deletions module/Jobs/src/Jobs/Factory/ModuleOptionsFactory.php
@@ -0,0 +1,39 @@
<?php
/**
* YAWIK
*
* @filesource
* @copyright (c) 2013-2015 Cross Solution (http://cross-solution.de)
* @author cbleek
* @license AGPLv3
*/

namespace Jobs\Factory;

use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;
use Jobs\Options\ModuleOptions;

/**
* Class ModuleOptionsFactory
* @package Jobs\Factory
*/
class ModuleOptionsFactory implements FactoryInterface
{
/**
* {@inheritDoc}
*
* @param ServiceLocatorInterface $serviceLocator
* @return ModuleOptions
*/
public function createService(ServiceLocatorInterface $serviceLocator)
{
$config = $serviceLocator->get('Config');

if (isset($config['jobs_options']) && '' == trim($config['jobs_options']['multipostingApprovalMail'])){
$config['jobs_options']['multipostingApprovalMail'] = $config['Auth']['default_user']['email'];
}

return new ModuleOptions(isset($config['jobs_options']) ? $config['jobs_options'] : array());
}
}
49 changes: 31 additions & 18 deletions module/Jobs/src/Jobs/Listener/StatusChanged.php
Expand Up @@ -11,7 +11,7 @@
namespace Jobs\Listener;

use Auth\AuthenticationService;
use Zend\Mvc\Service\ControllerPluginManagerFactory;
use Zend\Mvc\Controller\PluginManager;
use Zend\ServiceManager\ServiceManagerAwareInterface;
use Zend\ServiceManager\ServiceManager;
use Jobs\Listener\Events\JobEvent;
Expand All @@ -23,6 +23,9 @@
*/
class StatusChanged implements ServiceManagerAwareInterface
{
/**
* @var ServiceManager
*/
protected $serviceManager;

public function setServiceManager(ServiceManager $serviceManager) {
Expand All @@ -36,43 +39,53 @@ public function getServiceManager() {

/**
* allows an event attachment just by class
*
* @param JobEvent $e
*/
public function __invoke(JobEvent $e)
{
/** @var ServiceManager $serviceManager */
$serviceManager = $this->getServiceManager();
$serviceManager = $this->getServiceManager();

/** @var \Jobs\Options\ModuleOptions $options */
$options = $serviceManager->get('Jobs/Options');

/**
* the sender of the mail is the currently logged in user
*/
/** @var AuthenticationService $authService */
$authService = $serviceManager->get('authenticationservice');
$userEmail = $authService->getUser()->info->email;
$userName = $authService->getUser()->info->displayName;
$userEmail = $authService->getUser()->getInfo()->email;
$userName = $authService->getUser()->getInfo()->displayName;
$job = $e->getJobEntity();

/** @var ControllerPluginManagerFactory $controllerPluginManager */
/** @var PluginManager $controllerPluginManager */
$controllerPluginManager = $serviceManager->get('controllerPluginManager');
$urlPlugin = $controllerPluginManager->get('url');
$previewLink = $urlPlugin->fromRoute('lang/jobs/approval', array(), array('force_canonical' => True, 'query' => array('id' => $job->id)));

/**
* the receiver of the mail is the "admin" of the running yawik installation
*/
$config = $serviceManager->get('config');
$email = $config['multiposting']['approvalMail'];
$mailService = $serviceManager->get('Core/MailService');
$mail = $mailService->get('htmltemplate');
$mail->job = $job;
$mail->link = $previewLink;
/** @var \Zend\Mvc\Controller\Plugin\Url $urlPlugin */
$urlPlugin = $controllerPluginManager->get('url');

$previewLink = $urlPlugin->fromRoute('lang/jobs/approval', array(),
array('force_canonical' => True,
'query' => array('id' => $job->getId())));


/** @var \Core\Mail\MailService $mailService */
$mailService = $serviceManager->get('Core/MailService');

/** @var \Core\Mail\HTMLTemplateMessage $mail */
$mail = $mailService->get('htmltemplate');

$mail->setVariable('job', $job);
$mail->setVariable('link' ,$previewLink);
$mail->setTemplate('mail/jobCreatedMail');
$mail->setSubject( /*translate*/ 'A New Job was created');
$mail->setTo($email);
$mail->setFrom($userEmail, $userName);
$mail->setTo($options->getMultipostingApprovalMail());

$mailService->send($mail);
return;

return;
}

}

0 comments on commit 410e410

Please sign in to comment.