Author Topic: "Seite direkt bearbeiten" nur für Admins?  (Read 4702 times)

Offline micon

  • Posts: 95
"Seite direkt bearbeiten" nur für Admins?
« on: November 18, 2009, 12:32:22 AM »
Mit diesem kleinen Snippet kann man ja bekanntlich Seiten direkt bearbeiten:
Code: [Select]
<?php if ($wb->is_authenticated()) { echo &#39;<a href="&#39;.WB_URL.&#39;admin/pages/modify.php?page_id=&#39;.$page_id.&#39;">Seite bearbeiten</a>&#39;;} }?>Allerdings kann das jetzt JEDER angemeldete Benutzer.

Wie kann man das regeln, dass NUR die Gruppe der Administratoren diesen Link sieht?

Offline Stefek

  • Posts: 6177
  • Gender: Male
  • ("ړ)
Re: "Seite direkt bearbeiten" nur für Admins?
« Reply #1 on: November 18, 2009, 12:52:00 AM »
Mit diesem kleinen Snippet kann man ja bekanntlich Seiten direkt bearbeiten:
Code: [Select]
<?php if ($wb->is_authenticated()) { echo &#39;<a href="&#39;.WB_URL.&#39;admin/pages/modify.php?page_id=&#39;.$page_id.&#39;">Seite bearbeiten</a>&#39;;} }?>Allerdings kann das jetzt JEDER angemeldete Benutzer.

Wie kann man das regeln, dass NUR die Gruppe der Administratoren diesen Link sieht?

Schau auf AMASP nach dem Snippet oder Droplet Frontend Edit, oder so ähnlich.
Das macht, was Du wilslt.

Gruß,
Stefek
"Gemeinsam schafft man mehr."

gemeinsam
1. mehreren Personen oder Dingen in gleicher Weise gehörend, eigen
2. in Gemeinschaft [unternommen, zu bewältigen]; zusammen, miteinander
#Duden

Offline Hans>NULL

  • Posts: 1386
  • Gender: Male
Re: "Seite direkt bearbeiten" nur für Admins?
« Reply #2 on: November 18, 2009, 12:54:52 AM »
Wenn Du selber basteln  willst gehört zum is_authenticated() noch die entsprechende  group_id == 1
Ansonsten mach's wie von Stefek empfohlen.
Gruß, Hans>NUL
/dev/null Ort ohne Wiederkehr

Offline DarkViper

  • Forum administrator
  • *****
  • Posts: 3021
  • Gender: Female
Re: "Seite direkt bearbeiten" nur für Admins?
« Reply #3 on: November 18, 2009, 04:16:12 AM »
kleine Korrektur: (sorry Hans)

Seit die Rechtestruktur auf MultipleGroups umgestellt ist, genügt der einfache Vergleich nicht mehr, Da ein User Mitglied in verschiedenen Gruppen (die u.U. Adminrechte haben) sein kann, ebenso kann er, zusammen mit anderen als admin_user in der jeweiligen Seite eingetragen sein.
Ich hab mal kurz das Droplet 'EditThisPage' von AMASP etwas aufpoliert und auch gleich die Icons der Themes berücksichtigt.
(dürfte auch eine Idee schneller sein, da nur noch eine Query ausgeführt wird, die zudem auch nur unbedingt erforderliche Daten abholt und nicht komplette Datensätze.)

Code: (EditThisPage_new) [Select]
<?php

    
global $wb$database$HEADING;
    
$returnvalue = &#39;&#39;;
    
if ($wb->is_authenticated() ) {
        
$is_admin false;
        
$page_id PAGE_ID == $wb->default_page_id PAGE_ID;
        
$user_id $wb->get_user_id();
      if (
$rset $database->query("SELECT `admin_users`, `admin_groups` FROM `".TABLE_PREFIX."pages` WHERE `page_id` = ".$page_id)) {
          if (
$rec $rset->fetchRow()) {
                
$user_groups $wb->get_groups_id();
                
$admin_groups explode(&#39;,&#39;,$rec[&#39;admin_groups&#39;]);
                
if ($user_groups && $admin_groups) {
                    foreach(
$user_groups as $gid) {
                        if (
in_array($gid$admin_groups)) {
                            
$is_admin true;
                            break;
                        }
                    }
                }
                
$admin_users explode(&#39;,&#39;,$rec[&#39;admin_users&#39;]);
                
if ($admin_users) {
                    if (
in_array($user_id$admin_users)) { $is_admin true;; }
                }
            }
        }
        if (
$is_admin) {
            
$tpl  "<a href=\"".ADMIN_URL."/pages/%1\$s.php?page_id=".$page_id."\" target=\"_blank\" title=\"%2\$s\">";
            
$tpl .= "<img src=\"".THEME_URL."/images/%3\$s_16.png\" alt=\"\" /></a>";
            
$show = (isset($show) ? ($show : ($show $show)) : 1);
            if (
$show 1) { $returnvalue .= sprintf($tpl, &#39;modify&#39;, $HEADING[&#39;MODIFY_PAGE&#39;], &#39;edit&#39;); }
            
$sys_perm $wb->get_session(&#39;SYSTEM_PERMISSIONS&#39;);
            
if (@is_array($sys_perm)) {
                if ((
$show 2) && (array_search(&#39;pages_settings&#39;, $sys_perm)!==false)) {
                    
$returnvalue .= sprintf($tpl, &#39;settings&#39;, $HEADING[&#39;MODIFY_PAGE_SETTINGS&#39;], &#39;modify&#39;);
                
}
                if ((
$show 4) && (array_search(&#39;pages_modify&#39;, $sys_perm)!==false)) {
                    
$returnvalue .= sprintf($tpl, &#39;sections&#39;, $HEADING[&#39;MANAGE_SECTIONS&#39;], &#39;sections&#39;);
                
}
            }
            if (
$returnvalue != &#39;&#39;) { $returnvalue  = "<div class=\"EditThisPage\">".$returnvalue."</div>"; }
        
}
    }
    return(
$returnvalue == &#39;&#39; ? true : $returnvalue);

?>

Das Teil funktioniert auch, wenn kein Frontend-Login aktiviert ist, jedoch ein Admin eine Seite aus dem Backend aufruft.


[edit Nachtrag]
Using:   [[EditThisPage]] or [[EditThisPage?show=3]]
Values for show:
    1 = edit page (default)
    2 = modify page options
    4 = modify sections
to combine the links, simply add the Values (i.e show all = 1+2+4 => show=7)

Add div.EditThisPage{} to your Template CSS
I.e:
div.EditThisPage {
    display: inline;
}
div.EditThisPage img {
    margin: 0px 3px;
    border: none;
}
[/edit Nachtrag]
 



viel Spass...
Werner
« Last Edit: November 19, 2009, 09:30:21 PM by DarkViper »
Der blaue Planet - er ist nicht unser Eigentum - wir haben ihn nur von unseren Nachkommen geliehen

"You have to take the men as they are… but you can not leave them like that !" :-P
Das tägliche Stoßgebet: Oh Herr, wirf Hirn vom Himmel !

Offline Stefek

  • Posts: 6177
  • Gender: Male
  • ("ړ)
Re: "Seite direkt bearbeiten" nur für Admins?
« Reply #4 on: November 18, 2009, 01:08:13 PM »
Hallo Werner,
mag das neue Droplet gerne.

Wäre es auch möglich, Links zu den Seiteeinstellungen und Seitensections zu setzen, wenn der Fall ist, dass der Benutzer Zugriff darauf hat?

Das wäre ein cooles Droplet.

Gruß,
Stefek
"Gemeinsam schafft man mehr."

gemeinsam
1. mehreren Personen oder Dingen in gleicher Weise gehörend, eigen
2. in Gemeinschaft [unternommen, zu bewältigen]; zusammen, miteinander
#Duden

konto

  • Guest
Re: "Seite direkt bearbeiten" nur für Admins?
« Reply #5 on: November 18, 2009, 01:18:40 PM »
Wie meint ihr dies?

Also wo muss ich was einfügen, dass ich so direkt auf die Site komme, um dies zu bearbeiten?!

Lg


edit: könnt ihr mir gleich den ganzen link geben?
will auf diese url:
192.168.3.132/wb
Also direkt im netzwerk.

Ist einfach die Index seite, welche ich meine...also home.php

Lg

Offline Hans>NULL

  • Posts: 1386
  • Gender: Male
Re: "Seite direkt bearbeiten" nur für Admins?
« Reply #6 on: November 18, 2009, 02:54:58 PM »
@DarkViper
Quote
kleine Korrektur: (sorry Hans)
Dank für die Aufklärung. So werde ich meine Scripts nochmal auf diesen Sachverhalt hin überprüfen, also ob auf Notwendigkeit.
Bin zwar erstmal froh, daß meine ersten Schnipsel nicht nur laufen, sondern auch was bewirken,
aber Türen sollen die natürlich auch nicht öffnen  :evil:
Gruß, Hans>NUL
/dev/null Ort ohne Wiederkehr

Offline DarkViper

  • Forum administrator
  • *****
  • Posts: 3021
  • Gender: Female
Re: "Seite direkt bearbeiten" nur für Admins?
« Reply #7 on: November 18, 2009, 03:40:50 PM »
@Stefek

Ich hab das Teil noch ein wenig ergänzt. Die Rechteabfragen habe ich nicht weiter differenziert, das erledigt dann das Backend beim Aufruf.

Die Änderungen sind im Originalpost weiter oben eingebaut.

Der blaue Planet - er ist nicht unser Eigentum - wir haben ihn nur von unseren Nachkommen geliehen

"You have to take the men as they are… but you can not leave them like that !" :-P
Das tägliche Stoßgebet: Oh Herr, wirf Hirn vom Himmel !

Offline Hans>NULL

  • Posts: 1386
  • Gender: Male
Re: "Seite direkt bearbeiten" nur für Admins?
« Reply #8 on: November 18, 2009, 03:45:59 PM »
So, überprüft.
Resultat ok, da hier Redaktionen + Admins in nur zwei Gruppen existieren. (darauf hatte ich es auch fixiert)
Will man aber das Potential MultipleGroups ausschöpfen, muß man Deiner Empfehlung folgen.
Dank und Gruß, Hans>NUL
/dev/null Ort ohne Wiederkehr

Offline Stefek

  • Posts: 6177
  • Gender: Male
  • ("ړ)
Re: "Seite direkt bearbeiten" nur für Admins?
« Reply #9 on: November 18, 2009, 04:38:54 PM »
Hallo Werner.
Noch ein kleiner Schönheitsfehler, wenn ich eine Gruppe habe, die sich zwar anmelden kann, die aber keinerlei Rechte bei Seiten hat bzw. der eine Seite nicht zugeführt wurde.

In dem Falle bekomme ich die Note: Error in: ETP?show=7, no correct returnvalue.

Auch schade, dass wenn ich als Editor einer Gruppe zugefügt wurde, alle images/links angezeigt werden, wenn ich aber darauf klicke, ich die Nachricht bekomme "ungenügende zugriffsrechte".
Wäre schöne, wenn die Links in dem Fall nicht auftauchen.

Gruß,
Stefek

BTW. Du kannst Das CSS auch gleich ins Droplet schreiben, weil die SuMas sich nicht einlogen, werden sie es auch nicht validieren:

Bei mir habe ich es im Droplet so ergänzt:
Code: [Select]
<?php
    
global $wb$database$HEADING;
    if (
$wb->is_authenticated() ) {
        
$css = &#39;<style media="screen" type="text/css">
            
<!--
                
div.EditThisPage     background-color#4a5770; text-align: center; padding: 2px; position: fixed; top: 5px; right: 20px; width: 80px; height: 40px; border: solid 2px #ced9da; -moz-opacity: 0.80; filter: alpha(opacity=80); opacity: 0.80  }
                
div.EditThisPage a img {margin2px; -moz-opacity0.60filteralpha(opacity=60); opacity0.60}
                
div.EditThisPage a:hover img  {-moz-opacity0.99filteralpha(opacity=99); opacity0.99 }
                
div.EditThisPage p.page_id    color#ebeced; font-size: 10px; margin-bottom: 3px; margin-top: 3px }
            
-->
            </
style>&#39;;
        
$returnvalue = &#39;&#39;;
Und das positive return dann ergänzt:
$returnvalue  $css."<div class=\"EditThisPage\">".$returnvalue."</div>";
So bleibt alles im Droplet und es muss nicht im Template CSS gefummelt werden.

Gruß,
Stefek
"Gemeinsam schafft man mehr."

gemeinsam
1. mehreren Personen oder Dingen in gleicher Weise gehörend, eigen
2. in Gemeinschaft [unternommen, zu bewältigen]; zusammen, miteinander
#Duden

Offline DarkViper

  • Forum administrator
  • *****
  • Posts: 3021
  • Gender: Female
Re: "Seite direkt bearbeiten" nur für Admins?
« Reply #10 on: November 18, 2009, 05:05:52 PM »
Quote
BTW. Du kannst Das CSS auch gleich ins Droplet schreiben, weil die SuMas sich nicht einlogen, werden sie es auch nicht validieren:
1. Bei XHTML ist CSS grundsätzlich nur innerhalb des <head> Bereiches erlaubt. Mit Ausnahme von style="" innerhalb von Tags. Und da es bei mir nur XHTML-Code gibt......
2. Nicht XHTML-conformer Code ist für WB-Neuentwicklungen nicht erwünscht. (Sagt jetzt einfach mal die QS)
3. Habe ich selbst, ehrlich gesagt, keine Lust mich bei einer Style-Änderung durch den Source von WB, Addons und Droplets zu wühlen, um auch das letzte, irgendwo versteckte CSS-Element zu finden...  :wink:

Quote
In dem Falle bekomme ich die Note: Error in: ETP?show=7, no correct returnvalue.
Ok, die Droplet-Engine mag keine Leerstrings als Rückgabewert.  :x
die letzte Zeile:

return ''; durch return true;

ersetzen, sollte den Fehler beheben.

Ich schau mal nach den restlichen Rechten... aber vermutlich mutiert dann das 'kleine' Droplet zum Snippet  :wink:
« Last Edit: November 18, 2009, 05:19:50 PM by DarkViper »
Der blaue Planet - er ist nicht unser Eigentum - wir haben ihn nur von unseren Nachkommen geliehen

"You have to take the men as they are… but you can not leave them like that !" :-P
Das tägliche Stoßgebet: Oh Herr, wirf Hirn vom Himmel !

Offline Stefek

  • Posts: 6177
  • Gender: Male
  • ("ړ)
Re: "Seite direkt bearbeiten" nur für Admins?
« Reply #11 on: November 18, 2009, 05:18:57 PM »
Auch habe ich selbst, ehrlich gesagt, keine Lust mich bei einer Style-Änderung durch den Source von WB zu wühlen, um auch das letzte, irgendwo versteckte CSS-Element zu finden...  :wink:
Macht Sinn.


Quote
Ich schau mal nach den restlichen Rechten...
  :-)
Wäre toll.
Quote
aber vermutlich mutiert dann das 'kleine' Droplet zum Snippet  :wink:
Wäre nicht schlimm.

Gruß,
Stefek
"Gemeinsam schafft man mehr."

gemeinsam
1. mehreren Personen oder Dingen in gleicher Weise gehörend, eigen
2. in Gemeinschaft [unternommen, zu bewältigen]; zusammen, miteinander
#Duden

Offline DarkViper

  • Forum administrator
  • *****
  • Posts: 3021
  • Gender: Female
Re: "Seite direkt bearbeiten" nur für Admins?
« Reply #12 on: November 19, 2009, 10:41:50 AM »
So, jetzt sollte es auch mit den restlichen Rechten klappen...

Die Änderungen sind im Originalpost weiter oben eingebaut.
Der blaue Planet - er ist nicht unser Eigentum - wir haben ihn nur von unseren Nachkommen geliehen

"You have to take the men as they are… but you can not leave them like that !" :-P
Das tägliche Stoßgebet: Oh Herr, wirf Hirn vom Himmel !

Offline Stefek

  • Posts: 6177
  • Gender: Male
  • ("ړ)
Re: "Seite direkt bearbeiten" nur für Admins?
« Reply #13 on: February 03, 2010, 08:38:57 PM »
Hallo Werner,

könntest Du einen Tipp geben, wie ich das statt als Droplet, als ein installierbares Snippet (Function) angehen könnte?

Wäre für einen Tipp sehr dankbar.

MfG,
Stefek
"Gemeinsam schafft man mehr."

gemeinsam
1. mehreren Personen oder Dingen in gleicher Weise gehörend, eigen
2. in Gemeinschaft [unternommen, zu bewältigen]; zusammen, miteinander
#Duden

Offline crnogorac081

  • Posts: 1899
  • Gender: Male
Re: "Seite direkt bearbeiten" nur für Admins?
« Reply #14 on: February 03, 2010, 08:54:47 PM »
Like the code you wrote DarkViper, and following this thread :)
no bb in signature

Offline s.fischer

  • Posts: 289
  • Gender: Male
Re: "Seite direkt bearbeiten" nur für Admins?
« Reply #15 on: August 24, 2010, 05:20:24 PM »
danke! schönes teil!!!

gruß sfischer
Glaube nicht alles was du denkst!!!

 

postern-length