Added Mailtemplate
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
<ol class="breadcrumb m-0">
|
||||
<li class="breadcrumb-item"><a href="<?=self::getUrl("Dashboard")?>"><?=MFAPPNAME_SLUG?></a></li>
|
||||
<li class="breadcrumb-item"><a href="<?=self::getUrl("Mailtemplate")?>">Emailtemplates</a></li>
|
||||
<li class="breadcrumb-item active"><?=($template->id) ? "bearbeiten" : "Neu" ?></li>
|
||||
<li class="breadcrumb-item active"><?=($template && $template->id) ? $template->code : "Neu" ?></li>
|
||||
</ol>
|
||||
</div>
|
||||
<h4 class="page-title"><?=($template->id) ? "Emailtemplate bearbeiten" : "Neues Emailtemplate" ?></h4>
|
||||
@@ -31,23 +31,47 @@
|
||||
<input type="hidden" name="id" value="<?=$template->id?>" />
|
||||
|
||||
<div class="form-group row col-12">
|
||||
<label class="form-label" for="name">Template Name:</label>
|
||||
<input type="text" class="form-control" name="name" id="name" value="<?=$template->name?>" placeholder="Template Name" style="border-radius:0;" />
|
||||
<label class="form-label" for="name">Template Name *:</label>
|
||||
<input type="text" class="form-control" name="name" id="name" value="<?=$template->name?>" placeholder="Template Name" />
|
||||
</div>
|
||||
|
||||
<h4 class="mt-4">Emailtemplate</h4>
|
||||
<div class="form-group row col-12">
|
||||
<label class="form-label" for="code">Template Code:</label>
|
||||
<input type="text" class="form-control" id="code" value="<?=$template->code?>" disabled="disabled" />
|
||||
</div>
|
||||
|
||||
<div class="form-group row col-12">
|
||||
<label class="form-label" for="description">Beschreibung:</label>
|
||||
<input type="text" class="form-control" name="description" id="description" value="<?=$template->description?>" placeholder="Beschreibung" />
|
||||
</div>
|
||||
|
||||
<hr class="mt-3" />
|
||||
|
||||
<h4 class="mt-3">Emailtemplate</h4>
|
||||
|
||||
<div class="form-group row col-12 mt-3">
|
||||
<label><input type="checkbox" class="" id="is_include" name="is_include" value="1" <?=($template && $template->is_include) ? "checked='checked'" : ""?> /> Template zum Einbetten</label>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group row mt-3 col-12">
|
||||
<label class="form-label" for="subject">Betreff:</label>
|
||||
<label class="form-label" for="subject">Betreff *:</label>
|
||||
<input type="text" class="form-control" name="subject" id="subject" value="<?=$template->subject?>" placeholder="Betreff" style="border-radius:0;" />
|
||||
</div>
|
||||
<textarea id="body_html" name="body_html" placeholder="Bitte geben Sie hier den Emailinhalt ein..." rows="12" style="width: 100%; height: 600px; padding: 10px;"><?= htmlentities($template->body)?></textarea>
|
||||
|
||||
<div class="form-group row col-12 mt-3">
|
||||
<label><input type="checkbox" id="is_html" name="is_html" value="1" <?=($template && $template->body_text) ? "" : "checked='checked'"?> onchange="toggleHtml()" /> HTML-Template</label>
|
||||
</div>
|
||||
|
||||
<h4>Template Text</h4>
|
||||
<textarea id="body_text" name="body_text" class="<?=($template && $template->body_text) ? "" : "hidden"?>" placeholder="Bitte geben Sie hier den Emailinhalt ein..." rows="12" style="width: 100%; height: 600px; padding: 10px;"><?= htmlentities($template->body_text)?></textarea>
|
||||
<textarea id="body_html" name="body_html" class="<?=(!$template || $template->body_html) ? "" : "hidden"?>" placeholder="Bitte geben Sie hier den Emailinhalt ein..." rows="12" style="width: 100%; height: 600px; padding: 10px;"><?= htmlentities($template->body_html)?></textarea>
|
||||
|
||||
|
||||
|
||||
<h4 class="mt-4">Dateianhänge</h4>
|
||||
<div class="form-group row mb-3">
|
||||
<div class="col-xl-5 input-grop">
|
||||
<div class="col-xl-4 input-grop">
|
||||
<div class="custom-file">
|
||||
<input type="file" name="attachment[]" id="attachment" class="custom-file-input" multiple="multiple" />
|
||||
<label class="custom-file-label" for="attachment"> Datei(en) auswählen</label>
|
||||
@@ -58,12 +82,20 @@
|
||||
<?php if(is_array($template->files) && count($template->files)): ?>
|
||||
<div class="row">
|
||||
<div class="col-4">
|
||||
<div class="card" style="">
|
||||
<ul class="list-group list-group-flush">
|
||||
<?php foreach($template->files as $file): ?>
|
||||
<li id="file-<?=$file->id?>" class="list-group-item"><input type="hidden" name="deletefile[<?=$file->id?>]" id="deletefile-<?=$file->id?>" value="" /><a href="#" onclick="deleteFile(<?=$file->id?>)" class="mr-2"><i class="far fa-trash text-danger"></i></a> <span class="filename"><i class="far fa-file"></i> <?=$file->filename?></span></li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
<div class="card">
|
||||
<?php foreach($template->files as $file): ?>
|
||||
<input type="hidden" name="deletefile[<?=$file->id?>]" id="deletefile-<?=$file->id?>" value="" />
|
||||
<ul id="file-<?=$file->id?>" class="list-group list-group-horizontal">
|
||||
<li class="list-group-item flex-fill" style="border-radius: 0;">
|
||||
<span class="filename text-monospace"><i class="far fa-file"></i> <?=$file->filename?></span>
|
||||
</li><li class="list-group-item" style="border-radius: 0;">
|
||||
<a href="<?=self::getUrl("File", "download", ["id" => $file->file->id])?>"><i class="far fa-download text-primary"></i></a>
|
||||
</li><li class="list-group-item" style="border-radius: 0;">
|
||||
<a href="#" onclick="deleteFile(<?=$file->id?>)"><i class="far fa-trash-alt text-danger"></i></a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -105,27 +137,18 @@
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
var menu_vars = [
|
||||
['vorname', "Vorname"],
|
||||
['nachname', "Nachname"],
|
||||
['firma', "Firma"],
|
||||
['firma_oder_name', "Firma oder Name"],
|
||||
['email', "Emailadresse"],
|
||||
['anschluss_oaid', "Anschluss OAID"],
|
||||
['anschluss_strasse', "Anschluss Straße"],
|
||||
['anschluss_hausnummer', "Anschluss Hausnummer"],
|
||||
['anschluss_plz', "Anschluss PLZ"],
|
||||
['anschluss_ort', "Anschluss Ort"],
|
||||
['anschluss_gemeinde', "Anschluss Gemeinde"],
|
||||
['preorder_code', "Bestellcode"],
|
||||
];
|
||||
|
||||
var menu_vars = [];
|
||||
<?php foreach($embeds as $embed): ?>
|
||||
menu_vars.push(['<?=$embed->code?>', "<?=$embed->name?>"]);
|
||||
<?php endforeach; ?>
|
||||
|
||||
var menu_vars_items = "";
|
||||
menu_vars.forEach((item) => { menu_vars_items += " " + item[0]});
|
||||
menu_vars_items = menu_vars_items.trim();
|
||||
console.log(menu_vars_items);
|
||||
|
||||
$(function () {
|
||||
function initEditor() {
|
||||
tinymce.init({
|
||||
//font_formats: "Arial=arial,sans-serif;",
|
||||
selector: '#body_html',
|
||||
@@ -149,7 +172,7 @@
|
||||
editor.ui.registry.addMenuItem(item[0], {
|
||||
text: item[1],
|
||||
onAction: function () {
|
||||
editor.insertContent('{{' + item[0].toUpperCase() + '}}');
|
||||
editor.insertContent('{{EMBED:' + item[0].toLowerCase() + '}}');
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -159,12 +182,37 @@
|
||||
});
|
||||
|
||||
bsCustomFileInput.init();
|
||||
}
|
||||
|
||||
$(function () {
|
||||
initEditor();
|
||||
if($("#body_html").hasClass("hidden")) {
|
||||
tinymce.get("body_html").hide();
|
||||
$("#body_html").hide();
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
function toggleHtml() {
|
||||
console.log($("#body_html"));
|
||||
console.log($("#body_text"));
|
||||
if($("#is_html").is(":checked")) {
|
||||
console.log("is checked");
|
||||
$("#body_text").hide();
|
||||
tinymce.get("body_html").show();
|
||||
} else {
|
||||
console.log("is not checked");
|
||||
$("#body_text").show();
|
||||
tinymce.get("body_html").hide();
|
||||
$("#body_html").hide();
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function deleteFile(id) {
|
||||
event.preventDefault();
|
||||
console.log($("#deletefile-" + id).val());
|
||||
//console.log($("#deletefile-" + id).val());
|
||||
if(!$("#deletefile-" + id).val()) {
|
||||
$('#file-' + id + " .filename").css("text-decoration", "line-through");
|
||||
$('#file-' + id + " .filename").css("color", "red");
|
||||
|
||||
@@ -31,6 +31,11 @@
|
||||
<input type="text" class="form-control" name="filter[name]" id="filter_name" value="<?=$filter['name']?>" />
|
||||
</div>
|
||||
|
||||
<div class="col-1">
|
||||
<label class="form-label" for="filter_description">Beschreibung</label>
|
||||
<input type="text" class="form-control" name="filter[description]" id="filter_description" value="<?=$filter['description']?>" />
|
||||
</div>
|
||||
|
||||
<div class="col-1">
|
||||
<label class="form-label" for="filter_subject">Betreff</label>
|
||||
<input type="text" class="form-control" name="filter[subject]" id="filter_betreff" value="<?=$filter['subject']?>" />
|
||||
@@ -41,7 +46,7 @@
|
||||
<div class="row mt-2">
|
||||
<div class="col">
|
||||
<button type="submit" class="btn btn-primary">Filter anwenden</button>
|
||||
<a class="btn btn-secondary" href="<?=self::getUrl("Mailtemplate")?>">Filter zurücksetzen</a>
|
||||
<a class="btn btn-secondary" href="<?=self::getUrl("Mailtemplate")?>?resetFilter=1">Filter zurücksetzen</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -61,16 +66,22 @@
|
||||
|
||||
<table class="table table-striped table-hover">
|
||||
<tr>
|
||||
<th>Code</th>
|
||||
<th>Name</th>
|
||||
<th>Beschreibung</th>
|
||||
<th>Betreff</th>
|
||||
<th>Anhänge</th>
|
||||
<th>Erstellt</th>
|
||||
<th>Bearbeitet</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
<?php foreach($templates as $template): ?>
|
||||
<tr>
|
||||
<td class="text-monospace text-monospace-valign-fix text-pink " style="max-width: 15vh"><div><?=$template->code?></div></td>
|
||||
<td><?=$template->name?></td>
|
||||
<td><?=$template->description?></td>
|
||||
<td><?=$template->subject?></td>
|
||||
<td><?=count($template->files)?></td>
|
||||
<td><?=date("d.m.Y H:i",$template->edit)?> (<?=$template->editor->name?>)</td>
|
||||
<td><?=date("d.m.Y H:i",$template->create)?> (<?=$template->creator->name?>)</td>
|
||||
<td style="text-align: left; letter-spacing: 4px; font-size: 1.1em;">
|
||||
|
||||
@@ -63,8 +63,8 @@
|
||||
|
||||
<li class="mobile-hide"><a href="<?=self::getUrl("Network")?>"><i class="fad fa-fw fa-network-wired text-info"></i> Netzgebiete</a></li>
|
||||
|
||||
<li class="has-sub-submenu" ><a href="<?=self::getUrl("Pop")?>"><i class="fad fa-fw fa-house text-info"></i> Pops</a></li>
|
||||
<li class="has-sub-submenu"><a href="<?=self::getUrl("Device")?>"><i class="fad fa-fw fa-router text-info "></i> Devices</a></li>
|
||||
<li class="" ><a href="<?=self::getUrl("Pop")?>"><i class="fad fa-fw fa-house text-info"></i> Pops</a></li>
|
||||
<li class=""><a href="<?=self::getUrl("Device")?>"><i class="fad fa-fw fa-router text-info "></i> Devices</a></li>
|
||||
<li class="has-sub-submenu"><a href="<?=self::getUrl("User")?>"><i class="fad fa-fw fa-users text-info"></i> Benutzer</a></li>
|
||||
<li class="has-sub-submenu font-weight-bold mt-1 mobile-hide"><a>Grundstammdaten</a></li>
|
||||
<?php endif; ?>
|
||||
@@ -75,6 +75,7 @@
|
||||
<?php if($me->is(["Admin"])): ?>
|
||||
<li class="mobile-hide"><a href="<?=self::getUrl("OpenAccessId")?>"><i class="fad fa-fw fa-link-simple text-info"></i> Open Access IDs</a></li>
|
||||
<li class="mobile-hide"><a href="<?=self::getUrl("Producttech")?>"><i class="fad fa-fw fa-microchip text-info"></i> Technologien</a></li>
|
||||
<li class=""><a href="<?=self::getUrl("Mailtemplate")?>"><i class="fad fa-fw fa-users text-info"></i> Emailtemplates</a></li>
|
||||
<li class="mobile-hide"><a href="<?=self::getUrl("HistoricTicket")?>"><i class="fad fa-fw fa-headset text-info"></i> Historische Tickets</a></li>
|
||||
<?php if($me->can("Fibu")): ?><li class="mobile-hide"><a href="<?=self::getUrl("Vatgroup")?>"><i class="fas fa-fw fa-circle-dollar-to-slot text-info"></i> Steuersätze</a></li><?php endif; ?>
|
||||
<!--<li><a href="<?=self::getUrl("Contractconfig")?>"><i class="fad fa-gear text-info"></i> ContractConfig</a></li>-->
|
||||
|
||||
@@ -1,13 +1,41 @@
|
||||
<?php
|
||||
|
||||
class Mailtemplate extends mfBaseModel {
|
||||
private $files;
|
||||
private $creator;
|
||||
private $editor;
|
||||
|
||||
|
||||
public function getVariableReplacedSubject($replaceVars) {
|
||||
return $this->replaceVariables($this->subject, $replaceVars);
|
||||
}
|
||||
|
||||
public function getVariableReplacedBody($replaceVars) {
|
||||
return $this->replaceVariables($this->body, $replaceVars);
|
||||
}
|
||||
|
||||
private function replaceVariables($text, $replaceVars) {
|
||||
if(!is_array($replaceVars)) return false;
|
||||
|
||||
foreach($replaceVars as $key => $replacement) {
|
||||
$body = str_replace("{{".$key."}}", $replacement, $body);
|
||||
}
|
||||
|
||||
return $body;
|
||||
}
|
||||
|
||||
public function getProperty($name) {
|
||||
if($this->$name == null) {
|
||||
|
||||
if($name == "files") {
|
||||
$files = MailtemplateFileModel::search(["mailtemplate_id" => $this->id]);
|
||||
if(!count($files)) {
|
||||
return [];
|
||||
}
|
||||
$this->files = $files;
|
||||
return $this->files;
|
||||
}
|
||||
|
||||
if($name == "creator") {
|
||||
$user = mfValuecache::singleton()->get("Worker-id-".$this->create_by);
|
||||
if($user) {
|
||||
|
||||
@@ -63,6 +63,8 @@ class MailtemplateController extends mfBaseController {
|
||||
protected function addAction() {
|
||||
$this->layout()->setTemplate("Mailtemplate/Form");
|
||||
|
||||
$embeds = MailtemplateModel::search(["is_include" => 1]);
|
||||
$this->layout()->set("embeds", $embeds);
|
||||
}
|
||||
|
||||
protected function editAction() {
|
||||
@@ -80,7 +82,7 @@ class MailtemplateController extends mfBaseController {
|
||||
|
||||
protected function saveAction() {
|
||||
$r = $this->request;
|
||||
var_dump($r->get());exit;
|
||||
//var_dump($r->get());exit;
|
||||
$id = $r->id;
|
||||
|
||||
if(is_numeric($id) && $id > 0) {
|
||||
@@ -96,10 +98,186 @@ class MailtemplateController extends mfBaseController {
|
||||
|
||||
$data = [];
|
||||
$data["name"] = $r->name;
|
||||
$data["subject"] = $r->subject;
|
||||
//$data[""] = $r->;
|
||||
//$data[""] = $r->;
|
||||
//$data[""] = $r->;
|
||||
$data["code"] = null;
|
||||
$data["is_include"] = ($r->is_include) ? 1 : 0;
|
||||
$data["subject"] = ($r->subject) ? $r->subject : null;
|
||||
|
||||
$data["description"] = $r->description;
|
||||
$data["note"] = ($r->note) ? $r->note : null;
|
||||
|
||||
if($r->is_html) {
|
||||
$data["body_html"] = ($r->body_html) ? $r->body_html : null;
|
||||
$data["body_text"] = null;
|
||||
} else {
|
||||
$data["body_text"] = ($r->body_text) ? $r->body_text : null;
|
||||
$data["body_html"] = null;
|
||||
}
|
||||
|
||||
if($mode == "edit") {
|
||||
$data["code"] = $template->code;
|
||||
}
|
||||
|
||||
if(!$data["code"]) {
|
||||
$this->log->debug("if !code [".$data["code"]."]");
|
||||
$new_code = strtolower($data["name"]);
|
||||
$new_code = iconv("utf-8", "ASCII//TRANSLIT", $new_code);
|
||||
$new_code = preg_replace('/[^a-z0-9-]/i', "-", $new_code);
|
||||
$this->log->debug("1st try new code [".$new_code."]");
|
||||
if(!$new_code) {
|
||||
$this->layout()->setFlash("Fehler beim Code generieren. Bitte sinnvollen Name vergeben!", "error");
|
||||
$this->redirect("Mailtemplate");
|
||||
}
|
||||
|
||||
// special chars at the end
|
||||
while(preg_match('/[^a-z0-9]$/', $new_code)) {
|
||||
$this->log->debug("while preg_match() end [$new_code]");
|
||||
$new_code = substr($new_code, 0, -1);
|
||||
if(!$new_code) {
|
||||
$this->layout()->setFlash("Fehler beim Code generieren. Bitte sinnvollen Name vergeben!", "error");
|
||||
$this->redirect("Mailtemplate");
|
||||
}
|
||||
}
|
||||
|
||||
// special chars at the beginning
|
||||
while(preg_match('/^[^a-z0-9]/', $new_code)) {
|
||||
$this->log->debug("while preg_match() beginning [$new_code]");
|
||||
$new_code = substr($new_code, 1);
|
||||
if(!$new_code) {
|
||||
$this->layout()->setFlash("Fehler beim Code generieren. Bitte sinnvollen Name vergeben!", "error");
|
||||
$this->redirect("Mailtemplate");
|
||||
}
|
||||
}
|
||||
|
||||
while($check_mt = MailtemplateModel::getFirst(["code" => $new_code])) {
|
||||
if($mode == "edit" && $check_mt->id == $id) break;
|
||||
$this->log->debug("while getFirst() [".$data["code"]."]");
|
||||
$last_char = substr($new_code, -1, 1);
|
||||
if(is_numeric($last_char)) {
|
||||
$last_two_chars = substr($new_code, -2);
|
||||
if(is_numeric($last_two_chars)) {
|
||||
// avoid increment if the last number could be a status code like 141
|
||||
$new_code .= "-1";
|
||||
} else {
|
||||
$new_code = substr($new_code, 0, -1);
|
||||
$new_code .= ++$last_char;
|
||||
}
|
||||
} else {
|
||||
$new_code .= "-1";
|
||||
}
|
||||
|
||||
}
|
||||
$data["code"] = $new_code;
|
||||
|
||||
}
|
||||
|
||||
|
||||
//var_dump($data);exit;
|
||||
|
||||
if($mode == "edit") {
|
||||
$template->update($data);
|
||||
} else {
|
||||
$template = MailtemplateModel::create($data);
|
||||
}
|
||||
|
||||
if(!$template->save()) {
|
||||
$this->layout()->setFlash("Fehler beim Speichern", "error");
|
||||
$this->redirect("Mailtemplate");
|
||||
}
|
||||
|
||||
|
||||
if(array_key_exists("attachment", $_FILES)) {
|
||||
$files = $_FILES['attachment'];
|
||||
if(is_array($files) && count($files)) {
|
||||
$file_errors = 0;
|
||||
foreach($files['name'] as $i => $name) {
|
||||
if(!$name) continue;
|
||||
$upload_error = false;
|
||||
try {
|
||||
$upload = new mfUpload(['attachment', $i]);
|
||||
$upload->setSavepath(MFUPLOAD_FILE_SAVE_PATH . "/" . TT_MAILTEMPLATE_FILE_UPLOAD_SUBFOLDER);
|
||||
} catch(Exception $e) {
|
||||
$this->layout()->setFlash("Dateiupload fehlgeschlagen: ".$e->getMessage(), "warn");
|
||||
$file_errors++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!$upload->getSize()) {
|
||||
$this->layout()->setFlash("Dateiupload fehlgeschlagen: Datei ist leer!", "warn");
|
||||
$upload_error = true;
|
||||
}
|
||||
|
||||
$mime = "";
|
||||
|
||||
if(!$upload_error) {
|
||||
try {
|
||||
$mime = $upload->getMimetype();
|
||||
$upload->save();
|
||||
} catch(Exception $e) {
|
||||
$this->layout()->setFlash("Dateiupload fehlgeschlagen", "warn");
|
||||
$upload_error = true;
|
||||
}
|
||||
}
|
||||
|
||||
if($upload_error) {
|
||||
$file_errors++;
|
||||
continue;
|
||||
}
|
||||
|
||||
$file_data = [];
|
||||
$file_data['name'] = $upload->getOriginalFilename();
|
||||
$file_data['filename'] = $upload->getOriginalFilename();
|
||||
$file_data['subfolder'] = TT_MAILTEMPLATE_FILE_UPLOAD_SUBFOLDER;
|
||||
$file_data['store_filename'] = $upload->getFilename();
|
||||
$file_data['orig_filename'] = $upload->getOriginalFilename();
|
||||
$file_data['mimetype'] = $mime;
|
||||
|
||||
$file = FileModel::create($file_data);
|
||||
$file_id = $file->save();
|
||||
if(!$file_id) {
|
||||
$this->layout()->setFlash("Dateiupload fehlgeschlagen", "warn");
|
||||
unlink($upload->getSavepath()."/".$upload->getFilename());
|
||||
} else {
|
||||
$mtf = [];
|
||||
$mtf['mailtemplate_id'] = $template->id;
|
||||
$mtf['file_id'] = $file_id;
|
||||
$mtf['filename'] = $file->filename;
|
||||
|
||||
$template_file = MailtemplateFileModel::create($mtf);
|
||||
if(!$template_file->save()) {
|
||||
$file->delete();
|
||||
unlink($upload->getSavepath()."/".$upload->getFilename());
|
||||
$this->layout()->setFlash("Dateiupload fehlgeschlagen", "warn");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* delete files
|
||||
*/
|
||||
//var_dump($r->deletefile);exit;
|
||||
if(is_array($r->deletefile)) {
|
||||
foreach($r->deletefile as $mtf_id => $check) {
|
||||
if(!$check) continue;
|
||||
$mtf = new MailtemplateFile($mtf_id);
|
||||
if($mtf->mailtemplate_id != $template->id) continue;
|
||||
$mtf->file->delete();
|
||||
$mtf->delete();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$this->layout()->setFlash("Emailtemplate erfolgreich gespeichert", "success");
|
||||
if($r->return == "index") {
|
||||
$this->redirect("Mailtemplate");
|
||||
} else {
|
||||
$this->redirect("Mailtemplate", "edit", ["id" => $template->id]);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,14 @@
|
||||
<?php
|
||||
|
||||
class MailtemplateModel {
|
||||
|
||||
public $name;
|
||||
public $code;
|
||||
public $is_include;
|
||||
public $description;
|
||||
public $subject;
|
||||
public $body;
|
||||
public $body_text;
|
||||
public $body_html;
|
||||
|
||||
public $note = null;
|
||||
public $create_by = null;
|
||||
@@ -118,20 +123,43 @@ class MailtemplateModel {
|
||||
$db = FronkDB::singleton();
|
||||
|
||||
//var_dump($filter);exit;
|
||||
if(array_key_exists("is_include", $filter)) {
|
||||
$is_include = $filter['is_include'];
|
||||
if($is_include) {
|
||||
$where .= " AND Mailtemplate.`is_include` = 1";
|
||||
} else {
|
||||
$where .= " AND Mailtemplate.`is_include` = 0";
|
||||
}
|
||||
}
|
||||
|
||||
if(array_key_exists("name", $filter)) {
|
||||
$name = $db->escape($filter['name']);
|
||||
if($name) {
|
||||
$where .= " AND Mailtemplate.`name` = '$name'";
|
||||
$where .= " AND Mailtemplate.`name` LIKE '%$name%'";
|
||||
}
|
||||
}
|
||||
|
||||
if(array_key_exists("code", $filter)) {
|
||||
$code = $db->escape($filter['code']);
|
||||
if($code) {
|
||||
$where .= " AND Mailtemplate.`code` = '$code'";
|
||||
}
|
||||
}
|
||||
|
||||
if(array_key_exists("subject", $filter)) {
|
||||
$subject = $db->escape($filter['subject']);
|
||||
if($subject) {
|
||||
$where .= " AND Mailtemplate.`subject` = '$subject'";
|
||||
$where .= " AND Mailtemplate.`subject` LIKE '%$subject%'";
|
||||
}
|
||||
}
|
||||
|
||||
if(array_key_exists("description", $filter)) {
|
||||
$description = $db->escape($filter['description']);
|
||||
if($description) {
|
||||
$where .= " AND Mailtemplate.`description` LIKE '%$description%'";
|
||||
}
|
||||
}
|
||||
|
||||
//var_dump($filter, $where);exit;
|
||||
return $where;
|
||||
}
|
||||
|
||||
48
application/MailtemplateFile/MailtemplateFile.php
Normal file
48
application/MailtemplateFile/MailtemplateFile.php
Normal file
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
class MailtemplateFile extends mfBaseModel {
|
||||
private $mailtemplate;
|
||||
private $file;
|
||||
private $creator;
|
||||
private $editor;
|
||||
|
||||
|
||||
public function getProperty($name) {
|
||||
if($this->$name == null) {
|
||||
|
||||
if($name == "creator") {
|
||||
$user = mfValuecache::singleton()->get("Worker-id-".$this->create_by);
|
||||
if($user) {
|
||||
$this->creator = $user;
|
||||
return $this->creator;
|
||||
}
|
||||
$this->creator = new User($this->create_by);
|
||||
if($this->creator->id) {
|
||||
mfValuecache::singleton()->set("Worker-id-".$this->create_by, $this->creator);
|
||||
}
|
||||
return $this->creator;
|
||||
}
|
||||
|
||||
if($name == "editor") {
|
||||
$this->editor = new User($this->edit_by);
|
||||
return $this->editor;
|
||||
}
|
||||
|
||||
$classname = ucfirst($name);
|
||||
$idfield = $name."_id";
|
||||
$this->$name = mfValuecache::singleton()->get("mfObjectmodel-$name-".$this->$idfield);
|
||||
if(!$this->$name) {
|
||||
$this->$name = new $classname($this->$idfield);
|
||||
}
|
||||
|
||||
if($this->$name->id) {
|
||||
mfValuecache::singleton()->set("mfObjectmodel-$name-".$this->$name->id, $this->$name);
|
||||
return $this->$name;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->$name;
|
||||
}
|
||||
}
|
||||
140
application/MailtemplateFile/MailtemplateFileModel.php
Normal file
140
application/MailtemplateFile/MailtemplateFileModel.php
Normal file
@@ -0,0 +1,140 @@
|
||||
<?php
|
||||
|
||||
class MailtemplateFileModel {
|
||||
public $mailtemplate_id;
|
||||
public $file_id;
|
||||
public $filename;
|
||||
|
||||
|
||||
public $note = null;
|
||||
public $create_by = null;
|
||||
public $edit_by = null;
|
||||
public $create = null;
|
||||
public $edit = null;
|
||||
|
||||
|
||||
public static function create(Array $data) {
|
||||
$model = new MailtemplateFile();
|
||||
|
||||
foreach($data as $field => $value) {
|
||||
if(property_exists(get_called_class(), $field)) {
|
||||
$model ->$field = $value;
|
||||
}
|
||||
}
|
||||
|
||||
$me = new User();
|
||||
$me->loadMe();
|
||||
|
||||
if($model->create_by === null) {
|
||||
$model->create_by = $me->id;
|
||||
}
|
||||
if($model->edit_by === null) {
|
||||
$model->edit_by = $me->id;
|
||||
}
|
||||
|
||||
return $model;
|
||||
}
|
||||
|
||||
public static function getAll() {
|
||||
$items = [];
|
||||
|
||||
$db = FronkDB::singleton();
|
||||
|
||||
$res = $db->select("MailtemplateFile", "*", "1 = 1 ORDER BY filename");
|
||||
if($db->num_rows($res)) {
|
||||
while($data = $db->fetch_object($res)) {
|
||||
$items[] = new MailtemplateFile($data);
|
||||
}
|
||||
}
|
||||
return $items;
|
||||
|
||||
}
|
||||
|
||||
public static function getFirst($filter = []) {
|
||||
$db = FronkDB::singleton();
|
||||
|
||||
$where = self::getSqlFilter($filter);
|
||||
$res = $db->select("MailtemplateFile", "*", "$where ORDER BY filename LIMIT 1");
|
||||
if($db->num_rows($res)) {
|
||||
$data = $db->fetch_object($res);
|
||||
$item = new MailtemplateFile($data);
|
||||
if($item->id) {
|
||||
return $item;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static function count($filter) {
|
||||
$db = FronkDB::singleton();
|
||||
|
||||
$where = self::getSqlFilter($filter);
|
||||
$sql = "SELECT COUNT(*) as cnt FROM `MailtemplateFile`
|
||||
WHERE $where
|
||||
";
|
||||
|
||||
mfLoghandler::singleton()->debug($sql);
|
||||
$res = $db->query($sql);
|
||||
if($db->num_rows($res)) {
|
||||
$data = $db->fetch_object($res);
|
||||
return $data->cnt;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
public static function search($filter, $limit=false) {
|
||||
$items = [];
|
||||
$db = FronkDB::singleton();
|
||||
|
||||
$where = self::getSqlFilter($filter);
|
||||
|
||||
$sql = "SELECT MailtemplateFile.* FROM `MailtemplateFile`
|
||||
WHERE $where
|
||||
ORDER BY filename
|
||||
";
|
||||
|
||||
mfLoghandler::singleton()->debug($sql);
|
||||
if(is_array($limit) && count($limit)) {
|
||||
if(is_numeric($limit['start']) && is_numeric($limit['count'])) {
|
||||
$sql .= " LIMIT ".$limit['start'].", ".$limit['count'];
|
||||
} elseif(is_numeric($limit['count'])) {
|
||||
$sql .= " LIMIT ".$limit['count'];
|
||||
}
|
||||
}
|
||||
|
||||
$res = $db->query($sql);
|
||||
if($db->num_rows($res)) {
|
||||
while($data = $db->fetch_object($res)) {
|
||||
$items[] = new MailtemplateFile($data);
|
||||
}
|
||||
}
|
||||
return $items;
|
||||
}
|
||||
|
||||
private static function getSqlFilter($filter) {
|
||||
$where = "1=1 ";
|
||||
|
||||
$db = FronkDB::singleton();
|
||||
|
||||
//var_dump($filter);exit;
|
||||
if(array_key_exists("mailtemplate_id", $filter)) {
|
||||
$mailtemplate_id = $filter['mailtemplate_id'];
|
||||
if(is_numeric($mailtemplate_id)) {
|
||||
$where .= " AND MailtemplateFile.`mailtemplate_id` = $mailtemplate_id";
|
||||
}
|
||||
}
|
||||
|
||||
if(array_key_exists("file_id", $filter)) {
|
||||
$file_id = $filter['file_id'];
|
||||
if(is_numeric($file_id)) {
|
||||
$where .= " AND MailtemplateFile.`file_id` = $file_id";
|
||||
}
|
||||
}
|
||||
|
||||
//var_dump($filter, $where);exit;
|
||||
return $where;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -16,6 +16,10 @@ hr {
|
||||
border-top: 1px solid #e7e7e7 !important;
|
||||
}
|
||||
|
||||
.text-monospace-valign-fix {
|
||||
line-height:24px;
|
||||
}
|
||||
|
||||
.table,
|
||||
.table-hover tbody tr:hover{
|
||||
color: #323a36;
|
||||
|
||||
Reference in New Issue
Block a user