Merge branch 'add_header_to_resume_template' into document

This commit is contained in:
iIronside
2022-11-15 12:08:09 +03:00
12 changed files with 185 additions and 86 deletions

View File

@ -2,6 +2,7 @@
namespace backend\modules\card\controllers;
use common\classes\Debug;
use Yii;
use backend\modules\card\models\ResumeTemplate;
use backend\modules\card\models\ResumeTemplateSearch;

View File

@ -249,7 +249,7 @@ class UserCardController extends Controller
}
private function generateText(UserCard $userCard) {
$resumeTemplate = ResumeTemplate::findOne($userCard->resumeTemplateId);
$resumeTemplate = ResumeTemplate::findOne($userCard->resume_template_id);
$resumeText = $resumeTemplate->template_body;
foreach (ResumeTemplate::$fieldSignatureDbName as $fieldSignature => $fieldDbName ) {
@ -278,24 +278,58 @@ class UserCardController extends Controller
public function actionDownloadResumePdf($id)
{
$model = UserCard::findOne($id);
$userCard = UserCard::findOne($id);
$resumeTemplate = ResumeTemplate::findOne($userCard->resume_template_id);
$pdf = new Pdf(); // or new Pdf();
$mpdf = $pdf->api; // fetches mpdf api
$mpdf->SetHeader('Resume ' . $model->fio . '||Generated by ITGuild.info At: ' . date("d/m/Y")); // call methods or set any properties
if (empty($resumeTemplate->header_text)) {
$headerText = 'Generated by ITGuild.info At: ' . date("d/m/Y");
} else {
$headerText = $resumeTemplate->header_text;
}
$pdf = new Pdf();
$mpdf = $pdf->api;
if (!pathinfo($resumeTemplate->header_image, PATHINFO_EXTENSION)) {
$mpdf->SetHeader($headerText);
} else {
$imagePath = Yii::getAlias('@frontend') . '/web' . $resumeTemplate->header_image;
$mpdf->setAutoTopMargin='stretch';
$mpdf->SetHTMLHeader(
"<div style='border-bottom: 1px solid #999;'>
<p><img src=$imagePath style='width: 100px; height: 40px; margin: 0; vertical-align: middle;'/>$headerText</p>
</div>"
);
}
$mpdf->SetFooter('{PAGENO}');
$mpdf->WriteHtml($model->resume_text); // call mpdf write html
echo $mpdf->Output("Resume - {$model->fio}", 'D'); // call the mpdf api output as needed
$mpdf->WriteHTML("<div>$userCard->resume_text</div>");
$mpdf->Output("Resume - {$userCard->fio}", 'D'); // call the mpdf api output as needed
exit;
}
public function actionDownloadResumeDocx($id)
{
$model = UserCard::findOne($id);
$resumeTemplate = ResumeTemplate::findOne($model->resume_template_id);
$imagePath = Yii::getAlias('@frontend') . '/web' . $resumeTemplate->header_image;
if (empty($resumeTemplate->header_text)) {
$headerText = 'Generated by ITGuild.info At: ' . date("d/m/Y");
} else {
$headerText = $resumeTemplate->header_text;
}
$pw = new \PhpOffice\PhpWord\PhpWord();
// (B) ADD HTML CONTENT
$section = $pw->addSection();
$header = $section->addHeader();
if (pathinfo($resumeTemplate->header_image, PATHINFO_EXTENSION)) {
$header->addImage($imagePath, ['width' => 70, 'height' => 30, 'align' => 'left']);
}
$header->addText($headerText, array('bold' => false), array('space' => array('before' => 0, 'after' => 280)));
$resumeText = str_replace(array('<br/>', '<br>', '</br>'), ' ', $model->resume_text);
\PhpOffice\PhpWord\Shared\Html::addHtml($section, $resumeText, false, false);

View File

@ -18,7 +18,7 @@ class ResumeTemplateSearch extends ResumeTemplate
{
return [
[['id', 'status'], 'integer'],
[['title', 'created_at', 'updated_at', 'template_body'], 'safe'],
[['title', 'created_at', 'updated_at', 'template_body', 'header_text', 'header_image'], 'safe'],
];
}
@ -65,8 +65,9 @@ class ResumeTemplateSearch extends ResumeTemplate
]);
$query->andFilterWhere(['like', 'title', $this->title])
->andFilterWhere(['like', 'template_body', $this->template_body]);
->andFilterWhere(['like', 'template_body', $this->template_body])
->andFilterWhere(['like', 'header_text', $this->header_text])
->andFilterWhere(['like', 'header_image', $this->header_image]);
return $dataProvider;
}
}

View File

