From 4eb6b37363da2c1597bf7bfb7de943543715b45f Mon Sep 17 00:00:00 2001 From: Oldperl <44996956+oldperl@users.noreply.github.com> Date: Fri, 13 Jan 2017 12:56:28 +0000 Subject: [PATCH] remove deprecated docs folder --- docs/techref/backend/backend.autoloader.html | 213 ------- .../techref/backend/backend.customizing.1.gif | Bin 3358 -> 0 bytes docs/techref/backend/backend.customizing.html | 537 ------------------ docs/techref/backend/backend.localconfig.html | 60 -- docs/techref/backend/backend.plugauth.html | 85 --- docs/techref/backend/conlogo.gif | Bin 1325 -> 0 bytes docs/techref/frontend/conlogo.gif | Bin 5334 -> 0 bytes .../frontend/frontend.customizing.html | 120 ---- .../frontend/frontend.permissions.html | 118 ---- .../frontend.protectedcategories.html | 104 ---- docs/techref/frontend/frontend.session.html | 118 ---- docs/techref/modules/conlogo.gif | Bin 5334 -> 0 bytes docs/techref/modules/module.login.html | 148 ----- docs/techref/modules/output-gen.jpg | Bin 14270 -> 0 bytes docs/techref/modules/writing.modules.html | 172 ------ .../plugins/Contenido Extension Chainer.pdf | Bin 57226 -> 0 bytes docs/techref/plugins/conlogo.gif | Bin 5334 -> 0 bytes docs/techref/plugins/plugin.config.html | 119 ---- docs/translators/translating.doc | Bin 46080 -> 0 bytes 19 files changed, 1794 deletions(-) delete mode 100644 docs/techref/backend/backend.autoloader.html delete mode 100644 docs/techref/backend/backend.customizing.1.gif delete mode 100644 docs/techref/backend/backend.customizing.html delete mode 100644 docs/techref/backend/backend.localconfig.html delete mode 100644 docs/techref/backend/backend.plugauth.html delete mode 100644 docs/techref/backend/conlogo.gif delete mode 100644 docs/techref/frontend/conlogo.gif delete mode 100644 docs/techref/frontend/frontend.customizing.html delete mode 100644 docs/techref/frontend/frontend.permissions.html delete mode 100644 docs/techref/frontend/frontend.protectedcategories.html delete mode 100644 docs/techref/frontend/frontend.session.html delete mode 100644 docs/techref/modules/conlogo.gif delete mode 100644 docs/techref/modules/module.login.html delete mode 100644 docs/techref/modules/output-gen.jpg delete mode 100644 docs/techref/modules/writing.modules.html delete mode 100644 docs/techref/plugins/Contenido Extension Chainer.pdf delete mode 100644 docs/techref/plugins/conlogo.gif delete mode 100644 docs/techref/plugins/plugin.config.html delete mode 100644 docs/translators/translating.doc diff --git a/docs/techref/backend/backend.autoloader.html b/docs/techref/backend/backend.autoloader.html deleted file mode 100644 index 3fd1966..0000000 --- a/docs/techref/backend/backend.autoloader.html +++ /dev/null @@ -1,213 +0,0 @@ - - - - - Contenido - Autoloader for class type files - - - - - - - -
-

Introduction

-

Contenido provides autoloading for source files of classes/interfaces which are -delivered by a Contenido package.
-The main goal of autoloading is to reduce the list of needed includes which is usually -at the beginning of scripts. By implementing a autoloader, the PHP engine has the -possibility to load the file while trying to use a class/interface.

-
- - -
-

How it works?

-

The Contenido autoloader will be initialized during the application startup process. -The autoloading solution in Contenido uses the class map strategy. It uses a generated -class map configuration file, which is available inside contenido/includes/ folder.

-
contenido/includes/config.autoloader.php
-

Each class type name is pointed to a file which contains the implementation of the -required class type. By trying to use a class type, the autoloader will load the -needed file if not done before.
-
-Example:
-Usually you have to ensure that a class file is already loaded by using include/require -statements or by using Contenido's cInclude function:

-
-cInclude('classes', 'class.article.php');
-$oArt = new Article();
-
- -

With a autoloader the manually loading is not required anymore.

-
-$oArt = new Article();
-
-
- - -
-

Classes/Interfaces available by the autoloader

-

At the moment all available classes/interfaces inside following directories -of a Contenido installation:

-
-contenido/classes/
-
-

NOTE:
-The autoloader doesn't handle loading of files which don't belong to the Contenido package. -This means, additional added files (e. g. user defined classes/libraries) aren't -automatically available for the autoloader. Read the section below, if you want to -provide autoloading of additional class type files.

-
- - -
-

Extending the class map configuration

-

Don't edit the class map configuration manually, the next update could overwrite -your changes. The autoloading is extendable by adding a additional user defined class map -file inside the "includes" folder, which could contain further class map settings or -could overwrite settings of main class map file.

-
contenido/includes/config.autoloader.local.php
-

This file will not be overwritten during a update.
-
-The content of the user defined file should have the following structure:

-
-<?php
-return array(
-    '{classname_1}' => '{path_to_classfile_1}',
-    '{classname_2}' => '{path_to_classfile_2}',
-    '{classname_3}' => '{path_to_classfile_3}',
-);
-
-

