Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]tinyMCE - problem z edytorem tekstu
Forum PHP.pl > Forum > Przedszkole
zkfrt
Witajcie. Raczkuje póki co w PHP, dlatego postanowłem skorzystać z tego działu winksmiley.jpg. Szukałem skryptu umożliwiającego edycje plików txt siedzących na serwerze z poziomu przegladarki. Na jednym forum znalazłem coś, co zdaje się odpowiadać moim potrzebom. Edytor tinyMCE oferuje te opcje na których mi zalezy - działa na zasadzie WYSIWYG i oferuje tylko podstawowe znaczniki w wersji uproszczonej - <b>, <i> itd winksmiley.jpg. Problem w tym, że sam edytor działa fajnie, dodaje znaczniki itd, ale po kliknięciu "zapisz zmiany" zamiast zapisywać, czyści zawartość pliku txt i wtedy zapisuje. Próbowałem różnych kombinacji, ale ciągle cos nie gra. Prosiłbym o rzucenie okiem na skrypt i radę - co zrobić, aby zadziałał. Już długo się nad nim "znęcam" i może po prostu nie widzę czegoś 'oczywistego' winksmiley.jpg.

Oto zawartość tego pliku - edytor.php, który ma za zadanie edytować plik aktualnosci.txt siedzący na serwerze.

  1.  
  2. <script type="text/javascript" src="jscripts/tiny_mce/tiny_mce.js"></script>
  3. <script type="text/javascript">
  4. tinyMCE.init({
  5. mode : "textareas",
  6. theme : "simple"
  7. });
  8. </script>
  9.  
  10. <?php
  11. function stripslashes_deep($value){
  12. $value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value); return $value;
  13. }
  14. $_POST = array_map('stripslashes_deep', $_POST);
  15. $_GET = array_map('stripslashes_deep', $_GET);}
  16. ?>
  17.  
  18. <?php
  19. if (isset($_POST['edit']))
  20. {
  21. $ok = file_put_contents('aktualnosci.txt', $_POST['content']);
  22. if ($ok)
  23. echo '<center><p>Zmiany zostały zapisane!</p></center>';
  24. }
  25. $content = file_get_contents('aktualnosci.txt');
  26. ?>
  27. <form method="post">
  28. <center><table>
  29. <tr>
  30. <td><textarea cols="80" rows="30" name="content" ><?php echo $content; ?></textarea></td>
  31. </tr>
  32. <tr>
  33. <td><input type="submit" name="edit" value="Zapisz zmiany" /></td>
  34. </tr>
  35. </table></center>
  36. </form>


Pozdrawiam i z góry dziękuję za pomoc.
potreb
Powinieneś użyć raczej tej funkcji: http://www.php.net/manual/en/function.fwrite.php
zkfrt
Chyba dam sobie spokój z tym tinyMCE. Już wiem dlaczego mi to nie chce działac - tinyMCE przed zapisem pliku wsadza na początku i na końcu znacznik <p>, </p> , a żeby flash mógł pobrać treść, musi sie odwoływać do variable "tresc=....". Po edycji i zapisie plik może i jest zapisany jako txt, ale ma już zawartość "<p>tresc=..." więc flash go nie widzi :/ . W dodatku zamiast standardowych tagów <B>, <I> i <U>, tinyMCE wrzuca <strong>, <em> i <span style="text-decoration: underline;"> czyli nic z tego, bo flash obsłuży jedynie zestaw podstawowy. Sam skrypt 'edytora' w php działa:

  1. <?php
  2. function stripslashes_deep($value){
  3. $value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value); return $value;
  4. }
  5. $_POST = array_map('stripslashes_deep', $_POST);
  6. $_GET = array_map('stripslashes_deep', $_GET);}
  7. ?>
  8.  
  9. <?php
  10. if (isset($_POST['edit']))
  11. {
  12. $ok = file_put_contents('aktualnosci.txt', $_POST['news']);
  13. if ($ok)
  14. echo '<center><p>Zmiany zostały zapisane!</p></center>';
  15. }
  16. $news = file_get_contents('aktualnosci.txt');
  17. ?>
  18. <form method="post">
  19. <center><table>
  20. <tr>
  21. <td><textarea cols="80" rows="30" name="news"><?php echo $news; ?></textarea></td>
  22. </tr>
  23. <tr>
  24. <td><input type="submit" name="edit" value="Zapisz zmiany" /></td>
  25. </tr>
  26. </table></center>
  27. </form>


...tylko ciągle nie mogę dojść jak dodać ten przycisk wstawiający <b> w tekst, na takiej zasadzie jak tuhttp://webmade.org/porady/bbcode-php.php

Pozdrawiam
Fafu
Może to cię zainteresuje: http://rafael.webd.pl/tmp/bbcode/v4.5/
thek
zkfrt... A co to za problem z tymi tagami? Też mnie czasem TinyMCE wkurzał z nadmiarami to zwyczajnie to co zwraca jeszcze filtruję odpowiednio i wszystko w temacie. Nie chcesz na starcie <p> to je usuwasz. Nie chcesz na końcu </p> to też usuwasz. A resztę zamieniasz na odpowiednie lub szukasz w konfiguracji czy nie da się ich odpowiednio zamienić (tu już musisz zajrzeć na stronę, ale chyba taka możliwość była z tego co pamiętam).
zkfrt
thek - niech Bogowie, lub inne instoty wyższe, które czcisz wynagrodzą Ci w kobietach, bogactwie i chwale cenne rady Twoje! O to mi chodziło.

Pozdrawiam


P.S. Póki co jednak prosiłbym o nie zamykanie tematu na wypadek gdybym znów się w czymś zapętlił winksmiley.jpg.

Niestety... szukałem, szukałem i nie doszedłem jak to zrobić. <P> i </P> ofc pozbyłem się jak pisałeś dzięki invalid_elements : "p", jednak z resztą ciągle tkwie w miejscu i już mi się powoli mieszać zaczyna. Chodzi mi konkretniej o to, aby tinyMCE wstawiał standardowo <B>, <I> i <U> zamiast swoich udziwniaczy <strong>, <em>... Robił ktoś może taki 'trick' i mógłby wskazać gdzie szukać?
Dzięki i pozdrawiam
darko
To:
  1. $ok = file_put_contents('aktualnosci.txt', $_POST['news']);

zamień na:
  1. $data = $_POST['news'];
  2. $from = array("<strong>","</strong>","<em>","</em>");
  3. $to = array("<b>","</b>","<i>","</i>");
  4. $i = 0;
  5. foreach($from as $f) {
  6. $data = str_replace($f, $to[$i], $data);
  7. $i++;
  8. }
  9. $ok = file_put_contents('aktualnosci.txt', $data);


// edit
Najlepiej byłoby napisać odpowiednie wyrażenie regularne.
thek
Sprawdź taki zapis w inicjalizacji winksmiley.jpg

tinyMCE.init({
valid_elements : "b/strong",
});

I... Bądź silny bracie biggrin.gif
zkfrt
thek ... my saviour biggrin.gif. Na tej zasadzie już sobie dalej poradzę.
Dzięki za pomocne odpowiedzi, pozdrawiam i 'wesołych'!
panbobek44
Cytat(thek @ 23.12.2009, 09:38:15 ) *
Sprawdź taki zapis w inicjalizacji wink.gif

tinyMCE.init({
valid_elements : "b/strong",
});

I... Bądź silny bracie biggrin.gif


Niestety u mnie nie pomaga. Dalej w wyniku mam <strong>, a potrzebuję <b>.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.