intermediate commit
This commit is contained in:
parent
e16e72dcc1
commit
d31a4757ff
@ -78,7 +78,7 @@ return [
|
||||
'components' => [
|
||||
'request' => [
|
||||
'csrfParam' => '_csrf-backend',
|
||||
'baseUrl' => '/secure',
|
||||
'baseUrl' => '', // /secure
|
||||
'parsers' => [
|
||||
'application/json' => 'yii\web\JsonParser',
|
||||
'text/xml' => 'yii/web/XmlParser',
|
||||
|
@ -2,6 +2,10 @@
|
||||
|
||||
namespace backend\modules\document\controllers;
|
||||
|
||||
use common\models\DocumentField;
|
||||
use PhpOffice\PhpWord\PhpWord;
|
||||
use PhpOffice\PhpWord\Shared\ZipArchive;
|
||||
use PhpOffice\PhpWord\TemplateProcessor;
|
||||
use Yii;
|
||||
use backend\modules\document\models\Document;
|
||||
use backend\modules\document\models\DocumentSearch;
|
||||
@ -10,6 +14,8 @@ use yii\web\Controller;
|
||||
use yii\web\NotFoundHttpException;
|
||||
use yii\filters\VerbFilter;
|
||||
|
||||
use common\services\DocumentService;
|
||||
|
||||
/**
|
||||
* DocumentController implements the CRUD actions for Document model.
|
||||
*/
|
||||
@ -138,4 +144,70 @@ class DocumentController extends Controller
|
||||
|
||||
throw new NotFoundHttpException('The requested page does not exist.');
|
||||
}
|
||||
|
||||
|
||||
public function actionCreateDocument($id)
|
||||
{
|
||||
$model = Document::findOne($id);
|
||||
|
||||
$file_title = $model->title;
|
||||
$template_title = $model->template->template_file_name;
|
||||
|
||||
|
||||
|
||||
$fieldaValueArr = $model->documentFieldValues;
|
||||
|
||||
foreach ($fieldaValueArr as $tmp) {
|
||||
echo $tmp['value'];
|
||||
}
|
||||
|
||||
die();
|
||||
|
||||
|
||||
// var_dump($file_title);
|
||||
// var_dump($template_title);
|
||||
// var_dump($fieldsArray);
|
||||
// die;
|
||||
// //, $template_name, [] $fields
|
||||
|
||||
|
||||
$documentService = new DocumentService($file_title, $template_title, $fieldsArray);
|
||||
$documentService->save();
|
||||
|
||||
|
||||
// $outputFile = 'review_full222.docx';
|
||||
//
|
||||
//
|
||||
// $PhpWord = new \PhpOffice\PhpWord\PhpWord();
|
||||
// $document = $PhpWord->loadTemplate('/var/www/guild.loc/backend/web/upload/templates/tets template.docx'); //шаблон
|
||||
// $document->setValue('FIO', '8888888888' );
|
||||
// $document->setValue('INN', '999999999999999999');
|
||||
//
|
||||
// $document->saveAs($outputFile);
|
||||
//
|
||||
// // Имя скачиваемого файла
|
||||
// $downloadFile = $outputFile;
|
||||
//
|
||||
// // Контент-тип означающий скачивание
|
||||
// header("Content-Type: application/octet-stream");
|
||||
//
|
||||
// // Размер в байтах
|
||||
// header("Accept-Ranges: bytes");
|
||||
//
|
||||
// // Размер файла
|
||||
// header("Content-Length: ".filesize($downloadFile));
|
||||
//
|
||||
// // Расположение скачиваемого файла
|
||||
// header("Content-Disposition: attachment; filename=".$downloadFile);
|
||||
//
|
||||
// // Прочитать файл
|
||||
// readfile($downloadFile);
|
||||
//
|
||||
//
|
||||
//
|
||||
// unlink($outputFile);
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
namespace backend\modules\document\controllers;
|
||||
|
||||
use common\helpers\TransliteratorHelper;
|
||||
use Yii;
|
||||
use backend\modules\document\models\DocumentField;
|
||||
use backend\modules\document\models\DocumentFieldSearch;
|
||||
|
@ -83,22 +83,9 @@ class TemplateController extends Controller
|
||||
{
|
||||
$model = new Template();
|
||||
|
||||
if ($model->load(Yii::$app->request->post())) {
|
||||
$model->template = UploadedFile::getInstance($model, 'template');
|
||||
|
||||
if (!empty($model->template)) {
|
||||
$pathToTemplates = Yii::getAlias('@templates');
|
||||
$model->template_file_name = date('mdyHis') . '_' . $model->template->name;
|
||||
|
||||
if ($model->save()) {
|
||||
if (FileHelper::createDirectory($pathToTemplates, $mode = 0775, $recursive = true)) {
|
||||
$model->template->saveAs($pathToTemplates . '/' . $model->template_file_name);
|
||||
}
|
||||
if ($model->load(Yii::$app->request->post()) && $model->save()) {
|
||||
return $this->redirect(['template-document-field/create', 'template_id' => $model->id]);
|
||||
}
|
||||
return $this->render('create', ['model' => $model]);
|
||||
}
|
||||
}
|
||||
|
||||
return $this->render('create', [
|
||||
'model' => $model,
|
||||
@ -115,34 +102,11 @@ class TemplateController extends Controller
|
||||
public function actionUpdate($id)
|
||||
{
|
||||
$model = $this->findModel($id);
|
||||
// $pathToFile = Yii::getAlias('@templates') . '/' . $model->template_file_name;
|
||||
|
||||
// if ($model->load(Yii::$app->request->post())) {
|
||||
// $template = UploadedFile::getInstance($model, 'template');
|
||||
//
|
||||
// if (!empty($template)) {
|
||||
// $path = Yii::getAlias('@frontend') . '/web/upload/documents/templates';
|
||||
//
|
||||
// $model->template = $template;
|
||||
// $model->template_file_name = $model->template->name;
|
||||
// $model->template_path = $path . '/' . $model->template->name;
|
||||
//
|
||||
// if (!$model->template->saveAs($path . '/' . $model->template->name)) {
|
||||
// return $this->render('update', [
|
||||
// 'model' => $model,
|
||||
// ]);
|
||||
// }
|
||||
// }
|
||||
// if ($model->save()) {
|
||||
// return $this->redirect(['view', 'id' => $model->id]);
|
||||
// }
|
||||
// }
|
||||
|
||||
if ($model->load(Yii::$app->request->post()) && $model->save()) {
|
||||
return $this->redirect(['view', 'id' => $model->id]);
|
||||
}
|
||||
|
||||
// $model->template = UploadedFile::getInstance($model, $pathToFile); // file($pathToFile);
|
||||
return $this->render('update', [
|
||||
'model' => $model,
|
||||
]);
|
||||
|
@ -18,7 +18,7 @@ class DocumentFieldSearch extends DocumentField
|
||||
{
|
||||
return [
|
||||
[['id'], 'integer'],
|
||||
[['title'], 'safe'],
|
||||
[['title', 'field_template'], 'safe'],
|
||||
];
|
||||
}
|
||||
|
||||
@ -61,7 +61,8 @@ class DocumentFieldSearch extends DocumentField
|
||||
'id' => $this->id,
|
||||
]);
|
||||
|
||||
$query->andFilterWhere(['like', 'title', $this->title]);
|
||||
$query->andFilterWhere(['like', 'title', $this->title])
|
||||
->andFilterWhere(['like', 'field_template', $this->field_template]);
|
||||
|
||||
return $dataProvider;
|
||||
}
|
||||
|
@ -19,6 +19,8 @@ use yii\widgets\ActiveForm;
|
||||
|
||||
<?= $form->field($model, 'title') ?>
|
||||
|
||||
<?= $form->field($model, 'field_template') ?>
|
||||
|
||||
<div class="form-group">
|
||||
<?= Html::submitButton('Search', ['class' => 'btn btn-primary']) ?>
|
||||
<?= Html::resetButton('Reset', ['class' => 'btn btn-default']) ?>
|
||||
|
@ -12,8 +12,10 @@ $this->params['breadcrumbs'][] = $this->title;
|
||||
?>
|
||||
<div class="document-field-index">
|
||||
|
||||
<?php // echo $this->render('_search', ['model' => $searchModel]); ?>
|
||||
|
||||
<p>
|
||||
<?= Html::a('Создать поле документа', ['create'], ['class' => 'btn btn-success']) ?>
|
||||
<?= Html::a('Создать новое поле', ['create'], ['class' => 'btn btn-success']) ?>
|
||||
</p>
|
||||
|
||||
<?= GridView::widget([
|
||||
@ -23,6 +25,12 @@ $this->params['breadcrumbs'][] = $this->title;
|
||||
['class' => 'yii\grid\SerialColumn'],
|
||||
|
||||
'title',
|
||||
[
|
||||
'attribute' => 'field_template',
|
||||
'value' => function($model) {
|
||||
return '${' . $model->field_template . '}';
|
||||
},
|
||||
],
|
||||
|
||||
['class' => 'yii\grid\ActionColumn'],
|
||||
],
|
||||
|
@ -30,6 +30,10 @@ $this->params['breadcrumbs'][] = $this->title;
|
||||
'attributes' => [
|
||||
'id',
|
||||
'title',
|
||||
[
|
||||
'attribute' => 'field_template',
|
||||
'value' => '${' . $model->field_template . '}',
|
||||
],
|
||||
],
|
||||
]) ?>
|
||||
|
||||
|
@ -91,4 +91,12 @@ $this->params['breadcrumbs'][] = $this->title;
|
||||
) ?>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<?= Html::a(
|
||||
'Файл',
|
||||
['document/create-document', 'id' => $model->id],
|
||||
['class' => 'btn btn-primary']
|
||||
) ?>
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
@ -1,6 +1,5 @@
|
||||
<?php
|
||||
|
||||
use kartik\file\FileInput;
|
||||
use mihaildev\elfinder\InputFile;
|
||||
use yii\helpers\Html;
|
||||
use yii\widgets\ActiveForm;
|
||||
@ -17,12 +16,20 @@ use yii\widgets\ActiveForm;
|
||||
|
||||
<?= $form->field($model, 'title')->textInput(['maxlength' => true]) ?>
|
||||
|
||||
<?= $form->field($model, 'template')->widget(FileInput::classname(), [
|
||||
'options' => ['accept' => 'text/*'],
|
||||
'pluginOptions' => [
|
||||
'allowedFileExtensions'=>['doc','docx','txt'],'showUpload' => true
|
||||
],
|
||||
]); ?>
|
||||
<?= InputFile::widget([
|
||||
'language' => 'ru',
|
||||
'controller' => 'elfinder',
|
||||
// вставляем название контроллера, по умолчанию равен elfinder
|
||||
//'filter' => ['image', 'application/zip', 'application/csv', 'application/pdf', 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'],
|
||||
// фильтр файлов, можно задать массив фильтров https://github.com/Studio-42/elFinder/wiki/Client-con..
|
||||
'name' => 'Template[template_file_name]',
|
||||
'id' => 'template-doc',
|
||||
'template' => '<label>Шаблон</label><div class="input-group">{input}<span class="span-btn">{button}</span></div>',
|
||||
'options' => ['class' => 'form-control', 'maxlength' => '255'],
|
||||
'buttonOptions' => ['class' => 'btn btn-primary'],
|
||||
'value' => $model->template_file_name,
|
||||
'buttonName' => 'Выбрать шаблон',
|
||||
]);?>
|
||||
|
||||
<div class="form-group">
|
||||
<?= Html::submitButton('Сохранить', ['class' => 'btn btn-success']) ?>
|
||||
|
@ -1,33 +0,0 @@
|
||||
<?php
|
||||
|
||||
use kartik\file\FileInput;
|
||||
use mihaildev\elfinder\InputFile;
|
||||
use yii\helpers\Html;
|
||||
use yii\widgets\ActiveForm;
|
||||
|
||||
/* @var $this yii\web\View */
|
||||
/* @var $model backend\modules\document\models\Template */
|
||||
/* @var $form yii\widgets\ActiveForm */
|
||||
?>
|
||||
|
||||
<div class="template-form">
|
||||
|
||||
<?php $form = ActiveForm::begin([
|
||||
'options' => ['enctype'=>'multipart/form-data']]); ?>
|
||||
|
||||
<?= $form->field($model, 'title')->textInput(['maxlength' => true]) ?>
|
||||
|
||||
<?= $form->field($model, 'template')->widget(FileInput::classname(), [
|
||||
'options' => ['accept' => 'text/*'],
|
||||
'pluginOptions' => [
|
||||
'allowedFileExtensions'=>['doc','docx','txt'],'showUpload' => true
|
||||
],
|
||||
]); ?>
|
||||
|
||||
<div class="form-group">
|
||||
<?= Html::submitButton('Сохранить', ['class' => 'btn btn-success']) ?>
|
||||
</div>
|
||||
|
||||
<?php ActiveForm::end(); ?>
|
||||
|
||||
</div>
|
@ -5,10 +5,18 @@ use yii\helpers\Html;
|
||||
/* @var $this yii\web\View */
|
||||
/* @var $model backend\modules\document\models\Template */
|
||||
|
||||
$this->title = 'Изменить шаблон: ' . $model->title;
|
||||
$this->title = 'Изменить шаблон: ' . cut_title($model->title);
|
||||
$this->params['breadcrumbs'][] = ['label' => 'Templates', 'url' => ['index']];
|
||||
$this->params['breadcrumbs'][] = ['label' => $model->title, 'url' => ['view', 'id' => $model->id]];
|
||||
$this->params['breadcrumbs'][] = 'Update';
|
||||
|
||||
function cut_title($str)
|
||||
{
|
||||
if(strlen($str) > 35){
|
||||
return mb_substr($str, 0, 25, 'UTF-8') . '...';
|
||||
}
|
||||
return $str;
|
||||
}
|
||||
?>
|
||||
<div class="template-update">
|
||||
|
||||
|
@ -11,11 +11,20 @@ use yii\grid\GridView;
|
||||
/* @var $templateFieldDataProvider yii\data\ActiveDataProvider */
|
||||
/* @var $model backend\modules\document\models\Template */
|
||||
|
||||
$this->title = $model->title;
|
||||
$this->title = cut_title($model->title);
|
||||
$this->params['breadcrumbs'][] = ['label' => 'Templates', 'url' => ['index']];
|
||||
$this->params['breadcrumbs'][] = $this->title;
|
||||
YiiAsset::register($this);
|
||||
|
||||
function cut_title($str)
|
||||
{
|
||||
if(strlen($str) > 35){
|
||||
return mb_substr($str, 0, 35, 'UTF-8') . '...';
|
||||
}
|
||||
return $str;
|
||||
}
|
||||
?>
|
||||
|
||||
<div class="template-view">
|
||||
|
||||
<p>
|
||||
@ -35,34 +44,19 @@ YiiAsset::register($this);
|
||||
|
||||
'attributes' => [
|
||||
'id',
|
||||
[
|
||||
'attribute'=>'title',
|
||||
'format'=>'raw',
|
||||
'value' => function($model){
|
||||
return $model->title . Html::a(
|
||||
'<i class="glyphicon glyphicon-pencil"></i>', ['update', 'id' => $model->id],
|
||||
[
|
||||
'title' => 'Update',
|
||||
'class' => 'pull-right detail-button',
|
||||
]
|
||||
);
|
||||
}
|
||||
],
|
||||
'title',
|
||||
'created_at',
|
||||
'updated_at',
|
||||
|
||||
[
|
||||
'label'=>'template_file_name',
|
||||
'format'=>'raw',
|
||||
'value' => function($model){
|
||||
|
||||
return $model->template_file_name . Html::a('<i class="glyphicon glyphicon-pencil"></i>', Url::to(['actualizar', 'id' => $model->id]), [
|
||||
return $model->template_file_name . Html::a(' <i class="glyphicon glyphicon-pencil"></i>',
|
||||
Url::to(['actualizar', 'id' => $model->id]), [
|
||||
'title' => 'Actualizar',
|
||||
// 'class' => 'pull-right detail-button',
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
]
|
||||
],
|
||||
]) ?>
|
||||
@ -95,9 +89,13 @@ YiiAsset::register($this);
|
||||
|
||||
[
|
||||
'attribute' => 'field_id',
|
||||
'filter' => DocumentField::find()->select(['title', 'id'])->indexBy('id')->column(),
|
||||
'value' => 'field.title',
|
||||
],
|
||||
[
|
||||
'attribute' => 'field.field_template',
|
||||
'value' => 'field.field_template',
|
||||
],
|
||||
|
||||
[
|
||||
'class' => 'yii\grid\ActionColumn',
|
||||
'template' => '{view}{delete}',
|
||||
|
@ -4,6 +4,7 @@ use backend\modules\questionnaire\models\Questionnaire;
|
||||
use backend\modules\questionnaire\models\QuestionType;
|
||||
use common\helpers\StatusHelper;
|
||||
use common\helpers\TimeHelper;
|
||||
use common\helpers\TransliteratorHelper;
|
||||
use yii\helpers\Html;
|
||||
use yii\grid\GridView;
|
||||
|
||||
|
@ -3,6 +3,7 @@
|
||||
use backend\modules\questionnaire\models\QuestionnaireCategory;
|
||||
use common\helpers\StatusHelper;
|
||||
use common\helpers\TimeHelper;
|
||||
use common\helpers\TransliteratorHelper;
|
||||
use yii\helpers\ArrayHelper;
|
||||
use yii\helpers\Html;
|
||||
use yii\grid\GridView;
|
||||
|
@ -27,7 +27,7 @@
|
||||
['label' => 'Должность', 'icon' => 'spotify', 'url' => ['/settings/position'], 'active' => \Yii::$app->controller->id == 'position'],
|
||||
['label' => 'Навыки', 'icon' => 'flask', 'url' => ['/settings/skill'], 'active' => \Yii::$app->controller->id == 'skill'],
|
||||
],
|
||||
'visible' => Yii::$app->user->can('confidential_information')
|
||||
//TODO 'visible' => Yii::$app->user->can('confidential_information')
|
||||
],
|
||||
[
|
||||
'label' => 'Профили', 'icon' => 'address-book-o', 'url' => '#', 'active' => \Yii::$app->controller->id == 'user-card',
|
||||
@ -39,7 +39,7 @@
|
||||
['label' => 'Менеджеры', 'icon' => 'user-circle-o', 'url' => ['/employee/manager'], 'active' => \Yii::$app->controller->id == 'manager'],
|
||||
['label' => 'Работники', 'icon' => 'user', 'url' => ['/employee/manager-employee'], 'active' => \Yii::$app->controller->id == 'manager-employee'],
|
||||
],
|
||||
'visible' => Yii::$app->user->can('confidential_information')
|
||||
//TODO 'visible' => Yii::$app->user->can('confidential_information')
|
||||
],
|
||||
[
|
||||
'label' => 'Документы', 'icon' => 'archive', 'url' => '#',
|
||||
@ -56,12 +56,12 @@
|
||||
]
|
||||
]
|
||||
],
|
||||
'visible' => Yii::$app->user->can('confidential_information')
|
||||
//TODO 'visible' => Yii::$app->user->can('confidential_information')
|
||||
],
|
||||
[
|
||||
'label' => 'Проекты', 'icon' => 'cubes', 'url' => ['#'], //'active' => \Yii::$app->controller->id == 'project',
|
||||
'items' => $projectItems,
|
||||
'visible' => Yii::$app->user->can('confidential_information')
|
||||
//TODO 'visible' => Yii::$app->user->can('confidential_information')
|
||||
],
|
||||
[
|
||||
'label' => 'Задачи', 'icon' => 'tasks', 'url' => '#',
|
||||
@ -70,7 +70,7 @@
|
||||
['label' => 'Исполнители задачи', 'icon' => 'users', 'url' => ['/task/task-user'], 'active' => \Yii::$app->controller->id == 'task-user'],
|
||||
],
|
||||
|
||||
'visible' => Yii::$app->user->can('confidential_information')
|
||||
//TODO 'visible' => Yii::$app->user->can('confidential_information')
|
||||
],
|
||||
['label' => 'Компании', 'icon' => 'building', 'url' => ['/company/company'], 'active' => \Yii::$app->controller->id == 'company', 'visible' => Yii::$app->user->can('confidential_information')],
|
||||
[
|
||||
@ -79,7 +79,7 @@
|
||||
['label' => 'Компании', 'icon' => 'building', 'url' => ['/hh/hh'], 'active' => \Yii::$app->controller->id == 'hh'],
|
||||
['label' => 'Вакансии', 'icon' => 'user-md', 'url' => ['/hh/hh-job'], 'active' => \Yii::$app->controller->id == 'hh-job'],
|
||||
],
|
||||
'visible' => Yii::$app->user->can('confidential_information')
|
||||
//TODO 'visible' => Yii::$app->user->can('confidential_information')
|
||||
],
|
||||
['label' => 'Баланс', 'icon' => 'dollar', 'url' => ['/balance/balance'], 'active' => \Yii::$app->controller->id == 'balance', 'visible' => Yii::$app->user->can('confidential_information')],
|
||||
['label' => 'Отпуска', 'icon' => 'plane', 'url' => ['/holiday/holiday'], 'active' => \Yii::$app->controller->id == 'holiday', 'visible' => Yii::$app->user->can('confidential_information')],
|
||||
@ -94,7 +94,7 @@
|
||||
'icon' => 'list-alt',
|
||||
'url' => ['/interview/interview'],
|
||||
'active' => \Yii::$app->controller->id == 'interview',
|
||||
'visible' => Yii::$app->user->can('confidential_information'),
|
||||
//TODO 'visible' => Yii::$app->user->can('confidential_information'),
|
||||
'badge' => '<span class="badge badge-info right">4</span>'
|
||||
],
|
||||
[
|
||||
@ -108,7 +108,7 @@
|
||||
['label' => 'Анкеты пользователей', 'icon' => 'drivers-license', 'url' => ['/questionnaire/user-questionnaire'], 'active' => \Yii::$app->controller->id == 'user-questionnaire'],
|
||||
['label' => 'Ответы пользователей', 'icon' => 'comments', 'url' => ['/questionnaire/user-response'], 'active' => \Yii::$app->controller->id == 'user-response'],
|
||||
],
|
||||
'visible' => Yii::$app->user->can('confidential_information')
|
||||
//TODO 'visible' => Yii::$app->user->can('confidential_information')
|
||||
],
|
||||
|
||||
/*['label' => 'Gii', 'icon' => 'file-code-o', 'url' => ['/gii']],
|
||||
|
1
backend/web/.gitignore
vendored
1
backend/web/.gitignore
vendored
@ -2,3 +2,4 @@
|
||||
/index-test.php
|
||||
/robots.txt
|
||||
/log.txt
|
||||
/upload
|
@ -3,4 +3,5 @@ Yii::setAlias('@common', dirname(__DIR__));
|
||||
Yii::setAlias('@frontend', dirname(dirname(__DIR__)) . '/frontend');
|
||||
Yii::setAlias('@backend', dirname(dirname(__DIR__)) . '/backend');
|
||||
Yii::setAlias('@console', dirname(dirname(__DIR__)) . '/console');
|
||||
Yii::setAlias('@templates', dirname(dirname(__DIR__)) . '/frontend/web/upload/templates');
|
||||
Yii::setAlias('@templates', dirname(dirname(__DIR__)) . '/backend/web/upload/templates');
|
||||
Yii::setAlias('@documents', dirname(dirname(__DIR__)) . '/backend/web/upload/documents');
|
||||
|
@ -28,6 +28,10 @@ return [
|
||||
'path' => 'media/upload',
|
||||
'name' => 'Изображения',
|
||||
],
|
||||
[
|
||||
'basePath' => '@templates',
|
||||
'name' => 'Шаблоны документов' //перевод Yii::t($category, $message)
|
||||
],
|
||||
],
|
||||
'watermark' => [
|
||||
'source' => __DIR__ . '/logo.png', // Path to Water mark image
|
||||
|
@ -3,7 +3,6 @@
|
||||
namespace common\helpers;
|
||||
|
||||
use Yii;
|
||||
use yii\helpers\ArrayHelper;
|
||||
use yii\helpers\Html;
|
||||
|
||||
class TimeHelper
|
||||
|
28
common/helpers/TransliteratorHelper.php
Normal file
28
common/helpers/TransliteratorHelper.php
Normal file
@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace common\helpers;
|
||||
|
||||
class TransliteratorHelper
|
||||
{
|
||||
private static $rus = [
|
||||
'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У',
|
||||
'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з',
|
||||
'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь',
|
||||
'э', 'ю', 'я'
|
||||
];
|
||||
|
||||
private static $lat = [
|
||||
'A', 'B', 'V', 'G', 'D', 'E', 'Yo', 'Zh', 'Z', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U',
|
||||
'F', 'H', 'C', 'Ch', 'Sh', 'Shch', 'Y', 'Y', 'Y', 'E', 'Yu', 'Ya','a', 'b', 'v', 'g', 'd', 'e', 'yo', 'zh',
|
||||
'z', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', 'c', 'ch', 'sh', 'shch', 'y',
|
||||
'y', 'y', 'e', 'yu', 'ya'
|
||||
];
|
||||
|
||||
public static function transliterate($source)
|
||||
{
|
||||
if ($source) {
|
||||
return str_replace(self::$rus, self::$lat, $source);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
@ -4,6 +4,7 @@ namespace common\models;
|
||||
|
||||
use Yii;
|
||||
use yii\behaviors\TimestampBehavior;
|
||||
use yii\db\ActiveQuery;
|
||||
use yii\db\Expression;
|
||||
use yii\db\StaleObjectException;
|
||||
|
||||
@ -87,7 +88,7 @@ class Document extends \yii\db\ActiveRecord
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \yii\db\ActiveQuery
|
||||
* @return ActiveQuery
|
||||
*/
|
||||
public function getManager()
|
||||
{
|
||||
@ -95,7 +96,7 @@ class Document extends \yii\db\ActiveRecord
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \yii\db\ActiveQuery
|
||||
* @return ActiveQuery
|
||||
*/
|
||||
public function getTemplate()
|
||||
{
|
||||
@ -103,9 +104,9 @@ class Document extends \yii\db\ActiveRecord
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \yii\db\ActiveQuery
|
||||
* @return ActiveQuery
|
||||
*/
|
||||
public function getDocumentFieldValues()
|
||||
public function getDocumentFieldValues(): ActiveQuery
|
||||
{
|
||||
return $this->hasMany(DocumentFieldValue::className(), ['document_id' => 'id']);
|
||||
}
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
namespace common\models;
|
||||
|
||||
use common\helpers\TransliteratorHelper;
|
||||
use Yii;
|
||||
use yii\helpers\ArrayHelper;
|
||||
|
||||
@ -10,6 +11,7 @@ use yii\helpers\ArrayHelper;
|
||||
*
|
||||
* @property int $id
|
||||
* @property string $title
|
||||
* @property string $field_template
|
||||
*
|
||||
* @property DocumentFieldValue[] $documentFieldValues
|
||||
* @property TemplateDocumentField[] $templateDocumentFields
|
||||
@ -30,10 +32,16 @@ class DocumentField extends \yii\db\ActiveRecord
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
[['title'], 'string', 'max' => 255],
|
||||
[['title', 'field_template'], 'string', 'max' => 255],
|
||||
];
|
||||
}
|
||||
|
||||
public function beforeSave($insert)
|
||||
{
|
||||
$this->field_template = TransliteratorHelper::transliterate($this->title);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
@ -42,6 +50,7 @@ class DocumentField extends \yii\db\ActiveRecord
|
||||
return [
|
||||
'id' => 'ID',
|
||||
'title' => 'Название',
|
||||
'field_template' => 'Шаблон поля',
|
||||
];
|
||||
}
|
||||
|
||||
|
@ -3,6 +3,7 @@
|
||||
namespace common\models;
|
||||
|
||||
use Yii;
|
||||
use yii\db\ActiveQuery;
|
||||
|
||||
/**
|
||||
* This is the model class for table "document_field_value".
|
||||
@ -54,7 +55,7 @@ class DocumentFieldValue extends \yii\db\ActiveRecord
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \yii\db\ActiveQuery
|
||||
* @return ActiveQuery
|
||||
*/
|
||||
public function getDocument()
|
||||
{
|
||||
@ -62,10 +63,17 @@ class DocumentFieldValue extends \yii\db\ActiveRecord
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \yii\db\ActiveQuery
|
||||
* @return ActiveQuery
|
||||
*/
|
||||
public function getField()
|
||||
public function getField(): ActiveQuery
|
||||
{
|
||||
return $this->hasOne(DocumentField::className(), ['id' => 'field_id']);
|
||||
}
|
||||
|
||||
public function getFieldsArray()
|
||||
{
|
||||
return '44';
|
||||
// self::find()->select(['value', 'document_field.title', 'document_field.template'])
|
||||
// ->joinWith('field')->asArray()->all();
|
||||
}
|
||||
}
|
||||
|
@ -3,7 +3,9 @@
|
||||
namespace common\models;
|
||||
|
||||
use Yii;
|
||||
use yii\base\InvalidConfigException;
|
||||
use yii\behaviors\TimestampBehavior;
|
||||
use yii\db\ActiveQuery;
|
||||
use yii\db\Expression;
|
||||
|
||||
/**
|
||||
@ -20,7 +22,7 @@ use yii\db\Expression;
|
||||
*/
|
||||
class Template extends \yii\db\ActiveRecord
|
||||
{
|
||||
public $template;
|
||||
// public $template;
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
@ -50,9 +52,9 @@ class Template extends \yii\db\ActiveRecord
|
||||
[['created_at', 'updated_at'], 'safe'],
|
||||
[['title'], 'unique'],
|
||||
[['template_file_name', 'title'], 'required'],
|
||||
[['template'], 'required', 'message'=>'Укажите путь к файлу'],
|
||||
[['template'], 'file', 'maxSize' => '10000'],
|
||||
[['template'], 'file', 'skipOnEmpty' => false, 'extensions' => 'doc, docx, txt'],
|
||||
// [['template'], 'required', 'message'=>'Укажите путь к файлу'],
|
||||
// [['template'], 'file', 'maxSize' => '10000'],
|
||||
// [['template'], 'file', 'skipOnEmpty' => false, 'extensions' => 'doc, docx, txt'],
|
||||
[['title', 'template_file_name'], 'string', 'max' => 255],
|
||||
];
|
||||
}
|
||||
@ -78,7 +80,7 @@ class Template extends \yii\db\ActiveRecord
|
||||
}
|
||||
|
||||
if (!empty($this->template_file_name)) {
|
||||
$template_path = Yii::getAlias('@templates') . '/' . $this->template_file_name;
|
||||
$template_path = Yii::getAlias('@templates') . $this->template_file_name;
|
||||
|
||||
if(file_exists($template_path)) {
|
||||
unlink($template_path);
|
||||
@ -88,7 +90,7 @@ class Template extends \yii\db\ActiveRecord
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \yii\db\ActiveQuery
|
||||
* @return ActiveQuery
|
||||
*/
|
||||
public function getDocuments()
|
||||
{
|
||||
@ -96,10 +98,27 @@ class Template extends \yii\db\ActiveRecord
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \yii\db\ActiveQuery
|
||||
* @return ActiveQuery
|
||||
*/
|
||||
public function getTemplateDocumentFields()
|
||||
{
|
||||
return $this->hasMany(TemplateDocumentField::className(), ['template_id' => 'id']);
|
||||
}
|
||||
|
||||
public function getTitle()
|
||||
{
|
||||
return $this->title;
|
||||
}
|
||||
|
||||
//TODO no need, delete
|
||||
public function getDocumentFields()
|
||||
{
|
||||
$fieldsArray = [];
|
||||
|
||||
foreach ($this->templateDocumentFields as $templateDocField) {
|
||||
$fieldsArray[] = $templateDocField->field;
|
||||
}
|
||||
|
||||
return $fieldsArray;
|
||||
}
|
||||
}
|
||||
|
@ -56,7 +56,7 @@ class TemplateDocumentField extends \yii\db\ActiveRecord
|
||||
*/
|
||||
public function getField()
|
||||
{
|
||||
return $this->hasOne(DocumentField::className(), ['id' => 'field_id']);
|
||||
return $this->hasOne(DocumentField::className(), ['id' => 'field_id'])->asArray();
|
||||
}
|
||||
|
||||
/**
|
||||
|
43
common/services/DocumentService.php
Normal file
43
common/services/DocumentService.php
Normal file
@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
namespace common\services;
|
||||
|
||||
|
||||
use PhpOffice\PhpWord\Exception\CopyFileException;
|
||||
use PhpOffice\PhpWord\Exception\CreateTemporaryFileException;
|
||||
use PhpOffice\PhpWord\TemplateProcessor;
|
||||
use Yii;
|
||||
|
||||
class DocumentService
|
||||
{
|
||||
private $file_title;
|
||||
private $document;
|
||||
private $template_title;
|
||||
private [] $fields;
|
||||
|
||||
|
||||
/**
|
||||
* @throws CopyFileException
|
||||
* @throws CreateTemporaryFileException
|
||||
*/
|
||||
public function __construct($file_title, $template_name, [] $fields)
|
||||
{
|
||||
$this->file_title = $file_title . 'docx';
|
||||
$this->document = new TemplateProcessor(Yii::getAlias('@templates') . "/$template_name");
|
||||
}
|
||||
|
||||
public function setFields($fields )
|
||||
{
|
||||
foreach ($fields as $field) {
|
||||
$this->document->setValue('FIO', '8888888888' );
|
||||
}
|
||||
}
|
||||
|
||||
public function save()
|
||||
{
|
||||
$this->document->saveAs($this->file_title);
|
||||
}
|
||||
|
||||
public function creat3e()
|
||||
{}
|
||||
}
|
@ -24,7 +24,6 @@
|
||||
"kartik-v/yii2-widget-select2": "@dev",
|
||||
"kavalar/hhapi": "@dev",
|
||||
"mirocow/yii2-eav": "*",
|
||||
"kartik-v/yii2-widget-fileinput": "dev-master",
|
||||
"2amigos/yii2-file-upload-widget": "~1.0",
|
||||
"kartik-v/yii2-grid": "dev-master",
|
||||
"edofre/yii2-fullcalendar-scheduler": "V1.1.12",
|
||||
@ -33,7 +32,8 @@
|
||||
"kavalar/yii2-telegram-bot": "^0.1.0",
|
||||
"2amigos/yii2-transliterator-helper": "*",
|
||||
"ext-json": "*",
|
||||
"kartik-v/yii2-widget-depdrop": "dev-master"
|
||||
"kartik-v/yii2-widget-depdrop": "dev-master",
|
||||
"phpoffice/phpword": "^0.18.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"yiisoft/yii2-debug": "~2.0.0",
|
||||
|
306
composer.lock
generated
306
composer.lock
generated
@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "216b806f0c05ea29213238c495fe568f",
|
||||
"content-hash": "15270a1b8febac6d9099b06491c22de1",
|
||||
"packages": [
|
||||
{
|
||||
"name": "2amigos/yii2-file-upload-widget",
|
||||
@ -959,69 +959,6 @@
|
||||
},
|
||||
"time": "2016-10-24T15:52:54+00:00"
|
||||
},
|
||||
{
|
||||
"name": "kartik-v/bootstrap-fileinput",
|
||||
"version": "v5.2.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/kartik-v/bootstrap-fileinput.git",
|
||||
"reference": "642849327db63231922558b580e985e27beddfc1"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/kartik-v/bootstrap-fileinput/zipball/642849327db63231922558b580e985e27beddfc1",
|
||||
"reference": "642849327db63231922558b580e985e27beddfc1",
|
||||
"shasum": ""
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "5.2.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"kartik\\plugins\\fileinput\\": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"BSD-3-Clause"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Kartik Visweswaran",
|
||||
"email": "kartikv2@gmail.com",
|
||||
"homepage": "http://www.krajee.com/"
|
||||
}
|
||||
],
|
||||
"description": "An enhanced HTML 5 file input for Bootstrap 5.x, 4.x, and 3.x with features for file preview for many file types, multiple selection, ajax uploads, and more.",
|
||||
"homepage": "https://github.com/kartik-v/bootstrap-fileinput",
|
||||
"keywords": [
|
||||
"ajax",
|
||||
"bootstrap",
|
||||
"delete",
|
||||
"file",
|
||||
"image",
|
||||
"input",
|
||||
"jquery",
|
||||
"multiple",
|
||||
"preview",
|
||||
"progress",
|
||||
"upload"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/kartik-v/bootstrap-fileinput/issues",
|
||||
"source": "https://github.com/kartik-v/bootstrap-fileinput/tree/v5.2.6"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://opencollective.com/bootstrap-fileinput",
|
||||
"type": "open_collective"
|
||||
}
|
||||
],
|
||||
"time": "2021-09-23T15:32:41+00:00"
|
||||
},
|
||||
{
|
||||
"name": "kartik-v/dependent-dropdown",
|
||||
"version": "v1.4.9",
|
||||
@ -1424,72 +1361,6 @@
|
||||
},
|
||||
"time": "2019-05-25T07:32:15+00:00"
|
||||
},
|
||||
{
|
||||
"name": "kartik-v/yii2-widget-fileinput",
|
||||
"version": "dev-master",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/kartik-v/yii2-widget-fileinput.git",
|
||||
"reference": "d3caa4911ecd8125a5f87865807fa1de7f6cdba7"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/kartik-v/yii2-widget-fileinput/zipball/d3caa4911ecd8125a5f87865807fa1de7f6cdba7",
|
||||
"reference": "d3caa4911ecd8125a5f87865807fa1de7f6cdba7",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"kartik-v/bootstrap-fileinput": ">=5.0.0",
|
||||
"kartik-v/yii2-krajee-base": ">=3.0.1"
|
||||
},
|
||||
"default-branch": true,
|
||||
"type": "yii2-extension",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.1.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"kartik\\file\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"BSD-3-Clause"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Kartik Visweswaran",
|
||||
"email": "kartikv2@gmail.com",
|
||||
"homepage": "http://www.krajee.com/"
|
||||
}
|
||||
],
|
||||
"description": "An enhanced FileInput widget for Bootstrap 3.x, 4.x & 5.x with file preview, multiple selection, and more features (sub repo split from yii2-widgets)",
|
||||
"homepage": "https://github.com/kartik-v/yii2-widget-fileinput",
|
||||
"keywords": [
|
||||
"extension",
|
||||
"file",
|
||||
"form",
|
||||
"input",
|
||||
"jquery",
|
||||
"plugin",
|
||||
"upload",
|
||||
"widget",
|
||||
"yii2"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/kartik-v/yii2-widget-fileinput/issues",
|
||||
"source": "https://github.com/kartik-v/yii2-widget-fileinput/tree/master"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://opencollective.com/yii2-widget-fileinput",
|
||||
"type": "open_collective"
|
||||
}
|
||||
],
|
||||
"time": "2021-09-03T10:14:31+00:00"
|
||||
},
|
||||
{
|
||||
"name": "kartik-v/yii2-widget-select2",
|
||||
"version": "dev-master",
|
||||
@ -1673,6 +1544,68 @@
|
||||
},
|
||||
"time": "2021-08-26T13:08:14+00:00"
|
||||
},
|
||||
{
|
||||
"name": "laminas/laminas-escaper",
|
||||
"version": "2.9.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/laminas/laminas-escaper.git",
|
||||
"reference": "891ad70986729e20ed2e86355fcf93c9dc238a5f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/891ad70986729e20ed2e86355fcf93c9dc238a5f",
|
||||
"reference": "891ad70986729e20ed2e86355fcf93c9dc238a5f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.3 || ~8.0.0 || ~8.1.0"
|
||||
},
|
||||
"conflict": {
|
||||
"zendframework/zend-escaper": "*"
|
||||
},
|
||||
"require-dev": {
|
||||
"laminas/laminas-coding-standard": "~2.3.0",
|
||||
"phpunit/phpunit": "^9.3",
|
||||
"psalm/plugin-phpunit": "^0.12.2",
|
||||
"vimeo/psalm": "^3.16"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-iconv": "*",
|
||||
"ext-mbstring": "*"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Laminas\\Escaper\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"BSD-3-Clause"
|
||||
],
|
||||
"description": "Securely and safely escape HTML, HTML attributes, JavaScript, CSS, and URLs",
|
||||
"homepage": "https://laminas.dev",
|
||||
"keywords": [
|
||||
"escaper",
|
||||
"laminas"
|
||||
],
|
||||
"support": {
|
||||
"chat": "https://laminas.dev/chat",
|
||||
"docs": "https://docs.laminas.dev/laminas-escaper/",
|
||||
"forum": "https://discourse.laminas.dev",
|
||||
"issues": "https://github.com/laminas/laminas-escaper/issues",
|
||||
"rss": "https://github.com/laminas/laminas-escaper/releases.atom",
|
||||
"source": "https://github.com/laminas/laminas-escaper"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://funding.communitybridge.org/projects/laminas-project",
|
||||
"type": "community_bridge"
|
||||
}
|
||||
],
|
||||
"time": "2021-09-02T17:10:53+00:00"
|
||||
},
|
||||
{
|
||||
"name": "mihaildev/yii2-elfinder",
|
||||
"version": "1.4.0",
|
||||
@ -1897,6 +1830,118 @@
|
||||
},
|
||||
"time": "2020-10-15T08:29:30+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpoffice/phpword",
|
||||
"version": "0.18.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/PHPOffice/PHPWord.git",
|
||||
"reference": "aca10785cf68dc95d7f6fac4fe854979fef3f8db"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/PHPOffice/PHPWord/zipball/aca10785cf68dc95d7f6fac4fe854979fef3f8db",
|
||||
"reference": "aca10785cf68dc95d7f6fac4fe854979fef3f8db",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-xml": "*",
|
||||
"laminas/laminas-escaper": "^2.2",
|
||||
"php": "^5.3.3 || ^7.0 || ^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"dompdf/dompdf": "0.8.* || 1.0.*",
|
||||
"ext-gd": "*",
|
||||
"ext-zip": "*",
|
||||
"friendsofphp/php-cs-fixer": "^2.2",
|
||||
"mpdf/mpdf": "5.7.4 || 6.* || 7.* || 8.*",
|
||||
"php-coveralls/php-coveralls": "1.1.0 || ^2.0",
|
||||
"phploc/phploc": "2.* || 3.* || 4.* || 5.* || 6.* || 7.*",
|
||||
"phpmd/phpmd": "2.*",
|
||||
"phpunit/phpunit": "^4.8.36 || ^7.0",
|
||||
"squizlabs/php_codesniffer": "^2.9 || ^3.5",
|
||||
"tecnickcom/tcpdf": "6.*"
|
||||
},
|
||||
"suggest": {
|
||||
"dompdf/dompdf": "Allows writing PDF",
|
||||
"ext-gd2": "Allows adding images",
|
||||
"ext-xmlwriter": "Allows writing OOXML and ODF",
|
||||
"ext-xsl": "Allows applying XSL style sheet to headers, to main document part, and to footers of an OOXML template",
|
||||
"ext-zip": "Allows writing OOXML and ODF"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-develop": "0.19-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"PhpOffice\\PhpWord\\": "src/PhpWord"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"LGPL-3.0"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Mark Baker"
|
||||
},
|
||||
{
|
||||
"name": "Gabriel Bull",
|
||||
"email": "me@gabrielbull.com",
|
||||
"homepage": "http://gabrielbull.com/"
|
||||
},
|
||||
{
|
||||
"name": "Franck Lefevre",
|
||||
"homepage": "https://rootslabs.net/blog/"
|
||||
},
|
||||
{
|
||||
"name": "Ivan Lanin",
|
||||
"homepage": "http://ivan.lanin.org"
|
||||
},
|
||||
{
|
||||
"name": "Roman Syroeshko",
|
||||
"homepage": "http://ru.linkedin.com/pub/roman-syroeshko/34/a53/994/"
|
||||
},
|
||||
{
|
||||
"name": "Antoine de Troostembergh"
|
||||
}
|
||||
],
|
||||
"description": "PHPWord - A pure PHP library for reading and writing word processing documents (OOXML, ODF, RTF, HTML, PDF)",
|
||||
"homepage": "http://phpoffice.github.io",
|
||||
"keywords": [
|
||||
"ISO IEC 29500",
|
||||
"OOXML",
|
||||
"Office Open XML",
|
||||
"OpenDocument",
|
||||
"OpenXML",
|
||||
"PhpOffice",
|
||||
"PhpWord",
|
||||
"Rich Text Format",
|
||||
"WordprocessingML",
|
||||
"doc",
|
||||
"docx",
|
||||
"html",
|
||||
"odf",
|
||||
"odt",
|
||||
"office",
|
||||
"pdf",
|
||||
"php",
|
||||
"reader",
|
||||
"rtf",
|
||||
"template",
|
||||
"template processor",
|
||||
"word",
|
||||
"writer"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/PHPOffice/PHPWord/issues",
|
||||
"source": "https://github.com/PHPOffice/PHPWord/tree/0.18.2"
|
||||
},
|
||||
"time": "2021-06-04T20:58:45+00:00"
|
||||
},
|
||||
{
|
||||
"name": "rmrevin/yii2-fontawesome",
|
||||
"version": "2.17.1",
|
||||
@ -6498,7 +6543,6 @@
|
||||
"stability-flags": {
|
||||
"kartik-v/yii2-widget-select2": 20,
|
||||
"kavalar/hhapi": 20,
|
||||
"kartik-v/yii2-widget-fileinput": 20,
|
||||
"kartik-v/yii2-grid": 20,
|
||||
"kartik-v/yii2-widget-depdrop": 20
|
||||
},
|
||||
|
@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
use yii\db\Migration;
|
||||
|
||||
/**
|
||||
* Class m220106_092252_add_column_field_template_document_field_table
|
||||
*/
|
||||
class m220106_092252_add_column_field_template_document_field_table extends Migration
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function safeUp()
|
||||
{
|
||||
$this->addColumn('document_field', 'field_template', $this->string());
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function safeDown()
|
||||
{
|
||||
$this->dropColumn('document_field', 'field_template');
|
||||
}
|
||||
|
||||
/*
|
||||
// Use up()/down() to run migration code without a transaction.
|
||||
public function up()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public function down()
|
||||
{
|
||||
echo "m220106_092252_add_column_field_template_document_field_table cannot be reverted.\n";
|
||||
|
||||
return false;
|
||||
}
|
||||
*/
|
||||
}
|
2699
frontend-access.log
2699
frontend-access.log
File diff suppressed because it is too large
Load Diff
1955
frontend-error.log
1955
frontend-error.log
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user