Where {classname_X} is the name of the class/interface and {path_to_classfile_X} is the -path (from Contenido installation folder) to the file which contains the implementation of the class/interface.

- -

Example:
-Let's assume that Contenido is installed in folder /var/www/ which contains a -additional library "myLib" (full path: /var/www/myLib/) with a class "myFoobarClass" -in file "class.myfoobarclass.php" (full path: /var/www/myLib/class.myfoobarclass.php). -Then the user defined class map file should contain a entry for this like:

-
-<?php
-return array(
-    ...
-    'myFoobarClass' => 'myLib/class.myfoobarclass.php',
-    ...
-);
-
-
- - -
-

Auto generation of user defined class map configuration

-

If you don't want to maintain the user defined class map configuration manually, then -you may let a copy of the command line script (which is adapted to your requirements) -contenido/tools/create_autoloader_cfg.php -to do the job.
-
-Do following steps to achieve this:

- -
- -
-

Extending Contenido core with autoload mechanism

-

By using the Contenido autoloader it's possible to extend/overwrite Contenido core classes - (except classes inside conlib directory) without changing the core files.

-

Let's assume, you want to use your own Template class in Modules, but everything should - still be downwards compatible.
-
-Do following steps to achieve this:

- -

-NOTE:
-There is one main disadvantage by using this way of extending the Contenido core. -Each time after an update of your Contenido installation it's strongly recommend -to check your user defined implementations against changes in original Contenido -core files and, if applicable, to adapt your files to those changes.

-
- - - diff --git a/docs/techref/backend/backend.customizing.1.gif b/docs/techref/backend/backend.customizing.1.gif deleted file mode 100644 index 1b45f0e6c200c05e9a7acbb0d2e94c717a99c006..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3358 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 diff --git a/docs/techref/backend/backend.customizing.html b/docs/techref/backend/backend.customizing.html deleted file mode 100644 index 91ad0f8..0000000 --- a/docs/techref/backend/backend.customizing.html +++ /dev/null @@ -1,537 +0,0 @@ - - - - - Contenido - Backend customizing - - - - -
- Contenido Logo -

Backend customizing (V. 4.8.x)

-
-
- -

Introduction

-Backend customizing is a mechanism to customize various parameters of -the backend. There are not many settings you can do, as this mechanism -is relatively new. However, this mechanism will be used more and more -in the future.
-
-

How it works

-Customizing Contenido settings is very easy and can be done via the -group or user customizing settings. Here's an example for the user -customizing:
-
-
-
-Important: User settings have precendence before group settings. User -settings always override group settings. If the user is added to more -than one group, the result is undefined. Make sure that your groups -don't override each other.
-
-

Common parameters

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Area/TypePropertyValue (Description)Applies to
backendcurrentlogintimeDate and Time when this session has been started (automatically set by the backend)Users
backendlastlogintimeDate and Time when the last session was started (automatically set by the backend)Users
backendpreferred_idclientID of the client which should be selected after backend loginSystem, Clients, Groups, Users
backendleftframewidthDefines the width of the left frame. Standard - value is 250.System, Clients, Group, Users
backendsmall-navigation(true, false): If true, a small navigation is shown. Default: falseSystem, Clients, Groups, Users
articlesshow-new-window-checkbox - (true, false): If true, show "new window" checkbox for redirects in article properties. - Note: If a redirect has been specified, the page is redirected to the new URL using an html - page header. As header redirects can't open new windows, this setting is only useful, - if a navigation module is used, which mentions the "open in new window" setting and - adds a ′target="_blank"′ to the link, if necessary. Default: false - System, Clients, Groups, Users
cms_imgdirectory-heightHeight of the directory lister in rows, default 5System, Groups, Users
cms_imgdirectory-widthWidth of the directory lister in pixels, default 300System, Groups, Users
cms_imgfile-heightHeight of the file lister in rows, default 5System, Groups, Users
cms_imgfile-widthWidth of the file lister in pixels, default 300System, Groups, Users
cms_imgdescription-heightHeight of the description box in rows, default 5System, Groups, Users
cms_imgdescription-widthWidth of the description box in characters, default 70System, Groups, Users
cms_imgpreview-heightHeight of the preview area in pixels, default 400System, Groups, Users
cms_imgpreview-widthWidth of the preview window in pixels, default 600System, Groups, Users
imagemagickavailableSet "1" if ImageMagick is available on your server to receive best results when resizing imagesSystem, Groups, Users
modulesjava-editEnable the java module editorSystem, Groups, Users
modulesedit-with-tabs(true, false) If set to "true" you can use the <tab> key to insert tabs in the input and output code areas (IE 6/7, FF 1.5/2). Default: falseSystem, Clients, Groups, Users
modulesdisable-history(true, false) If true, don't use the module history. Default: falseSystem, Clients, Groups, Users
modulesstoreasfilesDefines if Contenido should store modules as text files. THIS IS HIGHLY EXPERIMENTAL, ONLY USE IF YOU KNOW WHAT YOU ARE DOING! Default off.System
modulesloadfromfilesDefines if Contenido should load modules as text files. THIS IS HIGHLY EXPERIMENTAL, ONLY USE IF YOU KNOW WHAT YOU ARE DOING! Default off.System
modulesforce-menu-checkIf system/modulecheck is enabled, force module check while module list will be generated (instead of using database information). Default $quot;false$quot;.System, Clients, Groups, Users
systemmodulecheckif set to "false" (as string), modules aren't tested for syntax errors (needed for older PHP versions)System
systemlanguageorderIf set to "name", languages in the drop-down (top right) will be shown ordered by name, - if not specified or set to something else, languages will be ordered by language id (default)System, Clients, Groups, Users
systemmultiassignIf false, don't allow multi assignments for articles.System, Clients
layouthtmlvalidator(true, false): If true, use the HTML validator. Default: trueSystem, Groups, Users
newsletteroption-cronjob-available(true, false): If true, then a newsletter - option can be activated to send the newsletter using cron jobs. Note, that - this option should only be used, if a real cron service is available - (do not use the Contenido built-in pseudo cron service). Additionally, - note, that there is a send job file available in the contenido/cronjobs - folder, but it hasn't been added to the cron job list - just generate - a real cron job on your server running this file. Default: falseSystem, Clients, Users
newsletterdisable-rn-replacement(true, false): If true, "\r\n" will not - be replaced by just "\n" to prevent double lines in mails. This may be - a good idea on Windows-Servers. Usually, use the default setting. Default: falseSystem
newsletterremove_base_tag(true, false): Usually every article contains a "e;base href"e; - tag. This is nice, as all links, URLs and sources can be relative and we can - move the client around, as we like.

