Welcome, Guest. Please login or register.
Did you miss your activation email?
May 25, 2012, 10:02:31 PM

Login with username, password and session length
Search:     Advanced search
Interested in joining the WebsiteBaker team?
For more Information read here or on our new website.
155529 Posts in 21713 Topics by 7737 Members
Latest Member: chris85
* Home Help Search Login Register
Pages: [1]   Go Down
Print
Author Topic: "Seite direkt bearbeiten" nur für Admins?  (Read 1552 times)
micon

Offline Offline

Posts: 79


« on: November 18, 2009, 12:32:22 AM »

Mit diesem kleinen Snippet kann man ja bekanntlich Seiten direkt bearbeiten:
Code:
<?php if ($wb->is_authenticated()) { echo '<a href="'.WB_URL.'admin/pages/modify.php?page_id='.$page_id.'">Seite bearbeiten</a>';} }?>
Allerdings kann das jetzt JEDER angemeldete Benutzer.

Wie kann man das regeln, dass NUR die Gruppe der Administratoren diesen Link sieht?
Logged
Stefek
WebsiteBaker Org e.V.

Offline Offline

Posts: 4884



« Reply #1 on: November 18, 2009, 12:52:00 AM »

Mit diesem kleinen Snippet kann man ja bekanntlich Seiten direkt bearbeiten:
Code:
<?php if ($wb->is_authenticated()) { echo '<a href="'.WB_URL.'admin/pages/modify.php?page_id='.$page_id.'">Seite bearbeiten</a>';} }?>
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
Logged

"In a time of universal deceit, telling the truth becomes a revolutionary act."
- George Orwell, Nineteen eighty-four (1984)
Hans>NULL

Offline Offline

Posts: 1389


« 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
Logged

/dev/null Ort ohne Wiederkehr
DarkViper
Development Team
*****
Offline Offline

Posts: 1252


« 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)
<?php

    
global $wb$database$HEADING;
    
$returnvalue '';
    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(',',$rec['admin_groups']);
                if (
$user_groups && $admin_groups) {
                    foreach(
$user_groups as $gid) {
                        if (
in_array($gid$admin_groups)) {
                            
$is_admin true;
                            break;
                        }
                    }
                }
                
$admin_users explode(',',$rec['admin_users']);
                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'modify'$HEADING['MODIFY_PAGE'], 'edit'); }
            
$sys_perm $wb->get_session('SYSTEM_PERMISSIONS');
            if (@
is_array($sys_perm)) {
                if ((
$show 2) && (array_search('pages_settings'$sys_perm)!==false)) {
                    
$returnvalue .= sprintf($tpl'settings'$HEADING['MODIFY_PAGE_SETTINGS'], 'modify');
                }
                if ((
$show 4) && (array_search('pages_modify'$sys_perm)!==false)) {
                    
$returnvalue .= sprintf($tpl'sections'$HEADING['MANAGE_SECTIONS'], 'sections');
                }
            }
            if (
$returnvalue != '') { $returnvalue  "<div class=\"EditThisPage\">".$returnvalue."</div>"; }
        }
    }
    return(
$returnvalue == '' 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 » Logged

Anleitungen lesen und selber nachdenken ist anstrengend...  Da lass ich doch lieber andere für mich denken...

In 1984:  Nineteen Eighty-Four is a unrealistic utopia!!
In 2012:  Nineteen Eighty-Four is a little piece only of our reality!!
Stefek
WebsiteBaker Org e.V.

Offline Offline

Posts: 4884



« 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
Logged

"In a time of universal deceit, telling the truth becomes a revolutionary act."
- George Orwell, Nineteen eighty-four (1984)
konto

Offline Offline

Posts: 23


« 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
Logged
Hans>NULL

Offline Offline

Posts: 1389


« 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
Logged

/dev/null Ort ohne Wiederkehr
DarkViper
Development Team
*****
Offline Offline

Posts: 1252


« 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.

Logged

Anleitungen lesen und selber nachdenken ist anstrengend...  Da lass ich doch lieber andere für mich denken...

In 1984:  Nineteen Eighty-Four is a unrealistic utopia!!
In 2012:  Nineteen Eighty-Four is a little piece only of our reality!!
Hans>NULL

Offline Offline

Posts: 1389


« 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
Logged

/dev/null Ort ohne Wiederkehr
Stefek
WebsiteBaker Org e.V.

Offline Offline

Posts: 4884



« 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:
<?php
    
global $wb$database$HEADING;
    if (
$wb->is_authenticated() ) {
        
$css '<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 {margin: 2px; -moz-opacity: 0.60; filter: alpha(opacity=60); opacity: 0.60}
                div.EditThisPage a:hover img  {-moz-opacity: 0.99; filter: alpha(opacity=99); opacity: 0.99 }
                div.EditThisPage p.page_id    { color: #ebeced; font-size: 10px; margin-bottom: 3px; margin-top: 3px }
            -->
            </style>'
;
        
$returnvalue '';
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
Logged

"In a time of universal deceit, telling the truth becomes a revolutionary act."
- George Orwell, Nineteen eighty-four (1984)
DarkViper
Development Team
*****
Offline Offline

Posts: 1252


« 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.  angry
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 » Logged

Anleitungen lesen und selber nachdenken ist anstrengend...  Da lass ich doch lieber andere für mich denken...

In 1984:  Nineteen Eighty-Four is a unrealistic utopia!!
In 2012:  Nineteen Eighty-Four is a little piece only of our reality!!
Stefek
WebsiteBaker Org e.V.

Offline Offline

Posts: 4884



« 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...
  smiley
Wäre toll.
Quote
aber vermutlich mutiert dann das 'kleine' Droplet zum Snippet  wink
Wäre nicht schlimm.

Gruß,
Stefek
Logged

"In a time of universal deceit, telling the truth becomes a revolutionary act."
- George Orwell, Nineteen eighty-four (1984)
DarkViper
Development Team
*****
Offline Offline

Posts: 1252


« 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.
Logged

Anleitungen lesen und selber nachdenken ist anstrengend...  Da lass ich doch lieber andere für mich denken...

In 1984:  Nineteen Eighty-Four is a unrealistic utopia!!
In 2012:  Nineteen Eighty-Four is a little piece only of our reality!!
Stefek
WebsiteBaker Org e.V.

Offline Offline

Posts: 4884



« 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
Logged

"In a time of universal deceit, telling the truth becomes a revolutionary act."
- George Orwell, Nineteen eighty-four (1984)
crnogorac081
AddOn Development
*
Offline Offline

Posts: 1706



« Reply #14 on: February 03, 2010, 08:54:47 PM »

Like the code you wrote DarkViper, and following this thread Smiley
Logged

Wow, I coded something myself: PM Messanger Modul ,Searchbox with suggestions
s.fischer

Offline Offline

Posts: 262



« Reply #15 on: August 24, 2010, 04:20:24 PM »

danke! schönes teil!!!

gruß sfischer
Logged

Glaube nicht alles was du denkst!!!
Pages: [1]   Go Up
Print
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2011, Simple Machines Valid XHTML 1.0! Valid CSS!