ConPresso CMS
Schulungen
Module
Freeware
Modifikationen
Sprachen
Skins
weitere Module
Projekte
Lizenz
Impressum
Blog
Login
 

Modifikation "mod_text" (Pimp my Textfeld)

Copyright © 2005 - 2009 Markus Rösel www.conpresso4.de

Diese Dokumentation ist urheberrechtlich geschützt. Alle Rechte, auch die der Modifikation, der Übersetzung, des Nachdrucks und der Vervielfältigung, im Ganzen oder in Teilen, bedürfen der vorherigen schriftlichen Genehmigung von Markus Rösel. Dies gilt unabhängig davon, auf welche Art und Weise, für welche Zwecke und mit welchen Mitteln dies geschieht.

Markus Rösel übernimmt weder Garantie für die Fehlerfreiheit und Aktualität dieses Handbuches, noch juristische Verantwortung oder irgendeine Haftung, die aus der Nutzung dieses Handbuches resultiert. Dies gilt auch für Auslassungen, fehlerhafte Angaben und daraus eventuell entstehende Schäden.

Sämtliche auch ohne besondere Kennzeichnung verwendeten Handels-, Waren-, Marken- und Gebrauchsnamen stehen ausschließlich den jeweiligen Inhabern zu. Alle in diesem Handbuch enthaltenen Angaben und Daten dienen ausschließlich Informationszwecken und können ohne vorherige Ankündigung geändert werden. Die in Beispielen verwendeten Namen und Daten sind frei erfunden.

ConPresso ist eine eingetragene Marke der Bartels Schöne GmbH & Co. KG, Münster (Nr. 301 66 567)

24.09.2006

 

1. Was macht die Modifikation "mod_text"?

Die Modifikation mod_text erweitert die Möglichkeiten des Textfeldes bei der Artikelerfassung.

Zum einen werden das Kurztext- und das große Textfeld um eine Begrenzung der Zeichenzahl erweitert, die gleichzeitig auch die optische Größe der Felder bestimmt.

Außerdem stehen Checkboxen, Radiobuttons (horizontal und vertikal) sowie Selectboxen, bei denen die auswählbaren Optionen frei eingegeben werden können.

NEU: Zur Verbesserung der Artikelerfassung gibt es nun auch die Typen "Beschreibung", "Trennung" und "Artikel speichern".

Die Installation der Modifikation erfordert einige Eingriffe in Original-ConPresso-Dateien.

Daher ist es zwingend erforderlich vor der Installation ein Backup der ConPresso-Dateien durchzuführen, um bei einer Deinstallation der Modifikation den Originalzustand wiederherstellen zu können!

 

2. Installation

Die Modifikation benötigt keine Installation sondern muß nur als Verzeichnis mod_text ins ConPresso-Verzeichnis kopiert werden.

Darüber hinaus müssen einige der original ConPresso-Dateien bearbeitet werden, da dieModifikation direkt in die Originalfunktionen eingreift
Es liegen für ConPresso 4.0.7, 4.0.8 und 4.0.9 premodded Files bei, also bereits angepasste Dateien, mit denen nur die Originale überschrieben werden müssen, wenn an diesen noch keine sonstigen Änderungen vorgenommen wurden.

Für ConPresso 4.1.x benutzten Sie bitte die Version 4.1b von mod_text.

 

=== OPEN / ÖFFNEN ===

_admin/manage_placeholder.php (bis 4.0.6) oder _admin/manage_placeholders.php (mit "s" in 4.0.7)

=== FIND / FINDE ===

case 'text':
    print('<tr><td>'.___('Short text:').'</td><td>');
    print('<input name="placeholder[short]" class="checkbox" type="checkbox" value="1" '.($placeholder['short']=='1' ? 'checked' : '').'>');
    print(help('templates-workonarticletemplates.html#templates-workonarticletemplates-editplaceholder-settings-shorttext').'</td></tr>');
    break;

=== REPLACE WITH / ERSETZEN DURCH ===

in 4.0.x

case 'text':
 include(CPO_BASEDIR.'mod_text/includes/manage_placeholder.inc.php');
break;