But there is a problem with anchors: They - only work, if the link to the anchor (on the same page) contains the URL of the - current article (e.g. "front_content.php?idart=77#MyAnchor"). This works - fine, if you are on the website, but not, if you use anchors in html newsletter - articles (as the mail doesn't has this URL).

If you like to use anchors in html - newsletters, set this setting to "true" and check everything twice, as - also all URLs and source path will be changed by Contenido code. Default: false
Client
newsletterhtml_username
html_password
If the frontend (the website) is proteced - using .htaccess (username/password), you have to specify html_username and - html_password to be able to send html newsletters (as html newsletters - are just usual articles). Default: empty or not specifiedClient
frontenduserspluginsearch(true, false): If true, the frontend users - menu also searches trough plugins. However, searching trough plugins - have a huge performance inpact on the list. If you have alot of frontend - users, set this to false to disable this function. Default: trueSystem, Clients, Users
frontenduserspluginsearch_valid_pluginsIf pluginsearch is set to true, you can hereby - limit the plugins to search over. This property must be a comma-separated list - (no whitespaces) of all plugins that should be used for pluginsearch. - All other plugins will be skipped to improve performance.System, Clients, Users
generatorxhtml(true, false): Defines if the tags generated by Contenido - should be XHTML compliant. WARNING: This does not alter the HTML code - in your layouts and modules! You have to revise your modules and layouts - to be XHTML compliant. Default: false.System, Clients
generatorbasehref(true, false): Defines if Contenido should automatically - insert a base href tag. Default: true.System, Clients
edit_areaactivated(true, false): Defines if syntax highlighting editor is used in backend for modul, js, css and html code Default: true.System, Clients, Groups, Users
systeminsight_editing_activated(true, false): Defines if insight editing is used in article editorSystem, Clients, Groups, Users
maintenancemode(disabled, enabled): In maintenance mode, only sysadmins are allowed to login into contenido backend. Default: disabledSystem
pw_requestenable(true, false): Property definies if contanido is allowed to generate new passwords for backenduser and submits them via mail. Default: trueSystem
systemmail_hostHost which is used for sending system mails (PW-Request). Default: localhostSystem
systemmail_senderSender mail-adress of Contenido Systemmails. (PW-Request). Default: info@contenido.orgSystem
systemmail_sender_nameSender name of Contenido Systemmails. (PW-Request). Default: Contenido BackendSystem
updatecheck(true, false): Update checker notifies sysadmins, if there are new updates for contenido on contenido org. Default: false System
updatenews_feed(true, false): Update RSS News notifies sysadmins, about news on contenido org and security issues. Default: false System
-
- -

tinyMCE-related Parameters

-Starting with Contenido V4.6.16 all tinyMCE settings which may be specified for tinyMCE -and the plugins may be specified as system, client, group or user setting. Use "tinymce" -as type and as name the name of the parameter according to the tinyMCE documentation.
-
-These parameters can't be set using a setting: document_base_url, file_browser_callback
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
tinymcecontent_cssDefines the stylesheet to - include within tinyMCE (<= V4.6.15: wysiwyg/tinymce-stylesheet-file).System, Groups, Users
tinymcetheme_advanced_stylesDefines the available styles in the tinyMCE style - dropdown (<= V4.6.15: wysiwyg/tinymce-styles)System, Groups, Users
tinymcewidthDefines the width of tinyMCE (<= V4.6.15: wysiwyg/tinymce-width, - default 100%)System, Groups, Users
tinymceheightDefines the height if tinyMCE (<= V4.6.15: wysiwyg/tinymce-height, - default 480px)System, Groups, Users
tinymcecontenido_height_htmlOverrides the tinyMCE height when editing - the CMS_HTML element (<= V4.6.15: wysiwyg/tinymce-height-html) - System, Groups, Users
tinymcecontenido_height_headOverrides the tinyMCE height when editing - the CMS_HTMLHEAD element (<= V4.6.15: wysiwyg/tinymce-height-head)System, Groups, Users
tinymcecontenido_gzipIf set to "true" use gzip compression. - The server has to provide the compression method. Default: "false"System, Groups, Users
tinymcecontenido_toolbar_modeDefines the tinyMCE toolbar mode (default - "full"). Available choices: full, simple, mini, custom (<= V4.6.15: wysiwyg/tinymce-toolbar-mode)System, Groups, Users
tinymcetheme_advanced_buttons1
- theme_advanced_buttons2
- theme_advanced_buttons3
Defines which items should be shown on - the first/second/third toolbar. Please have a look at the tinyMCE documentation to - find out which items you can use (<= V4.6.15: wysiwyg/tinymce-toolbar1/2/3). - Only used if the toolbar mode is "custom".System, Groups, Users
tinymcepluginsDefines which plugins should be loaded - (<= V4.6.15: wysiwyg/tinymce-plugins). Only used if the toolbar mode is "custom".System, Groups, Users
tinymcevalid_elementsDefines which elements are allowed. See - tinyMCE documentation for more information (<= V4.6.15: wysiwyg/tinymce-valid-elements).
- Default: +a[name|href|target|title],strong/b[class],em/i[class],strike[class],u[class], - p[dir|class|align],ol,ul,li,br,img[class|src|border=0|alt|title|hspace|vspace|width|height|align], - sub,sup,blockquote[dir|style],table[border=0|cellspacing|cellpadding|width|height|class|align], - tr[class|rowspan|width|height|align|valign],td[dir|class|colspan|rowspan|width|height|align|valign], - div[dir|class|align],span[class|align],pre[class|align],address[class|align],h1[dir|class|align], - h2[dir|class|align],h3[dir|class|align],h4[dir|class|align],h5[dir|class|align],h6[dir|class|align],hr
System, Groups, Users
tinymceextended_valid_elementsDefined which elements are allowed. These - elements are added to valid_elements (<= V4.6.15: wysiwyg/tinymce-extended-valid-elements).
- Default: form[name|action|method],textarea[name|style|cols|rows],input[type|name|value|style|onclick], - a[name|href|target|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name], - hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]
System, Groups, Users
tinymcecontenido_background_colorDefines the tinyMCE background color (any - valid CSS color value can be used). If you use an HTML hex color code, - also include the # sign before the color (e.g. #ffffff). Default is - "white" (<= V4.6.15: wysiwyg/tinymce-backgroundcolor).System, Groups, Users
tinymceconvert_urls(true, false): Defines, if URLs will be converted (e.g. to relative URLs) - at all. Please note, that URLs should be converted (e.g. for the time you may have to - change the domain or server path). Default: true (<= V4.6.15: wysiwyg/tinymce-convert-urls)System, Clients, Groups, Users
tinymcerelative_urls(true, false): If convert_urls is true, then - this setting specifies, if URLs will be converted to relative or absolute URLs. - Please note, that relative URLs should be used (e.g. for the time you may have to - change the domain or server path). Default: true (<= V4.6.15: wysiwyg/tinymce-relative-urls)System, Clients, Groups, Users
tinymcecontenido_listsIf specified, adds dropdown lists with links - for all articles (Insert Link popup window), images (Insert Image popup window) and/or - all media/flash files (Insert Media/Flash popup window). Valid values are: link, image, - media, flash. - Values have to be separated by a comma, e.g. "link,image".

