Sylonell képe

Igazándiból első körben csak be copy-ztam az egészet, mert így tuti, hogy működnie kellene és csak ezek után hasznosítanám egy-egy részét. Azért vágtam be a forrást, mert a queryt nem akarja hasznosítani az oldalam, persze nem a full forrást gondoltam használni :)

0
0
Sk8erPeter képe

Felőlem nyugodtan használhatod :), nehogy félreérts, nem arra céloztam, hogy ne használd, mert irgumburgum. :) Egyébként remélem most már látod a JavaScript-kódot is, ami az egésznek a lényege.
Részemről akár az egész kódot bemásolhatod, de felhívtam a figyelmed, hogy létezik jobb megoldás is, és hogy adnod kellene előbb egy esélyt pl. a Colorboxnak, mert valószínűleg könnyebben megoldható a segítségével, amit szeretnél. Ha nem megy, segítünk.

0
0
Sk8erPeter képe

A machine name-re való átírogatásra vonatkozó objektumot és metódusokat a /misc/machine-name.js fájlban láthatod.
Ha pl. megnyitod az /admin/structure/types/add oldalt, akkor ez is betöltődik.
A transliterate függvény alakítja át a szöveget, ez pedig egy replace patternt (settings.replace_pattern) vár, meg egy karaktert, amire le kellene cserélni a megfelelő karaktereket (settings.replace).

Így néz ki a függvény:

  /**
   * Transliterate a human-readable name to a machine name.
   *
   * @param source
   *   A string to transliterate.
   * @param settings
   *   The machine name settings for the corresponding field, containing:
   *   - replace_pattern: A regular expression (without modifiers) matching
   *     disallowed characters in the machine name; e.g., '[^a-z0-9]+'.
   *   - replace: A character to replace disallowed characters with; e.g., '_'
   *     or '-'.
   *   - maxlength: The maximum length of the machine name.
   *
   * @return
   *   The transliterated source string.
   */
  transliterate: function (source, settings) {
    var rx = new RegExp(settings.replace_pattern, 'g');
    return source.toLowerCase().replace(rx, settings.replace).substr(0, settings.maxlength);
  }

A default replace pattern és a karakter, amire cserél, látszik a
jQuery.extend(Drupal.settings, .......)
résznél a forráskódban:
"replace_pattern":"[^a-z0-9_]+","replace":"_"

Nos, a fenti transliterate függvényt át kellene kicsit alakítanod.
Legegyszerűbb az lenne, ha egy ékezetátalakító metódust betennél ebbe az objektumba, hasonlóan a transliterate-hez, majd ezt a függvényt a transliterate-en belül utolsó sor ELŐTT meghívnád úgy, hogy a "source" változót adod át neki paraméterül.

Tehát ilyesmire gondolok (a kommentbe tett pontok azt jelzik, hogy előtte kód vagy komment van):

  // ........
  transliterate: function (source, settings) {
    var rx = new RegExp(settings.replace_pattern, 'g');
    // IDE KERÜL a plusz függvényhívás
    source = this.remove_accents(source);
    // innentől ismét az eredeti kód...
    return source.toLowerCase().replace(rx, settings.replace).substr(0, settings.maxlength);
  }, // FIGYELEM! Ha ezután teszed, ne felejtsd el a vesszőt!!
 
  // ........
  remove_accents: function (source) {
     // ide kerül az ékezet eltávolítására szolgáló kód!!
     // ...
     return source;
  }
};

Ékezet átalakításával kapcsolatban hasznos lehet:
http://4rapiddev.com/javascript/javascript-remove-vietnamese-accents/

Persze a remove_vietnamese_accents függvénynevet változtasd meg, és tegyél bele innen kimaradt ékezetes karaktereket is, mint pl. az ó, ö, ő, ü, ű.

4
0
Sylonell képe

Igen meg van:) adok mindenképp esélyt, mert nekem képeket és linket is kell homályosítani vagy alap ötletem szerint egy feketés vászont elé húzni. Queryben pedig (még) nem vagyok otthon, de ahogy elnézem érdemes lesz leülni ezt is tanulgatni.

0
0
Sk8erPeter képe

"Queryben pedig (még) nem vagyok otthon"
Gondolom a jQuery-re gondolsz (j az elején). :)

A hivatalos honlapja nagyon jól dokumentált, és szerencsére tele van példákkal:
http://jquery.com/

Később aztán a jQuery UI mellett sem lehet csak úgy elmenni, itt is jó sok demó van:
http://jqueryui.com/

0
0
papps képe

Köszönöm, szépen beállítottam amit mondtál, az volt a baj, hogy az angolnál nem volt beállítva az útvonal előtti "en" tag.

esetleg tudnál nekem ajánlani egy olyan modult, amely fájfeltöltést tesz lehetővé?? és ezt később el tudjam helyezni az oldalra, blokként?
előre is köszönöm.

0
0
papps képe

Köszönöm, szépen beállítottam amit mondtál, az volt a baj, hogy az angolnál nem volt beállítva az útvonal előtti "en" tag.

esetleg tudnál nekem ajánlani egy olyan modult, amely fájfeltöltést tesz lehetővé?? és ezt később el tudjam helyezni az oldalra, blokként?
előre is köszönöm.

0
0
alippai képe

Ne egyszerű (function($){-be helyezd a kódod, mert ha AJAX-ot használsz, akkor a hover() függvényt egy nem létező elemre hívod meg.
Így kell kezelni Drupalban az AJAX-os elemeket:
http://drupal.org/node/756722#behaviors

2
0

Lippai Ádám
young element

Sk8erPeter képe

Azért nem működik az AJAX-szal lekért elemekre, mert azok még nincsenek a DOM-ban akkor, amikor a "hover" eseményre feliratkozol, rákötöd az oldal betöltődése után megjelenő elemekre.

Ezért gondolni kell a "jövőben létrejövő" elemekre is - erre szolgál a jQuery .delegate() függvénye (1.4.3-tól felfelé (tehát a 7-es által alapértelmezettként használt 1.4.4-gyel kell működnie); korábbi: .live(), későbbi (csak 1.7-től felfelé működik): .on()).
Lásd a dokumentációt:
"Attach a handler to one or more events for all elements that match the selector, now or in the future, based on a specific set of root elements."

Valahogy így (csak példa):

$('body').delegate('.views-fluidgrid-item', 'hover', function () {
    $(this).find('.eventtitle').css({
        backgroundColor: 'transparent'
    });
});

Hasonlóan a többire is.
1
-2
alippai képe

Majdnem tökéletes válasz, még arra ügyelj, hogy ne a /misc/machine-name.js fájlt írd át, hanem hozz létre egy modult, ami a hook_js_alter() függvényt valósítja meg.
Így nem kell minden Drupal frissítésnél újra elvégezni a változtatást.

6
0

Lippai Ádám
young element