Joomla! Forum Schweiz wird Teil der D-A-CH Community

Nach vielen Jahren als zentrale Anlaufstelle für Fragen rund um Joomla! in der Schweiz wird das Joomla! Forum Schweiz künftig als Archiv weitergeführt.

Die Joomla!-Communities aus Deutschland, Österreich und der Schweiz arbeiten heute enger denn je zusammen. Deshalb bündeln wir künftig auch den deutschsprachigen Support und Austausch an einem gemeinsamen Ort im Joomla! D-A-CH Forum.

Für neue Fragen, Diskussionen und den Austausch mit der Community nutzt bitte ab sofort:

forum.joomla.de

Das Joomla! Forum Schweiz bleibt weiterhin bestehen und wird als Archiv im Lesemodus erhalten. Die vielen Beiträge, Lösungen und Erfahrungen aus den vergangenen Jahren bleiben damit weiterhin zugänglich und über die Suche auffindbar.

Wir bedanken uns herzlich bei allen Mitgliedern, Moderatoren und Helfern, die das Schweizer Joomla! Forum über viele Jahre mit ihrem Wissen und ihrem Engagement geprägt haben.

Wir sehen uns im Joomla! D-A-CH Forum!

Berechtigungen für media field setzen

  • cryptonit
  • Autor
  • Neues Mitglied
  • Neues Mitglied
Mehr
08 Jan. 2012 12:07 #33888 von cryptonit
Berechtigungen für media field setzen wurde erstellt von cryptonit
Hi zusammen

Auch wenn dieses Forum nicht in erster Linie ein Entwickler- Forum ist, so hoffe ich trotzdem auf erfahrene Developer, die mir helfen können.

Einleitung:
Ich wollte in j1.7 ein user- plugin schreiben, mit dem ich die Benutzer- Registration um ein paar Felder erweitere (analog dem bereits in j1.7 mitgelieferten user-profile plugin). Unter anderem sollen die Benutzer die Möglichkeit haben ein Foto von Ihnen hochzuladen. Zu diesem Zweck habe ich das Feld mit dem type media verwendet.

Das Problem:
Solange ich als Admin oder privileged user eingeloggt bin kann ich mein Plugin in vollem Umfang nutzen. Doch wenn ich als normaler registered user ein Bild auswählen/hochladen will, so erhalte ich die Fehlermeldung "Es ist nicht erlaubt diese Ressource einzusehen!". Es ist also stark davon auszugehen, dass es sich somit nicht um ein Problem in meinem Plugin, sondern um ein Berechtigungsproblem handelt.

Meine Frage:
Wo in Joomla kann ich dem normalen registrtierten Benutzer Zugriff auf diese Komponente gewären? (Das media type field ruft ja eigentlich eine Komponente auf und presentiert diese in einer Art lightbox)

Vielen Dank für eure Hilfe!
Mehr
08 Jan. 2012 14:19 #33889 von Tribal6
Hi

Zu diesem Zweck habe ich das Feld mit dem type media...

Hast du dir den Code und die möglichen Parameter für dieses Formular-Feldes mal angesehen?
(../libraries/joomla/form/fields/media.php)
Intressant dürfte da für dich der mögliche Parameter 'asset_id' sein:
Code:
$assetField = $this->element['asset_field'] ? (string) $this->element['asset_field'] : 'asset_id'; $authorField= $this->element['created_by_field'] ? (string) $this->element['created_by_field'] : 'created_by'; $asset = $this->form->getValue($assetField) ? $this->form->getValue($assetField) : (string) $this->element['asset_id'] ; if ($asset == '') { $asset = JRequest::getCmd('option'); }

Die von dir gesuchte 'korrespondierende' Erweiterung heisst 'com_media', und der Zugriff darauf wird gleich am Anfang anhand der (GET-)Parameter gecheckt:
(../components/com_media/media.php)
Code:
$asset = JRequest::getCmd('asset'); $author = JRequest::getCmd('author'); if ( !$user->authorise('core.manage', 'com_media') && (!$asset or ( !$user->authorise('core.edit', $asset) && !$user->authorise('core.create', $asset) && count($user->getAuthorisedCategories($asset, 'core.create')) == 0) && !($user->id==$author && $user->authorise('core.edit.own', $asset)))) { return JError::raiseWarning(403, JText::_('JERROR_ALERTNOAUTHOR')); }
Mindestens 'core.manage' muss bei der 'com_media' für die entsprechende Gruppe auf 'true' sein, plus je nachdem, was du zusätzlich in dem Formularfeld als Parameter definierst, oder auch nicht. Falls nichs, wird als default-Wert die aufrufende Komponente genommen (verm. com_users in deinem Fall).

Da siehst du die Bedingungen, die für einen Zugriff erfüllt sein müssen. Ich geh mal davon aus, das du die geschachtelten Bedingungen interpretieren kannst.

