first commit
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
<?php
|
||||
|
||||
class appOnlineFilesBackendActions extends autoAppOnlineFilesBackendActions
|
||||
{
|
||||
/**
|
||||
* Walidacja zapisy plików.
|
||||
*/
|
||||
public function validateEdit()
|
||||
{
|
||||
/**
|
||||
* @var sfWebRequest $request
|
||||
*/
|
||||
$request = $this->getRequest();
|
||||
|
||||
if ($request->getMethod() == sfRequest::POST)
|
||||
{
|
||||
$i18n = $this->getContext()->getI18N();
|
||||
|
||||
$file = $request->getFile('online_files[file]');
|
||||
|
||||
if (!$request->getParameter('online_files[name]'))
|
||||
{
|
||||
$request->setError('online_files{name}', $i18n->__('Proszę uzupełnić pole.'));
|
||||
}
|
||||
|
||||
$fileValidator = new sfFileValidator();
|
||||
$fileValidator->initialize($this->getContext(), array('required' => !$request->getParameter('id')));
|
||||
|
||||
if (!$fileValidator->execute($file, $error))
|
||||
{
|
||||
$request->setError('online_files{filename}', $error);
|
||||
}
|
||||
elseif (isset($file['name']) && !empty($file['name']))
|
||||
{
|
||||
$c = new Criteria();
|
||||
$c->add(OnlineFilesPeer::FILENAME, $file['name']);
|
||||
$c->add(OnlineFilesPeer::PRODUCT_ID, $request->getParameter('product_id'));
|
||||
|
||||
if (OnlineFilesPeer::doCount($c))
|
||||
{
|
||||
$request->setError('online_files{filename}', $i18n->__('Podany plik jest już przypisany do produktu.'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return !$request->hasErrors();
|
||||
}
|
||||
|
||||
/**
|
||||
* Akcja do pobirania pliku w panelu.
|
||||
*/
|
||||
public function executeDownload()
|
||||
{
|
||||
$id = $this->getRequestParameter('id');
|
||||
|
||||
$onlineFile = OnlineFilesPeer::retrieveByPK($id);
|
||||
|
||||
if (null !== $onlineFile)
|
||||
{
|
||||
$file = sfConfig::get('sf_data_dir') . '/online-files/' . $onlineFile->getProductId() . '/' . $onlineFile->getFilename();
|
||||
|
||||
$handle = fopen($file, 'rb');
|
||||
|
||||
if ($handle)
|
||||
{
|
||||
$this->setLayout(false);
|
||||
$response = $this->getContext()->getResponse();
|
||||
$response->setContentType("application/octet-stream");
|
||||
$response->setHttpHeader('Content-Disposition', 'attachment; filename="' . $onlineFile->getFilename() . '"');
|
||||
$response->sendHttpHeaders();
|
||||
|
||||
while (!feof($handle))
|
||||
{
|
||||
echo fread($handle, 8192);
|
||||
ob_flush();
|
||||
flush();
|
||||
}
|
||||
|
||||
fclose($handle);
|
||||
}
|
||||
else
|
||||
{
|
||||
return $this->forward404();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return $this->forward404();
|
||||
}
|
||||
|
||||
throw new sfStopException();
|
||||
}
|
||||
|
||||
protected function updateOnlineFilesFromRequest()
|
||||
{
|
||||
parent::updateOnlineFilesFromRequest();
|
||||
|
||||
/**
|
||||
* @var sfWebRequest $request
|
||||
*/
|
||||
$request = $this->getRequest();
|
||||
|
||||
if ($request->getFileError('online_files[file]') == UPLOAD_ERR_OK)
|
||||
{
|
||||
$filepath = $this->online_files->getFilePath();
|
||||
|
||||
$this->online_files->setFilename($request->getFileName('online_files[file]'));
|
||||
$this->online_files->setFilesize($request->getFileSize('online_files[file]'));
|
||||
|
||||
if ($request->moveFile('online_files[file]', $this->online_files->getFilePath()) && !$this->online_files->isNew())
|
||||
{
|
||||
unlink($filepath);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
|
||||
class appOnlineFilesBackendComponents extends autoAppOnlineFilesBackendComponents
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
generator:
|
||||
class: stAdminGenerator
|
||||
param:
|
||||
model_class: OnlineFiles
|
||||
theme: simple
|
||||
label: "Pliki online"
|
||||
route: "@appOnlineFilesBackend"
|
||||
icon: "stProduct"
|
||||
|
||||
list:
|
||||
title: Pliki online
|
||||
display: [=name, _filename, _filesize]
|
||||
fields:
|
||||
name: {name: Nazwa}
|
||||
filename: {name: Nazwa pliku}
|
||||
filesize: {name: Rozmiar}
|
||||
forward_parameters: [product_id, category_id]
|
||||
build_options:
|
||||
related_id: forward_parameters.product_id
|
||||
related_class: Product
|
||||
actions:
|
||||
_create: {name: Dodaj}
|
||||
object_actions:
|
||||
_edit: -
|
||||
_delete: -
|
||||
|
||||
edit:
|
||||
display:
|
||||
"NONE": [name, _filename]
|
||||
fields:
|
||||
name: {name: Nazwa}
|
||||
filename: {name: Załącz/Zmień plik}
|
||||
forward_parameters: [product_id, category_id]
|
||||
build_options:
|
||||
related_id: forward_parameters.product_id
|
||||
related_class: Product
|
||||
actions:
|
||||
_delete: {name: Usuń}
|
||||
_list: {name: Lista plików}
|
||||
_save: {name: Zapisz}
|
||||
_save_and_add: {name: Zapisz i dodaj nowy}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
stAdminGeneratorHelper::generate('stProduct');
|
||||
|
||||
class appOnlineFilesBackendBreadcrumbsBuilder extends autoAppOnlineFilesBackendBreadcrumbsBuilder
|
||||
{
|
||||
/**
|
||||
* Builder "okruszków chleba" modułu stProduct
|
||||
*
|
||||
* @var stProductBreadcrumbsBuilder
|
||||
*/
|
||||
private $productBreadcrumbsBuilder;
|
||||
|
||||
public function initialize()
|
||||
{
|
||||
parent::initialize();
|
||||
|
||||
$this->productBreadcrumbsBuilder = new stProductBreadcrumbsBuilder($this->context, $this->breadcrumbs, $this->relatedObject, $this->forwardParameters);
|
||||
}
|
||||
|
||||
public function getDefaultBreadcrumbs()
|
||||
{
|
||||
return $this->productBreadcrumbsBuilder->getEditBreadcrumbs($this->relatedObject);
|
||||
}
|
||||
|
||||
public function getEditBreadcrumbs(OnlineFiles $online_files)
|
||||
{
|
||||
$this->getDefaultBreadcrumbs()->add($this->appTitle, $this->appRoute . '?product_id=' . $this->forwardParameters['product_id']);
|
||||
|
||||
return parent::getEditBreadcrumbs($online_files);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
/**
|
||||
* @var OnlineFiles $online_files
|
||||
*/
|
||||
|
||||
if ($type == "list")
|
||||
{
|
||||
echo st_link_to($online_files->getFilename(), '@appOnlineCodesBackend?action=download&id=' . $online_files->getId(), array(
|
||||
'target' => '_blank'
|
||||
));
|
||||
}
|
||||
else
|
||||
{
|
||||
echo input_file_tag('online_files[file]');
|
||||
if ($online_files->getFilename())
|
||||
{
|
||||
$link = st_link_to(__('Pobierz') . ' ' . $online_files->getFilename(), '@appOnlineCodesBackend?action=download&id=' . $online_files->getId(), array(
|
||||
'target' => '_blank'
|
||||
));
|
||||
|
||||
echo content_tag('p', $link, array('style' => 'margin-top: 10px'));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<?php echo stPrice::round($online_files->getFilesize() / (1024 * 1024), 1) ?> MB
|
||||
@@ -0,0 +1,3 @@
|
||||
<?php
|
||||
|
||||
echo st_get_partial('stProduct/header', array('related_object' => $related_object, 'title' => $title, 'forward_parameters' => $forward_parameters));
|
||||
@@ -0,0 +1,3 @@
|
||||
<?php
|
||||
|
||||
echo st_get_partial('stProduct/edit_menu', array('related_object' => $related_object, 'forward_parameters' => $forward_parameters));
|
||||
Reference in New Issue
Block a user