PDA

Zobacz pełną wersję : sobi2 i edycja wpisu



krzyszp
02-09-2010, 13:10
Witam

Szukam sposobu, aby udostępnić każdemu zarejestrowanemu w serwisie użytkownikowi edycję wpisów innych userów w katalogu sobi2.

Zastosowałem rady z forum sobi (http://www.sigsiu.net/forum/index.php/topic,17265.0.html), niestety tylko pojawiają się przyciski "Edit", ale po wypełnieniu formularza, system wyświetla komunikat "You are not authorized to see this page"... zna ktoś może obejście tego problemu?

PeFik
02-09-2010, 13:12
tak dać wszystkim userom większe uprawnienia podczas zakładania konta (patrz ustawienia globalne w panelu), ale nie jest to bezpieczne rozwiązanie, ale pytałeś o najprostsze

krzyszp
02-09-2010, 13:27
To nie jest rozwiązanie...
Chodzi mi tylko o umożliwienie edycji wpisów tworzonych przez innych userów w katalogu Sobi2, a nie innych wpisów na stronie.

Zauważyłem, że po rozpoczęciu edycji wpisu, w administracji ten wpis jest "zakłódkowany" - może to jest przyczyną braku możliwości zapisania???

Jola
03-09-2010, 02:26
Witam,
jest jeszcze funkcja updateSobi() (sobi2.class.php) i szlaban w postaci warunku:

if( ( $my->id == $this->owner && $config->allowUserToEditEntry ) || $config->checkPerm() ) {....
:)

krzyszp
03-09-2010, 12:50
Dzięki, też znalazłem wczoraj i pomogło, natomiast pojawił się nowy problem...

Wszystkie edytowane wpisy tracą formatowanie tzn., że wszystkie pola tekstowe (a jest ich kilka) wyświetlane są później jednym ciągiem (nie używam WYSIWYG). Szukam sposobu, aby przed każdym wpisem w polu tekstowym (albo na końcu) dodać znacznik końca linii. Domyślam się, aktualizowanie pola w bazie odbywa się w tym fragmencie kodu:


$v = array();
foreach ( $value as $opt ) {
$opt = addslashes( $opt );
$v[] = " ( '{$fieldid}', '{$opt}', NULL , '{$this->id}', NULL )";
}
$statement = "INSERT INTO `#__sobi2_fields_data` ( `fieldid` , `data_txt` , `data_bool` , `itemid` , `expiration` ) VALUES " . implode(" , ", $v) .";";
$database->setQuery( $statement );
$database->query();
Natomiast ja chciałbym tutaj dodać ten nieszczęsny "Enter", aby rozdzielić linie wpisu (a może lepiej było by otoczyć wpis znakami paragrafu?). Niemniej, formularz ma także inne pola, więc trzeba to zrobić tylko dla "textarea"...


Znalazłem rozwiązanie dla tego problemu :)

w pliku sobi2.class.php należy dodać linię:


$data = "<p>".$data."</p>";
zaraz po:


if( sizeof( $data ) && !$field->wysiwyg && !defined( "_SOBI2_ADMIN" ) ) {
$data = strip_tags($data);
$data = nl2br($data);
}
$data = $this->cleanInput( $data );
$data = $config->clearSQLinjection( $data );Może przydać się komuś na przyszłość...