PDA

Zobacz pełną wersję : Przycisk save - edycja artykułu



mch
31-08-2010, 20:42
Witam,

Mam pytanie czy jest możliwe dopisanie dodatkowej funkcji która będzie realizowana po wciśnięciu przycisku save w oknie tworzenia/edycji artykułu (front-end). Mówiąc inaczej nie za bardzo rozumiem jaka funkcja jest realizowana po wciśnięciu przycisku save w trakcie edycji artykułu oraz czy możliwa jest jej modyfikacja (poprzez dodanie swoich instrukcji)?

Dziękuję za odpowiedź

moje
31-08-2010, 21:09
A jaką funkcję potrzebujesz? Odpowiedz możliwe maksymalnie szczegółowo.

mch
01-09-2010, 11:44
Po wcisnieciu przycisku save w artykule realizowana jest funkcja zawarta w pliku
/joomla15/components/com_content/controller.php
lub
/administrator/components/com_content/controller.php

Tak mi sie wydaje :)
Chcialbym aby zostal wywolany takze plik *.batpo stronie klienta.Mozliwe jest to do wykonania za pomoca javascriptu:

<html>
<head>
<script type="text/javascript">
function runApp(which) {
WshShell = new ActiveXObject("WScript.Shell");
WshShell.Run (which,1,true);
}
</script>
</head>
<body>
<!-- Two ways to create a link to run the app. -->
<font onClick="runApp('file://c:/winnt/notepad.exe');" style="cursor: hand;"><u>Notepad</u></font>
<br>
<!-- Or use <a> descriptor -->
<a href="runApp('file://c:/test.bat');">Batch File</a>
</body>
</html>


(przyklad pochodzi ze strony:http://www.tek-tips.com/viewthread.cfm?qid=1226233&page=1)

Jednak nie wiem jak wywolac skrypt java w pliku php. Jednak moze istnieje inna mozliwosc?

---------- Post dodany o 09:44 ---------- Poprzedni post był o 07:52 ----------

ok wiem, ze ActiveX moze byc tylko wyknane pod IE :(

moje
01-09-2010, 14:59
A co konkretnie miałby robić ten bat?

mch
01-09-2010, 20:57
Ok. Zawaliłem, ale wynika to z mojej niewiedzy ze względu na zabezpieczenia nie jest możliwe wykonanie pliku exe/bat przez przeglądarkę.:|

Obecnie próbuje rozkminić jak dodając dwa pola formularza w pliku form.php możliwe jest przekazanie wartości tych pól w momencie zapisywania do funkcji save() zawartej w pliku controller.php

moje
01-09-2010, 21:00
Jakich pól, jakich informacji?

tlewap
01-09-2010, 21:02
Jeśli napiszesz co dokładnie chcesz osiągnąć, wtedy może ktoś będzie mógł pomóc.

mch
01-09-2010, 22:18
Zadanie jest następujace

Mam pole tekstowe, w które wpisuje ścieżkę do folderu np /aaa/bbb/ccc . (niech ścieżka będzie zapisywana w form.sciezka.value)
Następnie po wciśnięciu przycisku save (a więc zapisaniu artykułu) zostanie wykonany skrypt, który wykorzystuje tą ścieżkę (dokładnie chodzi o kopiowanie zawartości /aaa/bbb/ccc/ do /home/ble/).


Jak na razie dla mnie działa coś takiego:
jeżeli w pliku controller.php zmienię

$msg = JText::_('Item successfully saved');
na
$msg = '<form method="get" action="skrypt.php">'

Wówczas zostanie wykonany plik ze "skryptem kopiującym"
Wiem, że podejście jest pewnie straszne (z technicznego punktu widzenia).
Wiem, że komendy mogą być wywoływane za pomocą polecenia shell_exec.
Zastanawiam się jak powinno być to poprawnie zrobione.Dziękuję za wyrozumiałość i proszę o pomoc.

moje
01-09-2010, 22:39
A po co chcesz dodać tą ścieżkę?

trzepiz
01-09-2010, 22:47
Ludzie opanujcie się. Albo niech autor tematu powie wreszcie o co mu chodzi albo temat poleci do kosza.


Sent from my GT-I9000 using Tapatalk

mch
02-09-2010, 00:33
Przepraszam jeżeli ciągle mój problem jest niejasny.

Oto zadanie:
1. Użytkownicy mają na serwerze wspólny folder w którym umieszczają swoje pliki.
2. W trakcie tworzenia artykułu wskazują gdzie znajdują się pliki które chcą przenieść np: /share-area/folder1/folder2 (wpisują to w pole formularza)
3. W trakcie zapisania artykułu pliki z wskazanego folderu są kopiowane do innego katalogu na serwerze o nazwie /tytuł_artykulu/

Wiem, że ze nie jest mozliwe (w prosty sposób) wskazanie folderu, dlatego ścieżkę wprowadzają "z ręki" manualnie (jest to wystarczająco wygodne i starczy dla tego zastosowania)

Dlatego też w pliku form.php stworzyłem dodatkowe pole w formularzu w do którego wprowadzana jest ścieżka.
W trakcie zapisu artykułu zostaje uruchomiony skrypt, który działa zgodnie z zasadą: "COPY *.* FROM form.sciezka.value TO /tytul_artykulu/"

Problem polega na tym, że nie wiem jak przekazać tą zmienną sciezka.form.value do skryptu zdefiniowanego w innym pliku php. Zmienna form.sciezka.value nie musi być zapisywana w bazie danych. Jest ona tylko, jak już napisałem, wykorzystana przez funkcję, która jest wykonana w trakcie zapisu - funkcja save() znajdująca się w pliku controller.php jak domniemam.

Mam nadzieję, że to rozjaśni troszkę bardziej problem przed, którym stoję. Z góry dziękuję za pomoc.

EkleErs
02-09-2010, 01:11
czyli nie wiesz jak pobrac zmienna z formy do funkcja save()?
moze tak

$row->sciezka = JRequest::getCmd('sciezka', '', 'post', 'string', JREQUEST_ALLOWRAW );

mch
02-09-2010, 10:08
Wszystko byloby ladnie, gdyby nie to, ze sciezka nie istnieje w bazie danych. Jest to pole formularza.

EkleErs
02-09-2010, 10:23
Zmienna form.sciezka.value nie musi być zapisywana w bazie danych

$sciezkazformy = JRequest::getVar('sciezka', '', 'post', 'string', JREQUEST_ALLOWRAW ); //gdzie sciezka to np <input type="text" name="sciezka" />

mch
02-09-2010, 11:29
Dziékuje dziala.

Jeszcze tylko zostal mi do napisania skrypt, ktory ma byc wykonany przez serwer (unix) i bedzie dzialac. Dziekuje za pomoc