Filemanager – napojení na Nette

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Klainer
Člen | 42
+
0
-

Dobrý den,
objevil jsem jeden pěkný filemanager a chtěl bych si ho napojit na nějakou akci kontroleru v nette.
Konkrétně se jedná o tohle: http://www.responsivefilemanager.com/demo.php
Je to knihovna php + jquery…

Nakopíroval jsem si tuto knihovnu do adresáře libs a manažer pak spustím přes absolutní cestu url: http://localhost:8080/…r/dialog.php?…

Vše je funkční, jen by to chtělo nějak více zapasovat do NETTE, jde mi hlavně o to aby k tomuto manageru byl přístup pouze z administrace. Zatím nemám moc praxe s nette, takže nejsem si jistý jak to nějak elegantně a bezpečně udělat. Napadlo mě udělat nějakou akci kontrolleru která by mě vždy na tuto url přesměrovala.

Cílem je aby se mi manager pouštěl někde v modálním okně tak jak je to na demu, pouze pokud ho otevřu z ADMIN modulu …

Děkuji za Vaše rady a názory!

Klainer
Člen | 42
+
0
-

Tak jsem si našel řešení, ale potřeboval bych trošku pomoct.
Jak jsem již psal složku s komponentou pro upload napsanou v PHP mám umístěnou v libs..

Napadlo mě že bych si do toho php souboru který obstarává funkci této komponenty načetl soubory frameworku. To se povedlo zapnul jsem si tam i laděnku. Nicméně asi dělám něco špatně, protože mi to v laděnce ukazuje že nejsem přihlášen, pokud přijdu na tu danou absolutní url s komponentou.

Pokud jsem ale normálně v sekci admin, tak zalogovaný, jsem, i v laděnce se mi to ukáže. Takže jedinná věc co bych potřeboval vyřešit je aby se mi informace o přihlášenem uživateli objevovali i v té komponentě s uploadem souborů.

Jak tedy správně načíst NETTE do scriptu abych měl zachované všechny informace i o přihlášení uživatelů ?

Děkuji moc za radu !

Kod je zde:

include ('../nette/nette/Nette/loader.php');
use	Nette\Mail\Message;
use	Nette\Forms\Form;
use Nette\Security\AuthenticationException;
use Nette\Security as NS;
use Nette\Http\Session;
use Nette\Security\User;


$configurator = new Nette\Config\Configurator;
$configurator->setTempDirectory(__DIR__ . '/../../temp');
$configurator->setDebugMode(); // = TRUE
$configurator->enableDebugger(__DIR__ . "/../../log");



$container = $configurator->createContainer();

$user = $container->user;

if( $user->isLoggedIn() == false )
{
	//redirect('http://localhost:8080/pcms/admin/');
}

// vytvoření formuláře
$form = new Form;

function redirect($url, $statusCode = 303)
{
   header('Location: ' . $url, true, $statusCode);
   die();
}

include('config/config.php');

$_SESSION["verify"]= "RESPONSIVEfilemanager";

if(isset($_POST['submit'])){

include('upload.php');

}else{

include('include/utils.php');



if (isset($_GET['fldr'])
    && !empty($_GET['fldr'])
    && strpos($_GET['fldr'],'../')===FALSE
    && strpos($_GET['fldr'],'./')===FALSE)
    $subdir = urldecode(trim($_GET['fldr'],"/") ."/");


......
enumag
Člen | 2118
+
0
-

@Klainer: Možná vadí že něco děláš s $_SESSION dříve než se session nastartuje. Zkus přidat $container->getByType('Nette\Http\Session')->start();. Asi hned za $container = $configurator->createContainer();.

Klainer
Člen | 42
+
0
-

Děkuji, bohužel to nemělo žádný efekt. Stále jsem v adminu zalogován, ale v komponentě ne..
Nakonec vyřešeno takhle:

require  '/../autoload.php';

//include ('../nette/nette/Nette/loader.php');
use	Nette\Mail\Message;
use	Nette\Forms\Form;
use Nette\Security\AuthenticationException;
use Nette\Security as NS;
use Nette\Http\Session;
use Nette\Security\User;


$configurator = new Nette\Config\Configurator;
$configurator->enableDebugger(__DIR__ . "/../../log");
$configurator->setTempDirectory(__DIR__ . '/../../temp');
$configurator->setDebugMode(); // = TRUE


$configurator->createRobotLoader()
	->addDirectory(__DIR__ . '/../DoctrineExtensions')
	->addDirectory(__DIR__ . "/../../app")
	->register();

\Nella\Console\Config\Extension::register($configurator);
\Nella\Doctrine\Config\Extension::register($configurator);
\Nella\Doctrine\Config\MigrationsExtension::register($configurator);

$configurator->addConfig(__DIR__ . '/../../app/config/config.neon');

$container = $configurator->createContainer();
$container->getByType('Nette\Http\Session')->start();
// $container->session->start();
//$container->session->start();

Editoval Klainer (26. 11. 2013 20:18)

bazo
Člen | 620
+
0
-

Klainer napsal(a):

Tak jsem si našel řešení, ale potřeboval bych trošku pomoct.
Jak jsem již psal složku s komponentou pro upload napsanou v PHP mám umístěnou v libs..

Napadlo mě že bych si do toho php souboru který obstarává funkci této komponenty načetl soubory frameworku. To se povedlo zapnul jsem si tam i laděnku. Nicméně asi dělám něco špatně, protože mi to v laděnce ukazuje že nejsem přihlášen, pokud přijdu na tu danou absolutní url s komponentou.

co keby si to spravil naopak? netahal nette do komponenty, ale prehodil by si funkcie toho php skriptu do nette?

vysledkom bude o hodne menej problemov

Klainer
Člen | 42
+
0
-

Mno to si nemyslím. Pokud se koukneš na tu komponentu, tak přepsat ji do NETTE by trošku trvalo, zatímco tady stačí správně inicializovat NETTE, a frčí to jak hodinky…

Můžu taky knihovnu průběžně aktualizovat vyjde li nová verze a podobně..

bazo napsal(a):

Klainer napsal(a):

Tak jsem si našel řešení, ale potřeboval bych trošku pomoct.
Jak jsem již psal složku s komponentou pro upload napsanou v PHP mám umístěnou v libs..

Napadlo mě že bych si do toho php souboru který obstarává funkci této komponenty načetl soubory frameworku. To se povedlo zapnul jsem si tam i laděnku. Nicméně asi dělám něco špatně, protože mi to v laděnce ukazuje že nejsem přihlášen, pokud přijdu na tu danou absolutní url s komponentou.

co keby si to spravil naopak? netahal nette do komponenty, ale prehodil by si funkcie toho php skriptu do nette?

vysledkom bude o hodne menej problemov