in 4.1.x

        case 'text':
            print('<tr><td>'.__('Description:').'</td><td>');
            print('<input name="placeholder[label]" type="text" value="'.htmlspecialchars($placeholder['label']).'" class="inputwidth">'.help('templates-workonarticletemplates.html#templates-workonarticletemplates-editplaceholder-settings-description').'</td></tr>');
            include(CPO_BASEDIR.'mod_text/includes/manage_placeholder.inc.php');
        break;

=== OPEN / ÖFFNE ===

_include/form_fields.inc.php

=== FIND / FINDE ===

in 4.0.x

case 'text':
    // remove key from temporary content array so that only not used content is left
    unset($_content[$key]);
    // make sure an empty values exist for a key without content.
    if (!array_key_exists($key, $content)) {
        $content[$key] = array('id'=>'', 'text'=>'');
    }
    printf('<tr><td class="leftrow">%s:</td><td class="rightrow">',
        htmlspecialchars($name));
    if (isset($value['label']) && trim($value['label'])!='') {
        printf('%s<br /><br />', $value['label']);
    }
    if (isset($value['short'])) {
        printf('<input type="text" name="content[%s][text]" value="%s" size="80" class="inputwidth">',
            htmlspecialchars($key),
            htmlspecialchars($content[$key]['text'])
        );
        print(help('articles-createarticle.html#articles-createarticle-articlecontent-texts-shorttext'));
        print('</td></tr>');
        break;
    }
    printf('<textarea name="content[%s][text]" cols="80" rows="15" class="inputwidth">%s</textarea>',
        htmlspecialchars($key),
        htmlspecialchars($content[$key]['text'])
    );
    print(help('articles-createarticle.html#articles-createarticle-articlecontent-texts-text'));
    print('</td></tr>');
    break;

oder in 4.1.x

