Drupal 10-ben szöveges mezőt szeretnék beilleszteni egy tartalomtípus űrlapjába úgy, hogy az ne legyen módosítható vagy látható a szerkesztő felhasználó számára. Ha nem láthatóként állítom be vagy a szerkesztőnek nem adok hozzáférést ahhoz a mezőhöz akkor az be sem töltődik az űrlapra ha azt a szerkesztő nyitja meg. Ezt a tartalomtípus űrlapmezőt arra szeretném használni, hogy a szerkesztő számára nem módosítható (lehetőleg nem is látható) programkódot helyezzek el benne az űrlap betöltődése után, amely kód tartalma előre nem ismert és ezért azt egy javascript töltené fel. Sajnos nincs mit feltölteni, mert a mező be sem töltődik a szerkesztőnek. Hogy lehetne valamilyen megoldást találni?
Drupal verzió:
Áthidaló megoldás?
Az alaprendszer önmagában nem kínál lehetőséget egy adott típusú tartalom szerkesztőoldalán az egyes beviteli mezők szerepkörönként való szabályzására. Egy áthidaló megoldás jut eszembe, lehet, te is hasonlót írtál le:
Nem próbáltam ki, csak emlékezetből írtam, lehet, már nem így működik.
Egyébként ha közösségi modult keresnél a megoldáshoz, akkor én a „field-level permission” kifejezésre keresnék rá.
Nem működik.
Azért nem mert a szerkesztő user a formázott szöveg típusú mezőt a szerkesztési űrlapon látja és szerkesztheti is Szűrt HTML-el. Igaz, hogy a 6. pontod szerint bevitt tartalmat nem látja a szerkesztő user, de az az oldal kódjában ténylegesen sincs ott, így a javascriptem nem tudja felhasználni adatként. Úgy tűnik, hogy a Drupal ki sem küldi az értéket, mivel a user nem láthatja. Valójában ezt a Drupal úgy értelmezheti, hogy nem elrejti a tartalmat, hanem eltünteti. Itt jut eszembe, hogy a mezőhöz hozzá kellene írnom egy hidden tulajdonságot, hátha úgy kiküldi a kódot csak rejtetté teszi.
Modulokat már keresgettem a láthatóság és/vagy hozzáférés szabályozására, de amivel eddig próbálkoztam az mind ugyanazt csinálja, hogy ki sem küldi mező value tartalmát vagy még a meződeklarációt sem a korlátozott usereknek. A "Field Permissions" modul pedig bugos lehet, mert ha az egyedi jogosultságainál tiltom bármelyik mező szerkesztését a szerkesztő user számára akkor a képfeltöltés mező nem hajlandó többé képet feltölteni, annak ellenére, hogy az nem került korlátozásra.
Amúgy ez a változás csak a D10-ben van, mert a régebbi Drupalban (8) elég volt a user hozzáférését tiltani és a Drupal akkor kiküldte a mezőt és a mező tartalmát is az űrlapra csak szürkével jelent meg és nem volt szerkeszthető, de ott volt és a javascript tudta is használni. A D10 már ki sem küldi sem a mező kódját, sem annak tartalmát annak a usernek amely számára korlátozva van a hozzáférés. Nem böngészőfüggő, mert 4 böngészőben is kipróbáltam.
Köszönöm a hozzászólásod.
Az Asset injector modullal
Az Asset injector modullal egyéni CSS kóddal be tudsz a mezőre display: none; visibilty: hidden...stb. tulajdonsagot àllítani és hozzá tudod àllítani a kívánt szerepkört is.
A JS injectorral pedig egyéni .js kódot is meg tudsz adni, szintén szerepkörökhöz rendelve.
https://www.drupal.org/project/asset_injector
Jó ötlet.
Úgy érted, hogy ne előre beállítottan rejtsem el a mezőt, honem amikor kiküldésre kerül a lekért D10 oldal akkor ne legyen rejtve a tartalom mezője, majd a kiküldött tartalom szükséges mezőjét javascriptel tegyem hiddenné? Így kimegy a kód és a mező is létezni fog csak nem lesz látható, illetőleg hozzáférhető, viszont fel tudom használni? Ígyérted? Szerintem jó ötlet és működhet. Rövidesen kipróbálom. Kösz!
Itt nem lenne rossz, ha
Itt nem lenne rossz, ha végfelhasználói szemszögből írnád le, hogy mit is kellene csinálni.
Nekem a 'nem szerkeszthető mezőbe js kód csinál valamit' erősen villogtatja a bad pattern lámpát, szóval itt jó eséllyel vissza kellene térni az alapolhoz, hogy
1. Mid van (js kód, etc)?
2. Mit kell tudni a szerkesztőknek?
3. Ebből mi fog megjelenni a végfelhasználóknak.
----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.