#171 Chyba v pluginu Slugify

closed-fixed
Common (150)
5
2011-07-14
2011-07-13
Anonymous
No

Ahoj, nevim jestli na sourceforge funguje něco jako pull-request, tak opravu hodím sem:

V pluginu AdminerSlugify je potřeba změnit řádek
23. if (!$_GET["select"] && !$_GET["where"]) {

za
23. if (!$_GET["select"]) {

Jinak se nahrazení neprovede. Díky.

Discussion

  • Michal Mikoláš

    Tak jsem si s tím teď hrál a přišel jsem na další problémy. Celý ten if se musí zrušit, protože pak to nefunguje při přidávání nové položky. A taky, nevím přesně proč, ale kvůli tomu foreach se mi na localhostu (PHP 5.3) zruší proměnná $field, původně předaná jako argument metody. No, celé to mám takto, a teď už mi to funguje (Adminer Editor 3.3.0-dev) bez problému:

    <?php

    /** Prefill field containing "_slug" with slugified value of a previous field (JavaScript)
    * @author Jakub Vrana, http://www.vrana.cz/
    * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
    * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other)
    */
    class AdminerSlugify {
    /** @var string @access protected */
    var $from, $to;

    /**
    * @param string find these characters ...
    * @param string ... and replace them by these
    */
    function AdminerSlugify($from = 'áčďéěíňóřšťúůýž', $to = 'acdeeinorstuuyz') {
    $this->from = $from;
    $this->to = $to;
    }

    function editInput($table, $field, $attrs, $value) {
    static $slugify;

    if (!isset($slugify)) {
    $slugify = array();
    $prev = null;
    foreach (fields($table) as $name => $_field) {
    if ($prev && ereg('(^|_)slug(_|$)', $name)) {
    $slugify[$prev] = $name;
    }
    $prev = $name;
    }
    }

    $slug = $slugify[$field["field"]];
    if (isset($slug)) {
    return "<input value='" . h($value) . "' maxlength='$field[length]' size='40'$attrs onchange=\"var find = '$this->from'; var repl = '$this->to'; this.form['fields[$slug]'].value = this.value.toLowerCase().replace(new RegExp('[' + find + ']', 'g'), function (str) { return repl[find.indexOf(str)]; }).replace(/[^a-z0-9_]+/g, '-').replace(/^-|-\$/g, '').substr(0, $field[length]);\">";
    }
    }

    }

    Kdyžtak kontakt na mě: nanuqcz@gmail.com
    Díky, Michal Mikoláš

     
  • Jakub Vrána

    Jakub Vrána - 2011-07-14
    • status: open --> closed-fixed
     
  • Jakub Vrána

    Jakub Vrána - 2011-07-14

    Podmínka je tam proto, že při editaci je slug obvykle nežádoucí měnit. Ten se předvyplňuje jen při vytváření nové položky.

     
  • Jakub Vrána

    Jakub Vrána - 2011-07-14

    Thank you for the report, I've fixed it in Git. You can download the "Current development version" from http://www.adminer.org/#download

     

Log in to post a comment.