case 'text': // {{{
    // remove key from temporary content array so that only not used content is left
    unset($_content[$key]);
    // make sure an empty values exist for a key without content.
    if (!array_key_exists($key, $content)) {
        $content[$key] = array('id'=>'', 'text'=>'');
    }
    if ($value['short']==1) $value['inputmethod'] = 'text';
    switch ($value['inputmethod']) {
    case 'text': // {{{
        printf('<tr><td class="leftrow">%s:</td><td class="rightrow">',
            htmlspecialchars($name));
        if (isset($value['label']) && trim($value['label'])!='') {
            printf('%s<br /><br />', $value['label']);
        }
        if (empty($value['maximumlength'])) {
            printf('<input type="text" name="content[%s][text]" value="%s" size="80" class="inputwidth" />',
                htmlspecialchars($key),
                htmlspecialchars($content[$key]['text'])
            );
            print(help('articles-createarticle.html#articles-createarticle-articlecontent-texts-shorttext'));
        } else {
            echo $length_script; $length_script = '';
            printf('<input type="text" name="content[%1$s][text]" id="text%2$s" value="%4$s" size="80" class="inputwidth" ' .
                   'onKeyDown="textCounter(this.form.text%2$s, this.form.remLen%2$s, %3$s);" ' .
                   'onKeyUp="  textCounter(this.form.text%2$s, this.form.remLen%2$s, %3$s);" />',
                htmlspecialchars($key),
                $keymd5,
                $value['maximumlength'],
                htmlspecialchars($content[$key]['text'])
            );
            print(help('articles-createarticle.html#articles-createarticle-articlecontent-texts-shorttext'));
            printf('<br />' . ___('%s characters left'),
                '<input readonly type="text" name="remLen' . $keymd5 . '" size="4" maxlength="4" value="' .
                ($value['maximumlength'] - strlen($content[$key]['text'])) . '" />');
        }
        print('</td></tr>');
        break; // }}}
    case 'select': // {{{
        $_lines = str_replace(array("\r\n", "\r", "\n"), "\n", $value['presetting']);
        $_lines = explode("\n", $_lines);
        // check for empty lines;
        $_l = array();
        foreach ($_lines as $line) {
            if (trim($line=='')) continue;
            $_l[] = trim($line);
        }
        $_lines = $_l;
        if (count($_lines)==0) break;
        printf('<tr><td class="leftrow">%s:</td><td class="rightrow">',
            htmlspecialchars($name));
        if (isset($value['label']) && trim($value['label'])!='') {
            printf('%s<br /><br />', $value['label']);
        }
        echo '<select name="content['.htmlspecialchars($key).'][text]" class="inputwidth">';
        $i = 0;
        foreach ($_lines as $line) {
            $i++;

            $_name = $line;
            $_value = $line;

            // check if it is "name = value"?
            if (1==preg_match('/(.*?)\s*[^\\]=\s*(.*)/', $line, $matches)) {
                $_value = str_replace('\=', '=', $matches[1]);
                $_name  = str_replace('\=', '=', $matches[2]);
            }
            // the first one is default
            if ($i==1 && $content[$key]['text']=='') {
                $content[$key]['text'] = $_value;
            }
            echo '<option '
                .'value="'.htmlspecialchars($_value).'" '
                .($content[$key]['text']==$_value ? 'selected="selected">' : '>')
                .htmlspecialchars($_name).'</option>';
        }
        echo '</select>';
        print(help(''));
        print('</td></tr>');
        break; // }}}
    case 'radio': // {{{
        $_lines = str_replace(array("\r\n", "\r", "\n"), "\n", $value['presetting']);
        $_lines = explode("\n", $_lines);
        // check for empty lines;
        $_l = array();
        foreach ($_lines as $line) {
            if (trim($line=='')) continue;
            $_l[] = trim($line);
        }
        $_lines = $_l;
        if (count($_lines)==0) break;

        printf('<tr><td class="leftrow">%s:</td><td class="rightrow">',
            htmlspecialchars($name));
        if (isset($value['label']) && trim($value['label'])!='') {
            printf('%s<br /><br />', $value['label']);
        }
        $i = 0;
        foreach ($_lines as $line) {
            $i++;
            $line = trim($line);

            $_name = $line;
            $_value = $line;

            // check if it is "name = value"?
            if (1==preg_match('/(.*?)\s*[^\\]=\s*(.*)/', $line, $matches)) {
                $_value = str_replace('\=', '=', $matches[1]);
                $_name  = str_replace('\=', '=', $matches[2]);
            }
            // the first one is always default with radiobuttons:
            if ($i==1 && $content[$key]['text']=='') {
                $content[$key]['text'] = $_value;
            }
            echo '<input type="radio" name="content['.htmlspecialchars($key).'][text]" '
                .'id="'.md5($_value.$_name).'" '
                .'value="'.htmlspecialchars($_value).'" '
                .($content[$key]['text']==$_value ? 'checked="checked" />' : '/>')
                .'<label for="'.md5($_value.$_name).'">'.htmlspecialchars($_name).'</label>';
            if ($i==1) print(help(''));
            echo '<br />';
        }
        print('</td></tr>');
        break; // }}}
    case 'checkbox': // {{{
        $_lines = str_replace(array("\r\n", "\r", "\n"), "\n", $value['presetting']);
        $_lines = explode("\n", $_lines);
        // check for empty lines;
        $_l = array();
        foreach ($_lines as $line) {
            if (trim($line=='')) continue;
            $_l[] = trim($line);
        }
        $_lines = $_l;
        if (count($_lines)==0) break;
        printf('<tr><td class="leftrow">%s:</td><td class="rightrow">',
            htmlspecialchars($name));
        if (isset($value['label']) && trim($value['label'])!='') {
            printf('%s<br /><br />', $value['label']);
        }
        $line = $_lines[0]; // the checkbox only allows the first line to be chosen
        $_name = $line;
        $_value = $line;

        // check if it is "name = value"?
        if (1==preg_match('/(.*?)\s*[^\\]=\s*(.*)/', $line, $matches)) {
            $_value = str_replace('\=', '=', $matches[1]);
            $_name  = str_replace('\=', '=', $matches[2]);
        }
        echo '<input type="checkbox" name="content['.htmlspecialchars($key).'][text]" '
            .'id="'.md5($_value.$_name).'" '
            .'value="'.htmlspecialchars($_value).'" '
            .($content[$key]['text']==$_value ? 'checked="checked" />' : '/>')
            .'<label for="'.md5($_value.$_name).'">'.htmlspecialchars($_name).'</label>';
        print(help(''));

        print('</td></tr>');
        break; // }}}
    case 'none': // {{{
        printf('<input type="hidden" name="content[%s][text]" value="%s" />',
            htmlspecialchars($key),
            htmlspecialchars($value['presetting'])
        );
        print('</td></tr>');
        break; // }}}
    case 'textarea': // default // {{{
    default:
        printf('<tr><td class="leftrow">%s:</td><td class="rightrow">',
            htmlspecialchars($name));
        if (isset($value['label']) && trim($value['label'])!='') {
            printf('%s<br /><br />', $value['label']);
        }
        if (empty($value['maximumlength'])) {
            printf('<textarea name="content[%1$s][text]" id="text%2$s" cols="80" rows="15" class="inputwidth">%3$s</textarea>',
                htmlspecialchars($key),
                $keymd5,
                htmlspecialchars($content[$key]['text'])
            );
            print(help('articles-createarticle.html#articles-createarticle-articlecontent-texts-text'));
            printf('<br /><a href="#" onClick="javascript:a = document.getElementById(\'text%1$s\'); if (a.rows>5) a.rows=a.rows-5; return false;">' .
                   '<img src="' . SKIN_URL . 'decrease.gif" width="20" height="18" align="absmiddle" alt="%2$s" />%2$s</a>',
                $keymd5,
                ___('-decrease height')
            );
            echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
            printf('<a href="#" onClick="javascript:a = document.getElementById(\'text%1$s\'); a.rows=a.rows+5; return false;">' .
                   '<img src="' . SKIN_URL . 'enlarge.gif" width="20" height="18" align="absmiddle" alt="%2$s" />%2$s</a>',
                $keymd5,
                ___('-increase height')
            );
                    } else {
            echo $length_script; $length_script = '';
            printf('<textarea name="content[%1$s][text]" id="text%2$s" cols="80" rows="%3$s" class="inputwidth" ' .
                   'onKeyDown="textCounter(this.form.text%2$s, this.form.remLen%2$s, %4$s);" ' .
                   'onKeyUp="  textCounter(this.form.text%2$s, this.form.remLen%2$s, %4$s);">%5$s</textarea>',
                htmlspecialchars($key),
                $keymd5,
                ceil($value['maximumlength']/80)+1,
                $value['maximumlength'],
                htmlspecialchars($content[$key]['text'])
            );
            print(help('articles-createarticle.html#articles-createarticle-articlecontent-texts-text'));
            printf('<br />' . ___('%s characters left'),
                '<input readonly type="text" name="remLen' . $keymd5 . '" size="4" maxlength="4" value="' .
                ($value['maximumlength'] - strlen($content[$key]['text'])) . '" />');
        }
        print('</td></tr>');
        break; // }}}
    }
    break; // }}}