- Do not specify, if you have a lot of articles, images and/or media files - (<= V4.6.15: wysiwyg/tinymce-lists). -
System, Groups, Users
-

-

Style-editor, Script-editor and HTML-editor related Parameters

- - - - - - - - - - - - - - - - - - - - - -
style_editorwrap{on, off} Default off. Defines the wrap attribute of the textarea to edit the CSS file. In case of 'on' the lines will be wraped.System, Clients, Users
script_editorwrap{on, off} Default off. Defines the wrap attribute of the textarea to edit the JS file.System, Clients, Users
html_editorwrap{on, off} Default off. Defines the wrap attribute of the textarea to edit the HTML file.System, Clients, Users
-

 

- - \ No newline at end of file diff --git a/docs/techref/backend/backend.localconfig.html b/docs/techref/backend/backend.localconfig.html deleted file mode 100644 index 39db568..0000000 --- a/docs/techref/backend/backend.localconfig.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - Contenido - Preserving local settings - - - - -
- Contenido Logo -

Preserving local settings (V. 4.8.x)

-
-
-

Introduction

-In the past, all modifications to Contenido's config.php file were lost -during an upgrade.
-
-

Where? What? How?
-

-Contenido now includes a local config file - config.local.php. This -file isn't overwritten during an upgrade, so you can make your changes -there (recommended by now). It is included in the main config.php file. -Remember that the config.php file is usually the first file included; -don't do any tricks like database queries there.
-
-

Frontend config?