Ich selbst habe das Media-Feld in der 1.7 in der Praxis bisher noch nicht benutzt, ich hab nur mal einbisschen in den Code gekuckt. Sieht aber nicht schlecht aus und könnte auch klappen so ;)

Cheers
Roger

Tue das, was du kannst, mit dem was du hast, da wo du bist.
Folgende Benutzer bedankten sich: cryptonit
  • cryptonit
  • Autor
  • Neues Mitglied
  • Neues Mitglied
Mehr
09 Jan. 2012 11:48 #33892 von cryptonit

Tribal6 schrieb: Hast du dir den Code und die möglichen Parameter für dieses Formular-Feldes mal angesehen?


Hätte ich wohl besser gleich tun sollen.

Tribal6 schrieb: Mindestens 'core.manage' muss bei der 'com_media' für die entsprechende Gruppe auf 'true' sein, plus je nachdem, was du zusätzlich in dem Formularfeld als Parameter definierst, oder auch nicht. Falls nichs, wird als default-Wert die aufrufende Komponente genommen (verm. com_users in deinem Fall).


Ganz genau so ist es. Berechtigungen gesetzt und siehe da: Es geht!
Vielen Dank...

Tribal6 schrieb: Ich selbst habe das Media-Feld in der 1.7 in der Praxis bisher noch nicht benutzt, ich hab nur mal einbisschen in den Code gekuckt. Sieht aber nicht schlecht aus und könnte auch klappen so ;)


Solange du nur Benutzer hast, denen du vertraust, ist das eine schicke und schnelle Lösung. Problematisch wird es, wenn du eine offene Registrierung hast, dann müsste man eine Möglichkeit finden, dass der Benutzer nicht auf die Bilder anderer Benutzer zugreifen kann.
Aber ich bin zufrieden soweit!
Mehr
09 Jan. 2012 18:52 #33893 von Tribal6
Yepp, so isses... ich hab in der 1.5 schon mal angeschaut, es konnte aber auch da schon der User das Verzeichnis wechseln, und hab's dann auch nicht weiter verfolgt.
Und der Parameter
Code:
$directory = (string)$this->element['directory'];
dient soviel ich weiss auch nur dazu, quasi das 'Startverzeichnis' im Popup anzuzeigen.

Ev. ginge ja folgendes:
Mit obigem Parameter Startverzeichnis festlegen und dann die Formularelemnte, mit denen man das Verzeichnis wechseln könnte ausblenden mit

1. einem Template-Override (Directory-Feld als Hidden-Field). (FF/WebdevelopToolbar-User stört das aber nicht gross)

2. per CSS (display:none)
(auch nicht optimal,siehe oben. Findige/lustige 'Mitmenschen' könnten auch die Request-Header ändern/faken)

3. oder aber per Plugin: mit den neuen Plugin Events 'onContentPrepareForm' (entsprechende Felder rausnehemen oder in Hidden-Fields umwandeln beim Formularanzeigen) und 'onContentPrepareData' (um vor dem Speichern das definitiv richtige Verzeichnis einzutragen).

Kannst das ja als Feature-Request einbringen: in der com_media die Regel 'core.browse.directory' hinzufügen. Wie es mittlerweile in der 2.5 ist schau ich morgen mal.

Per Plugin hättest du vollen und kontrollierten Zugriff auf das Formular UND anschliessend auf die Daten.


Oder wenn es wirklich felsenfest sein muss, kannste ja den 'Front-Teil' der com_media kopieren, anpassen, und dann dein eigenes Formularfeld dazu erstellen. Dann kannst du Regeln dazu definieren, wie du grade Lust hast.

Du siehst, es ist im Grunde so wie immer: Möglichkeiten ohne Ende ;)

Viel Spass dabei
Roger

Tue das, was du kannst, mit dem was du hast, da wo du bist.
  • cryptonit
  • Autor
  • Neues Mitglied
  • Neues Mitglied
Mehr
09 Jan. 2012 19:17 #33894 von cryptonit

Tribal6 schrieb: Oder wenn es wirklich felsenfest sein muss, kannste ja den 'Front-Teil' der com_media kopieren, anpassen, und dann dein eigenes Formularfeld dazu erstellen. Dann kannst du Regeln dazu definieren, wie du grade Lust hast.


Wenn, dann würd' ich's so machen. Ich denke, dass ich dann beim anlegen eines neuen Users einen Unterordner generieren würde und in meinem extension field dann automatisch diesen user- ordner als directory aufrufen würde. Ausserdem, wie von dir erwähnt, würde dann dem Benutzer die Möglichkeit entzogen Directories zu wechseln.

Aber eben, bei diesem Projekt nicht notwendig und deshalb werde ich vorerst noch darauf verzichten...
Moderatoren: Tribal6RePaoDragonlordChris Hoefligerpascaleadiheutschi.ch
Powered by Kunena Forum

Joomla! Verband Schweiz - Mitglied werden