=== REPLACE WITH / ERSETZEN DURCH ===

case 'text':
    include(CPO_BASEDIR.'mod_text/includes/form_fields.inc.php');
    break; 

 






ConPresso-Projekte

NEWS

07.01.2019
mod_menu goes PHP 7.3
Das Menü-Modul wurde für PHP 7.3 fit gemacht


03.01.2019
mod_track - File Injection Detection
mod_track jetzt für PHP 7.2 mit Update-Link im Mail


18.12.2018
Wie man ein Modul updatet
Einfach nur Dateien hochladen ist meist zu wenig
Modul-Updateanleitung »»

21.03.2015
mod_maintenance
Neue Version 4.1 mit direkter Erstellung einer Wartungsseite


23.01.2014
mod_gallery wird 10 Jahre alt
Daher gibt es eine neue Version 4.3b
zum Modul »»

18.01.2014
mod_database 4.1b
aktualisiert auf Adminer 4.0.2
zum Modul »»

03.01.2014
mod_newsletter 4.3e
eine komplett überarbeitete und durchgetestete Version. Ein Update wird dringend empfohlen!
Zum Modul

22.10.2013
mod_backup 4.1a
Set it and forget it - Der Retter im Hintergrund.
Zum Modul

22.10.2013
Kennzeichnungspflicht
Die früher erforderliche Kennzeichnung mit dem ratsnappers-Logo per eingebundenem Code entfällt.
vollständige Lizenzbedingungen

20.09.2013
mod_gallery 4.3a
Bei Einsatz unter CPO 4.1.6 können bei bestimmten Arbeitsabfolgen Probleme mit der Bildumrechnung auftreten. Dieses Upgrade von 4.3 auf 4.3a löst diese Probleme
Zum Modul