Commit 23ad0265 authored by Henning Leutz's avatar Henning Leutz 🥋

neuer doc ordner; seite speichern -> besseres handling

parent 68da8e03
<?php
/**
* Clear a site name
*
* @param String $project
* @param String $lang
* @param Integer $newParentId
*
* @return String
*/
function ajax_site_clear($project, $lang, $name)
{
return \QUI\Projects\Site\Utils::clearUrl(
$name,
\QUI::getProject( $project, $lang )
);
}
\QUI::$Ajax->register(
'ajax_site_clear',
array( 'project', 'lang', 'name' ),
'Permission::checkAdminUser'
);
......@@ -370,10 +370,11 @@ define([
*
* @method classes/projects/project/Site#createChild
*
* @param {String} newname - new name of the child
* @param {String|Object} newname - String = new name of the child, Object = { name:'', title:'' }
* @param {Function} onfinish - [optional] callback function
* @param {Function} onrror - [optional] function, that is triggered if an error occurred
*/
createChild : function(newname, onfinish)
createChild : function(newname, onfinish, onerror)
{
if ( typeof newname === 'undefined' ) {
return;
......@@ -382,9 +383,23 @@ define([
var Site = this,
params = this.ajaxParams();
params.attributes = JSON.encode({
name : newname
});
if ( typeOf( newname ) == 'object' )
{
params.attributes = JSON.encode( newname );
} else
{
params.attributes = JSON.encode({
name : newname
});
}
if ( typeof onerror !== 'undefined' )
{
params.showError = false;
params.onError = onerror;
}
Ajax.post('ajax_site_children_create', function(result, Request)
{
......
Media Todo
===========
Die Bildbearbeitung sollte umgeschrieben werden.
Bildbibliotheken
-----------
- https://github.com/Intervention/image
- http://imagine.readthedocs.org/en/latest/index.html
Compression:
------------
- https://github.com/nielse63/php-image-cache
\ No newline at end of file
......@@ -12,16 +12,8 @@ use \QUI\Utils\String as StringUtils;
* Site Objekt - eine einzelne Seite
*
* @author www.pcsg.de (Henning Leutz)
* @package com.pcsg.qui.project
*
* @copyright 2008 PCSG
* @version $Revision: 4657 $
*
* @errorcodes
* <ul>
* <li>400 - __construct() Error; Bad Request; Aufruf ist falsch</li>
* <li>404 - __construct() Error; Not Found; Seite wurde nicht gefunden. Seite ist entweder inaktiv oder die Rechte fehlen</li>
* </ul>
* @errorcodes 7XX = Site Errors -> look at Site/Edit
*/
class Site extends \QUI\QDOM
......@@ -164,7 +156,7 @@ class Site extends \QUI\QDOM
$this->Events = new \QUI\Events\Event();
if ( empty( $this->_id ) ) {
throw new \QUI\Exception( 'Site Error; No ID given:'. $id, 400 );
throw new \QUI\Exception( 'Site Error; No ID given:'. $id, 700 );
}
// DB Tables
......@@ -469,11 +461,11 @@ class Site extends \QUI\QDOM
$decode = json_decode( $params, true );
if ( $decode['active'] != 1 ) {
throw new \QUI\Exception( 'Site not exist', 404 );
throw new \QUI\Exception( 'Site not exist', 705 );
}
if ( $decode['deleted'] == 1 ) {
throw new \QUI\Exception( 'Site not exist', 404 );
throw new \QUI\Exception( 'Site not exist', 705 );
}
if ( isset( $decode['linked_parent'] ) )
......@@ -507,7 +499,7 @@ class Site extends \QUI\QDOM
'quiqqer/system',
'exception.site.not.found'
),
404
705
);
}
......@@ -520,7 +512,7 @@ class Site extends \QUI\QDOM
'quiqqer/system',
'exception.site.not.found'
),
404
705
);
}
......@@ -531,7 +523,7 @@ class Site extends \QUI\QDOM
'quiqqer/system',
'exception.site.not.found'
),
404
705
);
}
......@@ -1065,7 +1057,7 @@ class Site extends \QUI\QDOM
}
throw new \QUI\Exception(
'No Child found with name '. $name, 404
'No Child found with name '. $name, 705
);
}
......@@ -1097,7 +1089,7 @@ class Site extends \QUI\QDOM
));
if ( !isset( $result[0] ) ) {
throw new \QUI\Exception( 'Child not found', 404 );
throw new \QUI\Exception( 'Child not found', 705 );
}
$this->_children[ $id ] = $this->getProject()->get( $id );
......
......@@ -13,23 +13,19 @@ use \QUI\Users\User;
use \QUI\Groups\Group;
/**
* Site Objekt für den Admibereich
*
* Stellt Methoden für den Admibereich zur Verfügung welche auf der Seite nicht benötig werden
* Hauptänderung ist das Cacheing von Änderungen und das Speichern aus der Tempdatei
* Site Objekt für den Adminbereich
* Stellt Methoden für das Bearbeiten von einer Seite zur Verfügung
*
* @author www.pcsg.de (Henning Leutz)
* @package com.pcsg.qui.project
*
* @copyright 2008 PCSG
* @since Class available since Release QUIQQER 0.1
*
* @errorcodes
* @errorcodes 7XX = Site Errors
* <ul>
* <li>701 - Error Name: 2 signs or lower</li>
* <li>702 - Error Name: Not supported signs in Name</li>
* <li>703 - Error Name: Duplicate Entry in Parent; Child width the same Name exist</li>
* <li>704 - Error Name: 200 signs or higher</li>
* <li>700 - Error Site: Bad Request; Aufruf ist falsch</li>
* <li>701 - Error Site Name: 2 signs or lower</li>
* <li>702 - Error Site Name: Not supported signs in Name</li>
* <li>703 - Error Site Name: Duplicate Entry in Parent; Child width the same Name exist</li>
* <li>704 - Error Site Name: 200 signs or higher</li>
* <li>705 - Error Site : Site not found</li>
* </ul>
*
* @todo Sortierung als eigene Methoden
......@@ -189,11 +185,8 @@ class Edit extends \QUI\Projects\Site
if ( !isset( $result[0] ) )
{
throw new \QUI\Exception(
\QUI::getLocale()->get(
'quiqqer/system',
'exception.site.not.found'
),
404
\QUI::getLocale()->get( 'quiqqer/system', 'exception.site.not.found' ),
705
);
}
......@@ -235,10 +228,7 @@ class Edit extends \QUI\Projects\Site
} catch ( \QUI\Exception $Exception )
{
throw new \QUI\Exception(
\QUI::getLocale()->get(
'quiqqer/system',
'exception.permissions.edit'
)
\QUI::getLocale()->get( 'quiqqer/system', 'exception.permissions.edit' )
);
}
......@@ -457,7 +447,7 @@ class Edit extends \QUI\Projects\Site
// check the name, unallowed signs?
$name = $this->getAttribute( 'name' );
self::checkName( $name );
\QUI\Projects\Site\Utils::checkName( $name );
/* @var $Project \QUI\Projects\Project */
......@@ -925,11 +915,11 @@ class Edit extends \QUI\Projects\Site
}
if ( $this->existNameInChildren( $new_name ) ) {
throw new \QUI\Exception( 'Name exist', 401 );
throw new \QUI\Exception( 'Name exist', 703 );
}
// can we use this name?
self::checkName( $new_name );
\QUI\Projects\Site\Utils::checkName( $new_name );
......@@ -1119,7 +1109,7 @@ class Edit extends \QUI\Projects\Site
{
throw new \QUI\Exception(
'Es kann keine Verknüpfung in dieser Ebene erstellt werden,
da eine Verknüpfung oder die original Seite bereits in dieser Ebene existiert', 400
da eine Verknüpfung oder die original Seite bereits in dieser Ebene existiert', 703
);
}
......@@ -1136,7 +1126,7 @@ class Edit extends \QUI\Projects\Site
{
throw new \QUI\Exception(
'Es kann keine Verknüpfung in dieser Ebene erstellt werden,
da eine Verknüpfung oder die original Seite bereits in dieser Ebene existiert', 400
da eine Verknüpfung oder die original Seite bereits in dieser Ebene existiert', 703
);
}
}
......@@ -1367,38 +1357,11 @@ class Edit extends \QUI\Projects\Site
* @param String $url
* @param \QUI\Projects\Project $Project - Project clear extension
* @return String
* @deprecated use \QUI\Projects\Site\Utils::clearUrl
*/
static function clearUrl($url, \QUI\Projects\Project $Project)
{
$signs = array(
'-', '.', ',', ':', ';',
'#', '`', '!', '§', '$',
'%', '&', '?', '<', '>',
'=', '\'', '"', '@', '_',
']', '[', '+', '/'
);
$url = str_replace($signs, '', $url);
//$url = preg_replace('[-.,:;#`!§$%&/?<>\=\'\"\@\_\]\[\+]', '', $url);
// doppelte leerzeichen löschen
$url = preg_replace('/([ ]){2,}/', "$1", $url);
// URL Filter
$name = $Project->getAttribute('name');
$filter = USR_DIR .'lib/'. $name .'/url.filter.php';
$func = 'url_filter_'. $name;
if ( file_exists( $filter ) )
{
require_once $filter;
if ( function_exists( $func ) ) {
$url = $func( $url );
}
}
return $url;
return \QUI\Projects\Site\Utils::clearUrl( $url, $Project );
}
/**
......@@ -1407,41 +1370,10 @@ class Edit extends \QUI\Projects\Site
* @param unknown_type $name
* @throws \QUI\Exception
* @return Bool
* @deprecated use \QUI\Projects\Site\Utils::checkName
*/
static function checkName($name)
{
if ( !isset( $name ) )
{
throw new \QUI\Exception(
'Bitte gebe einen Titel ein'
);
}
if ( strlen( $name ) <= 2 )
{
throw new \QUI\Exception(
'Die URL muss mehr als 2 Zeichen lang sein',
701
);
}
if ( strlen( $name ) > 200 )
{
throw new \QUI\Exception(
'Die URL darf nicht länger als 200 Zeichen lang sein',
704
);
}
// Prüfung des Namens - Sonderzeichen
if ( preg_match("@[-.,:;#`!§$%&/?<>\=\'\"\@\_\]\[\+]@", $name ))
{
throw new \QUI\Exception(
'In der URL "'. $name .'" dürfen folgende Zeichen nicht verwendet werden: _-.,:;#@`!§$%&/?<>=\'"[]+',
702
);
}
return true;
return \QUI\Projects\Site\Utils::checkName( $name );
}
}
......@@ -6,9 +6,10 @@
namespace QUI\Projects\Site;
use \QUI\Utils\String as StringUtils;
use \QUI\Utils\XML;
use \QUI\Utils\DOM;
use QUI;
use QUI\Utils\String as StringUtils;
use QUI\Utils\XML;
use QUI\Utils\DOM;
/**
* Site Utils - Site Helper
......@@ -17,6 +18,91 @@ use \QUI\Utils\DOM;
*/
class Utils
{
/**
* Prüft ob der Name erlaubt ist
*
* @param unknown_type $name
* @throws \QUI\Exception
* @return Bool
*/
static function checkName($name)
{
if ( !isset( $name ) )
{
throw new \QUI\Exception(
'Bitte gebe einen Titel ein'
);
}
if ( strlen( $name ) <= 2 )
{
throw new \QUI\Exception(
'Die URL muss mehr als 2 Zeichen lang sein',
701
);
}
if ( strlen( $name ) > 200 )
{
throw new \QUI\Exception(
'Die URL darf nicht länger als 200 Zeichen lang sein',
704
);
}
// Prüfung des Namens - Sonderzeichen
if ( preg_match("@[-.,:;#`!§$%&/?<>\=\'\"\@\_\]\[\+]@", $name ))
{
throw new \QUI\Exception(
'In der URL "'. $name .'" dürfen folgende Zeichen nicht verwendet werden: _-.,:;#@`!§$%&/?<>=\'"[]+',
702
);
}
return true;
}
/**
* Säubert eine URL macht sie schön
*
* @param String $url
* @param \QUI\Projects\Project $Project - Project clear extension
* @return String
*/
static function clearUrl($url, \QUI\Projects\Project $Project)
{
$signs = array(
'-', '.', ',', ':', ';',
'#', '`', '!', '§', '$',
'%', '&', '?', '<', '>',
'=', '\'', '"', '@', '_',
']', '[', '+', '/'
);
$url = str_replace($signs, '', $url);
//$url = preg_replace('[-.,:;#`!§$%&/?<>\=\'\"\@\_\]\[\+]', '', $url);
// doppelte leerzeichen löschen
$url = preg_replace('/([ ]){2,}/', "$1", $url);
// @todo als event
// URL Filter
$name = $Project->getAttribute('name');
$filter = USR_DIR .'lib/'. $name .'/url.filter.php';
$func = 'url_filter_'. $name;
if ( file_exists( $filter ) )
{
require_once $filter;
if ( function_exists( $func ) ) {
$url = $func( $url );
}
}
return $url;
}
/**
* Return database.xml list for the Site Object
*
......
User-Agent: *
Disallow: /ajax.php
Disallow: /update.php
Disallow: /cron.php
Disallow: /mail_protection.php
Disallow: /header.php
Disallow: /opt/
Disallow: /usr/
Disallow: /bin/
\ No newline at end of file
File deleted
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment