mirror of
https://github.com/typemill/typemill.git
synced 2025-07-30 19:00:32 +02:00
Moved logo to image folder
This commit is contained in:
85
plugins/demouser/demouser.php
Normal file
85
plugins/demouser/demouser.php
Normal file
@@ -0,0 +1,85 @@
|
||||
<?php
|
||||
|
||||
namespace Plugins\demouser;
|
||||
|
||||
use \Typemill\Plugin;
|
||||
|
||||
class Demouser extends Plugin
|
||||
{
|
||||
public static function getSubscribedEvents()
|
||||
{
|
||||
return array(
|
||||
'onSystemnaviLoaded' => 'onSystemnaviLoaded',
|
||||
'onRolesPermissionsLoaded' => 'onRolesPermissionsLoaded',
|
||||
'onPageReady' => 'onPageReady',
|
||||
);
|
||||
}
|
||||
|
||||
# add routes
|
||||
public static function addNewRoutes()
|
||||
{
|
||||
return [
|
||||
['httpMethod' => 'get', 'route' => '/tm/demoaccess', 'name' => 'demoaccess.show', 'class' => 'Typemill\Controllers\ControllerSettings:showBlank', 'resource' => 'user', 'privilege' => 'view'],
|
||||
];
|
||||
}
|
||||
|
||||
# add new navi-items into the admin settings
|
||||
public function onSystemnaviLoaded($navidata)
|
||||
{
|
||||
$this->addSvgSymbol('<symbol id="icon-key" viewBox="0 0 32 32"><path d="M22 0c-5.523 0-10 4.477-10 10 0 0.626 0.058 1.238 0.168 1.832l-12.168 12.168v6c0 1.105 0.895 2 2 2h2v-2h4v-4h4v-4h4l2.595-2.595c1.063 0.385 2.209 0.595 3.405 0.595 5.523 0 10-4.477 10-10s-4.477-10-10-10zM24.996 10.004c-1.657 0-3-1.343-3-3s1.343-3 3-3 3 1.343 3 3-1.343 3-3 3z"></path></symbol>');
|
||||
$navi = $navidata->getData();
|
||||
|
||||
$navi['Demoaccess'] = ['routename' => 'demoaccess.show', 'icon' => 'icon-key', 'aclresource' => 'user', 'aclprivilege' => 'view'];
|
||||
|
||||
# set the navigation item active
|
||||
if(trim($this->getPath(),"/") == 'tm/demoaccess')
|
||||
{
|
||||
$navi['Demoaccess']['active'] = true;
|
||||
}
|
||||
|
||||
$navidata->setData($navi);
|
||||
}
|
||||
|
||||
|
||||
public function onRolesPermissionsLoaded($rolesAndPermissions)
|
||||
{
|
||||
$rolesPermissions = $rolesAndPermissions->getData();
|
||||
|
||||
$demoauthor = [
|
||||
'name' => 'demoauthor',
|
||||
'inherits' => 'author',
|
||||
'permissions' => [
|
||||
'mycontent' => ['delete'],
|
||||
'content' => ['create', 'update'],
|
||||
]
|
||||
];
|
||||
$rolesPermissions['demoauthor'] = $demoauthor;
|
||||
$rolesAndPermissions->setData($rolesPermissions);
|
||||
}
|
||||
|
||||
# show subscriberlist in admin area
|
||||
public function onPageReady($data)
|
||||
{
|
||||
# admin stuff
|
||||
if($this->adminpath && $this->path == 'tm/demoaccess')
|
||||
{
|
||||
$settings = $this->getSettings();
|
||||
$username = isset($settings['plugins']['demouser']['demouser']) ? $settings['plugins']['demouser']['demouser'] : 'not set';
|
||||
$password = isset($settings['plugins']['demouser']['demopassword']) ? $settings['plugins']['demouser']['demopassword'] : 'not set';
|
||||
|
||||
$pagedata = $data->getData();
|
||||
|
||||
$twig = $this->getTwig();
|
||||
$loader = $twig->getLoader();
|
||||
$loader->addPath(__DIR__ . '/templates');
|
||||
|
||||
# fetch the template and render it with twig
|
||||
$content = $twig->fetch('/demouser.twig', ['username' => $username, 'password' => $password]);
|
||||
|
||||
$pagedata['content'] = $content;
|
||||
|
||||
$data->setData($pagedata);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
18
plugins/demouser/demouser.yaml
Normal file
18
plugins/demouser/demouser.yaml
Normal file
@@ -0,0 +1,18 @@
|
||||
name: Demouser
|
||||
version: 1.0.0
|
||||
description: Add a new userrole for the demo-instance
|
||||
author: Sebastian Schürmanns
|
||||
homepage: https://typemill.net
|
||||
licence: MIT
|
||||
list: false
|
||||
|
||||
forms:
|
||||
fields:
|
||||
|
||||
demouser:
|
||||
type: text
|
||||
label: Username for demo
|
||||
|
||||
demopassword:
|
||||
type: text
|
||||
label: Password for demo
|
10
plugins/demouser/templates/demouser.twig
Normal file
10
plugins/demouser/templates/demouser.twig
Normal file
@@ -0,0 +1,10 @@
|
||||
<div class="mh3">
|
||||
|
||||
<h1>Ihr Demo-Zugang</h1>
|
||||
<p>Mit den folgenden Angaben haben Sie Zugang zur <a href="https://demo.typemill.pro" target="_blank">Typemill-Demo</a>. Die Zugangsdaten werden regelmäßig erneuert.</p>
|
||||
<ul>
|
||||
<li>Username: <strong>{{username}}</strong></li>
|
||||
<li>Passwort: <strong>{{password}}</strong></li>
|
||||
</ul>
|
||||
<p>Mit den Zugangsaten erhalten Sie vollen Zugriff als Administrator, sodass Sie das System ausgiebig testen können. Das System wird regelmäßig in den Ursprungszustand zurückgesetzt.</p>
|
||||
</div>
|
@@ -72,7 +72,15 @@ class ControllerFrontendWebsite extends ControllerShared
|
||||
$logo = false;
|
||||
if(isset($this->settings['logo']) && $this->settings['logo'] != '')
|
||||
{
|
||||
$logo = 'media/files/' . $this->settings['logo'];
|
||||
# check if logo exists
|
||||
if(file_exists($this->settings['rootPath'] . 'media/live/' . $this->settings['logo']))
|
||||
{
|
||||
$logo = 'media/live/' . $this->settings['logo'];
|
||||
}
|
||||
elseif(file_exists($this->settings['rootPath'] . 'media/files/' . $this->settings['logo']))
|
||||
{
|
||||
$logo = 'media/files/' . $this->settings['logo'];
|
||||
}
|
||||
}
|
||||
|
||||
$favicon = false;
|
||||
|
@@ -82,7 +82,7 @@ class ControllerSettings extends ControllerShared
|
||||
$files = $request->getUploadedFiles();
|
||||
$newSettings = isset($params['settings']) ? $params['settings'] : false;
|
||||
$validate = new Validation();
|
||||
$processFiles = new ProcessFile();
|
||||
$processImage = new ProcessImage();
|
||||
|
||||
if($newSettings)
|
||||
{
|
||||
@@ -151,7 +151,7 @@ class ControllerSettings extends ControllerShared
|
||||
return $response->withRedirect($this->c->router->pathFor('settings.show'));
|
||||
}
|
||||
|
||||
if(!$processFiles->checkFolders())
|
||||
if(!$processImage->checkFolders())
|
||||
{
|
||||
$this->c->flash->addMessage('error', 'Please make sure that your media folder exists and is writable.');
|
||||
return $response->withRedirect($this->c->router->pathFor('settings.show'));
|
||||
@@ -159,9 +159,9 @@ class ControllerSettings extends ControllerShared
|
||||
|
||||
# handle single input with single file upload
|
||||
$logo = $files['settings']['logo'];
|
||||
$allowed = ['jpg', 'jpeg', 'png', 'svg'];
|
||||
if($logo->getError() === UPLOAD_ERR_OK)
|
||||
{
|
||||
$allowed = ['jpg', 'jpeg', 'png', 'svg'];
|
||||
$extension = pathinfo($logo->getClientFilename(), PATHINFO_EXTENSION);
|
||||
if(!in_array(strtolower($extension), $allowed))
|
||||
{
|
||||
@@ -170,12 +170,20 @@ class ControllerSettings extends ControllerShared
|
||||
return $response->withRedirect($this->c->router->pathFor('settings.show'));
|
||||
}
|
||||
|
||||
$processFiles->deleteFileWithName('logo');
|
||||
$newSettings['logo'] = $processFiles->moveUploadedFile($logo, $overwrite = true, $name = 'logo');
|
||||
foreach($allowed as $logoextension)
|
||||
{
|
||||
$processImage->deleteImage('logo.' . $logoextension);
|
||||
}
|
||||
|
||||
$newSettings['logo'] = $processImage->moveUploadedImage($logo, $overwrite = true, $name = 'logo');
|
||||
$processImage->copyImage('logo.' . $logoextension, $processImage->liveFolder, $processImage->thumbFolder);
|
||||
}
|
||||
elseif(isset($params['settings']['deletelogo']) && $params['settings']['deletelogo'] == 'delete')
|
||||
{
|
||||
$processFiles->deleteFileWithName('logo');
|
||||
foreach($allowed as $logoextension)
|
||||
{
|
||||
$processImage->deleteImage('logo.' . $logoextension);
|
||||
}
|
||||
$newSettings['logo'] = '';
|
||||
}
|
||||
else
|
||||
@@ -195,7 +203,7 @@ class ControllerSettings extends ControllerShared
|
||||
return $response->withRedirect($this->c->router->pathFor('settings.show'));
|
||||
}
|
||||
|
||||
$processImage = new ProcessImage([
|
||||
$processFavImage = new ProcessImage([
|
||||
'16' => ['width' => 16, 'height' => 16],
|
||||
'32' => ['width' => 32, 'height' => 32],
|
||||
'72' => ['width' => 72, 'height' => 72],
|
||||
@@ -203,19 +211,19 @@ class ControllerSettings extends ControllerShared
|
||||
'144' => ['width' => 144, 'height' => 144],
|
||||
'180' => ['width' => 180, 'height' => 180],
|
||||
]);
|
||||
$favicons = $processImage->generateSizesFromImageFile('favicon.png', $favicon->file);
|
||||
$favicons = $processFavImage->generateSizesFromImageFile('favicon.png', $favicon->file);
|
||||
|
||||
foreach($favicons as $key => $favicon)
|
||||
{
|
||||
imagepng( $favicon, $processFiles->fileFolder . 'favicon-' . $key . '.png' );
|
||||
# $processFiles->moveUploadedFile($favicon, $overwrite = true, $name = 'favicon-' . $key);
|
||||
imagepng( $favicon, $processFavImage->fileFolder . 'favicon-' . $key . '.png' );
|
||||
}
|
||||
|
||||
$newSettings['favicon'] = 'favicon';
|
||||
}
|
||||
elseif(isset($params['settings']['deletefav']) && $params['settings']['deletefav'] == 'delete')
|
||||
{
|
||||
$processFiles->deleteFileWithName('favicon');
|
||||
$processFiles = new ProcessFile();
|
||||
$processFiles->deleteFileWithName('favicon-*.png');
|
||||
$newSettings['favicon'] = '';
|
||||
}
|
||||
else
|
||||
|
@@ -13,7 +13,7 @@ class ProcessFile extends ProcessAssets
|
||||
* @param UploadedFile $uploadedFile file uploaded file to move
|
||||
* @return string filename of moved file
|
||||
*/
|
||||
public function moveUploadedFile(UploadedFile $uploadedFile, $overwrite = false, $name = false)
|
||||
public function moveUploadedFile(UploadedFile $uploadedFile, $overwrite = false, $name = false, $folder = NULL)
|
||||
{
|
||||
$this->setFileName($uploadedFile->getClientFilename(), 'file');
|
||||
|
||||
@@ -104,7 +104,7 @@ class ProcessFile extends ProcessAssets
|
||||
|
||||
if($name != '' && !in_array($name, array(".","..")))
|
||||
{
|
||||
foreach(glob($this->fileFolder . $name . '.*') as $file)
|
||||
foreach(glob($this->fileFolder . $name) as $file)
|
||||
{
|
||||
unlink($file);
|
||||
}
|
||||
|
@@ -1,6 +1,7 @@
|
||||
<?php
|
||||
namespace Typemill\Models;
|
||||
|
||||
use Slim\Http\UploadedFile;
|
||||
use Typemill\Models\Helpers;
|
||||
|
||||
class ProcessImage extends ProcessAssets
|
||||
@@ -261,6 +262,32 @@ class ProcessImage extends ProcessAssets
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Moves the uploaded file to the upload directory. Only used for settings / NON VUE.JS uploads
|
||||
*
|
||||
* @param string $directory directory to which the file is moved
|
||||
* @param UploadedFile $uploadedFile file uploaded file to move
|
||||
* @return string filename of moved file
|
||||
*/
|
||||
public function moveUploadedImage(UploadedFile $uploadedFile, $overwrite = false, $name = false, $folder = NULL)
|
||||
{
|
||||
$this->setFileName($uploadedFile->getClientFilename(), 'file');
|
||||
|
||||
if($name)
|
||||
{
|
||||
$this->setFileName($name . '.' . $this->extension, 'file', $overwrite);
|
||||
}
|
||||
|
||||
if(!$folder)
|
||||
{
|
||||
$folder = $this->liveFolder;
|
||||
}
|
||||
|
||||
$uploadedFile->moveTo($folder . $this->getFullName());
|
||||
|
||||
return $this->getFullName();
|
||||
}
|
||||
|
||||
public function deleteImage($name)
|
||||
{
|
||||
@@ -301,6 +328,35 @@ class ProcessImage extends ProcessAssets
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
public function deleteImageWithName($name)
|
||||
{
|
||||
# e.g. delete $name = 'logo...';
|
||||
|
||||
$name = basename($name);
|
||||
|
||||
if($name != '' && !in_array($name, array(".","..")))
|
||||
{
|
||||
foreach(glob($this->liveFolder . $name) as $file)
|
||||
{
|
||||
unlink($file);
|
||||
}
|
||||
foreach(glob($this->originalFolder . $name) as $file)
|
||||
{
|
||||
unlink($file);
|
||||
}
|
||||
foreach(glob($this->thumbFolder . $name) as $file)
|
||||
{
|
||||
unlink($file);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function copyImage($name,$sourcefolder,$targetfolder)
|
||||
{
|
||||
copy($sourcefolder . $name, $targetfolder . $name);
|
||||
}
|
||||
|
||||
/*
|
||||
* scans content of a folder (without recursion)
|
||||
* vars: folder path as string
|
||||
|
Reference in New Issue
Block a user