-Yep, that's also possible. Just create a file "config.local.php" in the -frontend directory. The file will be executed just after the -front_content.php's init code (so you've got all variables and database -available), but just before the magic starts (like executing the -content code etc). Note that everything is available from the backend's -config.local.php also.
-
- - diff --git a/docs/techref/backend/backend.plugauth.html b/docs/techref/backend/backend.plugauth.html deleted file mode 100644 index 3770a59..0000000 --- a/docs/techref/backend/backend.plugauth.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - Contenido - Pluggable Authentification for the Contenido -Backend - - - - -
- Contenido Logo -

Pluggable Authentification for the Contenido Backend (V. 4.8.x)

-
-
- -

Introduction

-Contenido introduces a new system to authenticate against external -sources (LDAP directories, for example).
-
-

What does it do?

-Contenido Pluggable Authentification Modules (don't swap them around -with Linux PAM) makes it possible to authenticate via external sources -- and just authentification.
-

How it works (authentification handler)
-

-To write your own authentification handler, you have to write a single -function which looks like this:
-
-
function active_directory_auth ($username, $password)
{
global $cfg;

if ($cfg['ldap']['server'] != "")
{
$ad = ldap_connect($cfg['ldap']['server']);
if ($ad)
{
ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3);
$bd = ldap_bind($ad, $username . $cfg['ldap']['suffix'], $password);

if (!$bd)
{
return false;
}
}
}

return true;
}
-
-If that function returns true, the mechanism knows that the login was -successful. After that, you have to register the function:
-
-
register_auth_handler("active_directory_auth");

-By registering the function, the login mechanism knows that it should -call "active_directory_auth" for certain users. Finally, you have to -include your new handler file (the recommended place is -config.local.php).
-
-The login mechanism knows that you want to use a registered auth -handler if the entry in the password field of the user equals a -registered auth handler; e.g. the user "test" has -"active_directory_auth" in his password field, thus the login mechanism -would use the "active_directory_auth" function to validate. The -password field has to be set using the sync script.
-
-

Syncing with a remote source

-To make the authentification handler working, you have to "sync" your -users to Contenido. This means that each user needs to be created -and/or updated by a sync script (it's preferred to automate this using -a cronjob to ensure regular updates). The active directory example has -a sync script; you can modify it to fit your own needs.
-
-Remember that if you want your permissions syncronized using the sync -script, you are on your own - we recommend that you only sync users, -user-to-group relationships and groups and apply all rights to groups -to keep it simple.
-
- - diff --git a/docs/techref/backend/conlogo.gif b/docs/techref/backend/conlogo.gif deleted file mode 100644 index dd6bdf655293d82c54335f730f69e5e3f054b76a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1325 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 ANB{r; diff --git a/docs/techref/frontend/frontend.customizing.html b/docs/techref/frontend/frontend.customizing.html deleted file mode 100644 index 1ca82c4..0000000 --- a/docs/techref/frontend/frontend.customizing.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - Contenido - Frontend customizing - - - - - - - - - -
Contenido -

Backend customizing

- - - - - - - - - - - - - - - - - - - -
AuthorBjörn Behrens (HerrB)
Created20th September 2006
AudienceSite Administrators
Applies toContenido 4.8.4 or later
-
-
-

Introduction

-Frontend customizing is a mechanism to customize various parameters of -the frontend. There are not many settings you can do, as this mechanism -is relatively new. However, this mechanism will be used more and more -in the future.
-
-

How it works

-Customizing Contenido settings is very easy and can be done via the -system or client customizing settings.
-
-Important: User settings have precendence before group settings. User -settings always override group settings. If the user is added to more -than one group, the result is undefined. Make sure that your groups -don't override each other.
-
-

Common parameters

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
Area/TypePropertyValue (Description)Applies to
login_error_pageidcatartIf specified, then a user who is logged out or tries to open a protected - category if not logged in will get redirected to the page specified by idcatart. This setting overrides other - login_error_page settings.Clients, System
login_error_pageidcatIf specified, then a user who is logged out or tries to open a protected - category if not logged in will get redirected to the category specified by idcat. You can specify idcat - and/or idart (see next setting).Clients, System
login_error_pageidartIf specified, then a user who is logged out or tries to open a protected - category if not logged in will get redirected to the article specified by idart. You can specify idcat - and/or idart (see previous setting).System, Clients
-

 

- - diff --git a/docs/techref/frontend/frontend.permissions.html b/docs/techref/frontend/frontend.permissions.html deleted file mode 100644 index bf2f93a..0000000 --- a/docs/techref/frontend/frontend.permissions.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - Contenido - Frontend Session Information - - - - - - - - - -
Contenido -

Frontend Permissions
-

- - - - - - - - - - - - - - - - - - - -
AuthorTimo A. Hummel
Created20th May 2005
Audience
-
Site Integrators, Module Developers
-
Applies to
-
Contenido 4.6 or later
-
-
-
-

Introduction

-Using Contenido's Frontend Permissions, Site Integrators and Module Developers -can check individual "objects" for access permissions.
-

Concept

- -

Contenido 4.6 introduces so-called frontend users. These users are splitted - apart the regular backend users, because they should be seen and handled completely - different as backend users. Frontend users themselves can't have permissions, - all permissions are assigned to groups.

-

Defining objects and permissions

-

Frontend objects and permissions are designed to be very generic. Basically, -the developer has to define:

-

- A class which defines how the object works
- - Checks to make the permissions effective
-
-Step by Step manual:

-

1. Think of a name for the object you're going to use. The name should be - lowercase. In this example, we're going to use "object".
- 2. If the folder "frontendlogic" in the plugins directory doesn't exist, create - it
- 3. Create a folder with the object name you're going to use in the folder "frontendlogic"
- 4. Create a file with the objectname and ".php" as extension. In our example, - you would have the path "plugins/frontendlogic/object/object.php".
- 5. Extend the class FrontendLogic. Your class name must have the name "frontendlogic_" - plus your object name, in our example it would be "frontendlogic_object".
- 6. Override the methods getFriendlyName(), listActions() and listItems(). -You can find descriptions for these methods in the FrontendLogic phpDoc.
-7. Define the object name in the variable $cfg['plugins']['frontendlogic'], e.g. -$cfg['plugins']['frontendlogic'][] = "object". You should place this in the file -config.local.php, so your changes are preserved during updates.

-

Test your object:

-

Login into Contenido. Go to the frontend groups, create a new group (or edit - an existing). In the subnavigation beneath "Overview", you should see your - object name which you defined in the method "getFriendlyName()". Click on it. - In the list, you should see all actions you defined, and all items you return. - Your administrators can now start to apply permissions to the items.

-

Checking permissions:

-

This is actually pretty easy. Create a new FrontendPermissionCollection-Item - and use the method checkPerm() to query if a specific permission is set:

-

$myPermissionCheck = new FrontendPermissionCollection;
- var_dump( -$myPermissionCheck->checkPerm(2, "object", "permissionname", "itemid"));

-

If you want to check for a global right, replace "itemid" with "__GLOBAL__".

-

 

- - diff --git a/docs/techref/frontend/frontend.protectedcategories.html b/docs/techref/frontend/frontend.protectedcategories.html deleted file mode 100644 index b44f241..0000000 --- a/docs/techref/frontend/frontend.protectedcategories.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - Contenido - Frontend Session Information - - - - - - - - - -
Contenido -

Protected frontend categories
-

- - - - - - - - - - - - - - - - - - - -
AuthorTimo A. Hummel
Created20th May 2005
Audience
-
Site Integrators, Module Developers
-
Applies to
-
Contenido 4.6 or later
-
-
-
-

Introduction

-Contenido 4.6 introduces a updated concept for protecting frontend categories -and enabling access to them.
-

Installation and configuration

-

Download the plugin "Frontend Category Permissions" from the Contenido website. - Extract the archive to your plugins directory. Open (or create) the file config.plugin.php in the directory contenido/plugins/chains/includes/ - and add the necessary includes and chain entries (see below). Afterwards, open - the file config.local.php in your contenido/includes directory (create the - file - if it - doesn't exist) and add the following line at the end:

-

$cfg['plugins']['frontendlogic'][] -= "category";

-

Example config.plugin.php:

-

<?php
- global $_cecRegistry;
- cInclude("plugins", "chains/includes/include.chain.frontend.cat_backendaccess.php");
-cInclude("plugins", "chains/includes/include.chain.frontend.cat_access.php");

-

$_cecRegistry->addChainFunction("Contenido.Frontend.CategoryAccess", "cecFrontendCategoryAccess");
- $_cecRegistry->addChainFunction("Contenido.Frontend.CategoryAccess", "cecFrontendCategoryAccess_Backend");
- ?>

-

The chain Contenido.Frontend.CategoryAccess is - called everytime a protected category is accessed. If the chain functions return - true, access is granted. The function cecFrontendCategoryAccess validates - frontend users and their permissions, and cecFrontendCategoryAccess_Backend does - the same for the backend user counterparts. If you wish to disable backend - users for access frontend categories, remove the line which contains cecFrontendCategoryAccess_Backend. - You can also define chains for more custom checks, please refer to the chains - documentation for more information.

-

 

- - diff --git a/docs/techref/frontend/frontend.session.html b/docs/techref/frontend/frontend.session.html deleted file mode 100644 index c1076cc..0000000 --- a/docs/techref/frontend/frontend.session.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - Contenido - Frontend Session Information - - - - - - - - - -
Contenido -

Frontend Session Information
-

- - - - - - - - - - - - - - - - - - - -
AuthorTimo A. Hummel
Created20th October 2003
Audience
-
Module Developers
-
Applies to
-
Contenido 4.4 or later
-
-
-
-

Introduction

-In order to identify a website visitor, the default Contenido Frontend -delivers a session mechanism.
-

Concept

-The frontend automatically stores a cookie including the session ID. As -the contenido frontend is based on the PHPLIB session management, the -session ID can always be retrieved by calling $sess->id as long as -the $sess object is made global.
-

Why Cookies?

-This has several reasons. The most important ones are:
-
-- Module developers don't need to care about session ID's, as this is -managed transparently by the system.
-- There's no need to re-process links that were inserted using the -WYSIWYG.
-- Users tend to copy'n'paste interesting web sites from the location -bar. As this usually includes the session, we would no longer be able -to identify a visitor uniquely.
-
-Drawbacks:
-
-- Some browsers and/or visitors don't like cookies. That makes it -impossible for us to identify them. However, this is only the minority, -and I guess we can expect that a visitor has cookies turned on in these -days, since almost no web application (like shop systems, bulletin -boards etc) will work without cookies.
-
-Also note that the site will still be browsable - you just can't use -the session to store data for the frontend.
-
-

Is there some way around cookies?

-Yes, you can modify the file "local.php" in the conlib directory. Look -for the class "Contenido_Frontend_Session" (currently on line 137, but -this might change or has already been changed):
-
-
class Contenido_Frontend_Session extends Session {
  var $classname = "Contenido_Frontend_Session";
  var $cookiename     = "sid";              ## defaults to classname
  var $magic          = "Phillipip";        ## ID seed
  var $mode           = "cookie";           ## We propagate session IDs with cookies
  var $fallback_mode  = "cookie";
  var $lifetime       = 0;                  ## 0 = do session cookies, else minutes
  var $that_class     = "Contenido_CT_Sql"; ## name of data storage container
  var $gc_probability = 5;
-
  function Contenido_Frontend_Session ()
  {
      global $load_lang, $load_client;
$this->cookiename = "sid_".$load_client."_".$load_lang;
}
}


-The important variables are "$mode" and "$fallback_mode". Both of these -can either be "get" or "cookie". Remember that if you set "get", you -have to rewrite most of your modules (in fact, each module which -generates or display links).
-
-Remember: Using "get" as frontend session mode is neither supported nor -recommended - use it on your own risk.
- - diff --git a/docs/techref/modules/conlogo.gif b/docs/techref/modules/conlogo.gif deleted file mode 100644 index 2237f61b3a0d247ddf07c9727b24dd994864adce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5334 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 ANB{r; diff --git a/docs/techref/modules/module.login.html b/docs/techref/modules/module.login.html deleted file mode 100644 index 4d347b6..0000000 --- a/docs/techref/modules/module.login.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - Contenido - Creating login modules - - - - - - - - - -
Contenido -

Creating a frontend login module using Contenido

- - - - - - - - - - - - - - - - - - - -
AuthorTimo A. Hummel
Modified13th June 2006
Audience
-
Module Developers
-
Applies to
-
Contenido 4.6 or later
-
-
-
-

Introduction

-The Contenido login mechanism has been made alot easier from Version -4.4 and upwards. Logins are now directly handled by Contenido's -frontend, and you only need to pass the parameters "username" and -"password" to Contenido. Logins are now handled as "pro-active" logins, -which means that the methods explained here need to issued before a -protected category is accessed.
-

Logging in - manually

-Each frontend login can be triggered manually. In order to test your -logins, you should insert the following statement into either a layout -or module:
-
-
echo $auth->auth["uid"];
-This statement shows the current logged in user. For anonymous sessions -(i.e. nobody is logged in), the "uid" is always "nobody". To test the -login, create a new user in Contenido's Backend, then call the frontend -like this:
-
-
front_content.php?username=<youruser>&password=<yourpassword>
-If previously the test statement returned "nobody", it should now -display your user id.
-
-

Logging in - automatically

-Of course, the method above is pretty uncomfortable for end users. You -could simply write a module which outputs a login form - it's up to -you. All you need to do is to pass "username" and "password" - exactly -as shown above.
-
-

Logging out

-Of course, your users want to log out if necessary - just pass the -parameter "logout" with any value to the system. Example:
-
front_content.php?logout=true

-

How all this interacts with protected folders

-In the past, a login form was only displayed if a protected category. -If you are already logged in with the above method, and if you have -access rights to that category, everything is alright. But if you are -not logged in or if you don't have access rights, the (pretty old) file -"front_crcloginform.inc.php" will be called.
-
-If you want to show a custom login form, you can do the following:
-
-Specify a client setting with the following values:
-
-Type: login_error_page
-Name: idcatart
-Value: <Specify the idcatart of the article containing the login form>
-
-You can also use:
-
-Type: login_error_page
-Name: idcat
-Value: <Specify the idcat of the category containing the article with the login form>
-
-and/or -
-Type: login_error_page
-Name: idart
-Value: <Specify the idart of the article containing the login form>
-
-Please note, that if the idcatart has been specified, idcat and idart are ignored. idcat and idart may be -specified both (and then the idart should be an article in the category specified by idcat) or -one of them, only.
-
-The article/category specified has to be public/online. -
-
-

Creating users

-Of course, you don't want to create a user in the backend every time. -You can automate the user creation process using the class "User":
-
-
$myUsers = new Users;	// User Collection
$myUser = new User; // Single user

$ret = $myUsers->create("nameofuser");

/* Note the three equal signs: This checks for the boolean type */
if ($ret === false)
{
/* User already exists */
die("User already exists");
} else {
/* User was successfully created, now we can set the password */
$user->loadUserByUserID($ret);
$user->setField("password", md5("theuserspassword"));
}
-
-You can also assign custom properties to your users (to attach almost -every kind of data to a user) by using the methods "setUserProperty" -and "getUserProperty". See the API documentation for more information. - - diff --git a/docs/techref/modules/output-gen.jpg b/docs/techref/modules/output-gen.jpg deleted file mode 100644 index 2caf5c5bf8ee2a9bf998cf366a5fa9427424ac26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14270 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 - - - - Contenido - Writing modules for use with Contenido - - - - - - - - - -
Contenido -

Writing modules for use with Contenido
-

- - - - - - - - - - - - - - - - - - - -
AuthorTimo A. Hummel
Created3rd November 2003
Audience
-
Module Developers
-
Applies to
-
Contenido 4.4 or later
-
-
-
-

Introduction

-Writing modules with Contenido is as easy as writing regular PHP code. -You don't get a stripped-down development environment, but rather you -get a combination of Contenido's CMS features combined with your own -code.
-
-

What's input, what's output, what's a module anyways?
-

-A module is nothing more than a piece of code which gets combined using -a template:
-
-
-
-As you already know, a layout contains placeholders for modules. The -PHP-Code from the module's output sections are inserted into the -correct positions in the layout. The input section is not relevant for -the output, but the input section is relevant for configuring the -modules.
-
-

Configuration magic

-To make modules more "modular", you can configure them. You might have -seen this in the predefined modules - but how does it work?
-
-The configuration data is stored transparently, so you don't need to -worry to get your configuration data from the input section to the -output section. Storing configuration data is pretty easy. Take a look -at this simple example of an input section:
-
-
echo " <table>
        <tr>
           <td>Test</td>
           <td><input type=\"text\" name=\"CMS_VAR[1]\" value=\"CMS_VALUE[1]\"></td>
         </tr>
       </table>";
-CMS_VAR[x] is the variable (which is set using "magic" :)) to "receive" -the desired value, and CMS_VALUE[x] is the current value. The same -story goes for the output area:
-
echo "CMS_VALUE[1]";
-To avoid problems, you should always take care of the following things:
-
    -
  • Always store your configuration into local variables (e.g. $foo = -"CMS_VALUE[1]";)
  • -
  • Always use quotes around CMS_VALUE, as CMS_VALUE is text.
  • -
  • PHP allows transparent type switching, so the following code will -also work:
    -
    $foo = "CMS_VALUE[1]";

    if ($foo == 1)
    {
        echo "Worked";
    }
    -
  • -
-

Important System stuff

-If you want to write advanced modules, you might want to interact with -Contenido. Here are a few objects and functions you can use with your -modules.
-
- - - - - - - - - - - - - - - -
DB_Contenido
-
The well-known PHPLib DB-Object. -
-
-Example:
-
-$mydb = new DB_Contenido;
-$mydb->query("SELECT * FROM test");
-
-Reference:
-See -http://www.sanisoft.com/phplib/manual/DB_SqlMethods.php#DB_SqlMethodsInt
-
-You should always use $cfg["tab"][*] to access Contenido tables.
-
-Warning: You should never ever use $db in your modules. Always use your -own variables.
-
$sess
-
The current session. Useful -variables:
-
-$sess->id (current session ID)
-
$auth
-
Authentification information. -Useful variables:
-
-$auth->auth["uid"] (current user ID)
-$auth->auth["uname"] (current user name)
-
-
-
-
-
- - diff --git a/docs/techref/plugins/Contenido Extension Chainer.pdf b/docs/techref/plugins/Contenido Extension Chainer.pdf deleted file mode 100644 index f1951960c9a6d91532cff0eb614f4d7065414e1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57226 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%0DbA%WgjgZ%A~K!54` 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 z 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 M!}$0Vj*wvg50iiHegFUf diff --git a/docs/techref/plugins/conlogo.gif b/docs/techref/plugins/conlogo.gif deleted file mode 100644 index 2237f61b3a0d247ddf07c9727b24dd994864adce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5334 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 ANB{r; diff --git a/docs/techref/plugins/plugin.config.html b/docs/techref/plugins/plugin.config.html deleted file mode 100644 index 5c1f2ff..0000000 --- a/docs/techref/plugins/plugin.config.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - Contenido - Making plugins translatable - - - - - - - - - -
Contenido -

Making plugins translatable
-

- - - - - - - - - - - - - - - - - - - -
AuthorTimo A. Hummel
Created5th November 2003
Audience
-
Plugin Developers
-
Applies to
-
Contenido 4.4 or later
-
-
-
-

The plugin's configuration
-

-If your plugin has actions which needs to be translatable (of course -:)), you need a plugin configuration file.
-
-This file needs to be placed -in the "includes"-Directory of your plugin and needs to be named config.plugin.php.
-
-Example:
-
-<?php
-
-/* Config file for the TEST plugin */
-$lngAct["test_dosomething"] = i18n("Does something useful", "test");
-
-?>
-
-Note that the plugin developer doesn't need to take care of the i18n -domain binding; all that is done during initialisation.
-
-

Letting Contenido know about foreign "domains"
-

-A "domain" in terms of the GNU gettext library defines in which path a -specific translation can be found. For plugins, the domain is -automatically set to the plugin's directory. All you need to do is to -create a directory structure similar to Contenido's locale directory, -and place .po files in it (note: The .po-Files need to be named like -your plugin's name and plugin directory, e.g. the plugin "test" should -reside in the directory "test" and the .po-Files have to be named -"test.po").
-

Translating plugins
-

-To create a translated string in the plugin itself, you need to use i18n("TEXT","<DOMAIN>");. In -the example above, we would write i18n("TEXT","test");. -Note that domain names are case sensitive. -

Where's the magic?
-

-Originally, the "magic" (including the plugin's configuration and i18n -domain bindings) took place in the file config.php. As config.php is -included even if we don't have a backend language (in fact, the -information about the backend language is never available in the config -file), the magic happens in cfg_language_de.inc.php. This is the only -place where the proper initialisation of the plugin's config.plugin.php -file can be guaranteed.
- - diff --git a/docs/translators/translating.doc b/docs/translators/translating.doc deleted file mode 100644 index 9e9dd9e2323e8b7a57b813c4fe74f54902ed58af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46080 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