statusEditorCounter

Helga78

Bekanntes Mitglied
Lizenzinhaber
Registriert
30. Jan. 2014
Beiträge
762
Punkte
93
Weiß jemand woher die Zeichenanzahl kommt?
Sie muss irgendwo hinterlegt sein und ich möchte gerne verschiedene Felder mit unterschiedlicher maximaler Anzahl an zeichen haben.
 
Wo hast du die denn gefunden ?!
 
Achso, das Thema gab es schonmal und die Zeichen sind fest in einer Datei hinterlegt..

Zum Beispiel die Profilnachrichten in der /library/XenForo/DataWriter/DiscussionMessage/ProfilePost.php

Ab Zeile 64
PHP:
/**
    * Gets the default set of options for this data writer.
    *
    * @return array
    */
    protected function _getDefaultOptions()
    {
        $options = parent::_getDefaultOptions();
        $options[self::OPTION_MAX_MESSAGE_LENGTH] = 420;
        $options[self::OPTION_MAX_TAGGED_USERS] = 0;

        return $options;
    }

Ab Zeile 163
PHP:
protected function _messagePreSave()
    {
        if ($this->get('user_id') == $this->get('profile_user_id') && $this->isChanged('message'))
        {
            // statuses are more limited than other posts
            $message = $this->get('message');
            $maxLength = 140;

            $message = preg_replace('/\r?\n/', ' ', $message);

            if (utf8_strlen($message) > $maxLength)
            {
                $this->error(new XenForo_Phrase('please_enter_message_with_no_more_than_x_characters', array('count' => $maxLength)), 'message');
            }

            $this->set('message', $message);
        }

        // do this auto linking after length counting
        /** @var $taggingModel XenForo_Model_UserTagging */
        $taggingModel = $this->getModelFromCache('XenForo_Model_UserTagging');

        $this->_taggedUsers = $taggingModel->getTaggedUsersInMessage(
            $this->get('message'), $newMessage, 'text'
        );
        $this->set('message', $newMessage);
    }
 
Zuletzt bearbeitet:
Hintergrund ist folgender:

Ein Addon nutzt diese Möglichkeit um mich 255 Zeichen in ein Feld eingeben zu lassen. Die 255 Zeichen bzw. deren Anzahl hinterlegt man im Adminbereich.
In der Seite selbst wird irgendwas für JS mit Zeichenmax definiert. = Ein der Wert aus den Einstellungen.

Ich habe das Feld nun dreimal kopiert und möchte weitere Eingaben entgegennehmen, die aber unterschiedlich lang sein sollen. Alle Felder funktionieren jetzt mit der 255;
als Zwischenlösung habe ich mir die "Endzahl" neben den bezeichner geschrieben. ich weiß jetzt, dass ich im einen Feld eben bis 155 gehen kann, wenn ich max. 100 Zeichen möchte.
Für mich ist das völlig ok. Will ich die Funktion für Mods oder gar User freigeben, geht das natürlich nicht. Also müsste ich jetzt die Zahlen übergeben. optimalerweise neben/an der Feldausgabe.
Ich habe leider nur keinen Plan wie.

Eine max-length habe ich bei den Felddefinitionen angegeben, sieht so aus:

Code:
                'meta_title'        => array('type' => self::TYPE_STRING, 'maxLength' => 70, 'default' => NULL),
                'meta_desc'            => array('type' => self::TYPE_STRING, 'maxLength' => 135, 'default' => NULL),
                'meta_key'            => array('type' => self::TYPE_STRING, 'maxLength' => 255, 'default' => NULL),

Der Addon-Programmierer hat das genauso gemacht, also ohne array.
Für das Feld mit dem 255er Zähler aber nicht.

Er definiert eine weitere Funktion, die die max-Zahl ausgibt, aber nur bei Überschreiten als Fehlermeldung.
Der Zähler selbst kommt über

<script>
var maxChars= 255;
</script>

im Template.

Das scheint also für JS zu sein.

Alle Feldfunktionen nutzen nun diese Variable, ich müsste aber irgendwie dem Feld mitteilen, dass es dem Script sagen soll, dass es maxChars2 nutzen soll.
Hmm, ich brauche also einen Feldbezeichner, der vom Script gelesen wird und im Script eine Abfrage.

Gibt es irgendein Addon, dass mehrere Felder mit unterschiedlichem Zeichenzähler nutzt?


Ohne es zu wissen ahne ich dass im Code oben nur die Eingabe nach Absenden geprüft wird, die Daten für den Zähler aber so nicht bereitgestellt werden.
 
Nimm es mir nicht übel, aber ich glaube du lässt dir am besten deine eigene Forensoftware schreiben. ;)
 
Zurück
Oben