@ -1,7 +1,9 @@
<?php
use asmoday74\ckeditor5\EditorClassic;
use backend\modules\card\models\ResumeTemplate;
use common\helpers\StatusHelper;
use mihaildev\elfinder\InputFile;
use yii\helpers\Html;
use yii\widgets\ActiveForm;
@ -31,6 +33,29 @@ use yii\widgets\ActiveForm;
]
]); ?>
<?= $form->field($model, 'header_text')->textInput(['maxlength' => true]) ?>
<div class="imgUpload form-group">
<div class="media__upload_img">
<img src="<?= $model->header_image; ?>" width="100px"/>
</div>
<?php echo InputFile::widget([
'language' => 'ru',
'controller' => 'elfinder',
// вставляем название контроллера, по умолчанию равен elfinder
'filter' => 'image',
// фильтр файлов, можно задать массив фильтров https://github.com/Studio-42/elFinder/wiki/Client-con..
'name' => 'ResumeTemplate[header_image]',
'id' => 'resumeTemplateHeader_img',
'template' => '<label>Картинка в верхнем контикуле</label><div class="input-group">{input}<span class="span-btn">{button}</span></div>',
'options' => ['class' => 'form-control itemImg', 'maxlength' => '255'],
'buttonOptions' => ['class' => 'btn btn-primary'],
'value' => $model->header_image,
'buttonName' => 'Выбрать изображение',
]);
?>
</div>
<div class="form-group">
<?= Html::submitButton('Сохранить', ['class' => 'btn btn-success']) ?>
</div>
@ -49,74 +74,16 @@ use yii\widgets\ActiveForm;
</tr>
</thead>
<tbody>
<tr class="info">
<td class="table-cell">ФИО</td>
<td class="table-cell">${fio}</td>
</tr>
<tr class="info">
<td class="table-cell">Паспорт</td>
<td class="table-cell">${passport}</td>
</tr>
<tr class="info">
<td class="table-cell">Электронная почта</td>
<td class="table-cell">${email}</td>
</tr>
<tr class="info">
<td class="table-cell">Пол</td>
<td class="table-cell">${gender}</td>
</tr>
<tr class="info">
<td class="table-cell">Резюме</td>
<td class="table-cell">${resume}</td>
</tr>
<tr class="info">
<td class="table-cell">Зароботная плата</td>
<td class="table-cell">${salary}</td>
</tr>
<tr class="info">
<td class="table-cell">Позиция</td>
<td class="table-cell">${position_id}</td>
</tr>
<tr class="info">
<td class="table-cell">Город</td>
<td class="table-cell">${city}</td>
</tr>
<tr class="info">
<td class="table-cell">Ссылка ВК</td>
<td class="table-cell">${link_vk}</td>
</tr>
<tr class="info">
<td class="table-cell">Ссылка Телграм</td>
<td class="table-cell">${link_telegram}</td>
</tr>
<tr class="info">
<td class="table-cell">Резюме текст</td>
<td class="table-cell">${vc_text}</td>
</tr>
<tr class="info">
<td class="table-cell">Уровень</td>
<td class="table-cell">${level}</td>
</tr>
<tr class="info">
<td class="table-cell">Резюме текст</td>
<td class="table-cell">${vc_text}</td>
</tr>
<tr class="info">
<td class="table-cell">Резюме короткий текст</td>
<td class="table-cell">${vc_text_short}</td>
</tr>
<tr class="info">
<td class="table-cell">Лет опыта</td>
<td class="table-cell">${years_of_exp}</td>
</tr>
<tr class="info">
<td class="table-cell">Спецификация</td>
<td class="table-cell">${specification}</td>
</tr>
<tr class="info">
<td class="table-cell">Навыки</td>
<td class="table-cell">${skills}</td>
</tr>
<?php
foreach (ResumeTemplate::$fieldNamesAndSignature as $fieldNames => $signature) {
echo "
<tr class='info'>
<td class='table-cell'>$fieldNames</td>
<td class='table-cell'>$signature</td>
</tr>
";
}
?>
</tbody>
</table>
</div>

View File

@ -27,6 +27,10 @@ use yii\widgets\ActiveForm;
<?php // echo $form->field($model, 'template_body') ?>
<?php // echo $form->field($model, 'header_text') ?>
<?php // echo $form->field($model, 'header_image') ?>
<div class="form-group">
<?= Html::submitButton('Search', ['class' => 'btn btn-primary']) ?>
<?= Html::resetButton('Reset', ['class' => 'btn btn-default']) ?>

View File

@ -33,6 +33,13 @@ $this->params['breadcrumbs'][] = $this->title;
}
],
'created_at',
'updated_at',
//'template_body:ntext',
//'header_text',
//'header_image',
['class' => 'yii\grid\ActionColumn'],
],
]); ?>

View File

@ -40,7 +40,16 @@ $this->params['breadcrumbs'][] = $this->title;
'filter' => StatusHelper::statusList(),
'value' => StatusHelper::statusLabel($model->status),
],
'template_body:ntext'
'header_text',
[
'attribute'=>'header_image',
'value'=>$model->header_image,
'format' => ['image',['width'=>'100','height'=>'100']],
],
[
'attribute' => 'template_body',
'format' => 'raw'
],
],
]) ?>

View File

@ -29,7 +29,7 @@ $this->params['breadcrumbs'][] = 'Резюме';
?>
<?= Html::hiddenInput('id', $model->id); ?>
<?= $form->field($model, 'resumeTemplateId')->dropDownList(
<?= $form->field($model, 'resume_template_id')->dropDownList(
ResumeTemplate::find()->where(['status' => StatusHelper::STATUS_ACTIVE])->select(['title', 'id'])->indexBy('id')->column(),
['prompt' => 'Выберите'])
?>