Initial commit

This commit is contained in:
2021-03-23 13:54:38 +01:00
commit 82b142ff95
16941 changed files with 2617212 additions and 0 deletions

View File

@@ -0,0 +1,5 @@
# 2.3.0
- Add the possibility to choose the text areas where the module editor will be shown
- The available text areas are description, summary and conclusion in the updating pages of brands, products, categories, folder and contents
- The default configuration activates the module for all the descriptions

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8" ?>
<config xmlns="http://thelia.net/schema/dic/config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://thelia.net/schema/dic/config http://thelia.net/schema/dic/config/thelia-1.0.xsd">
<services>
<service id="smarty.plugin.tinymce_lang" class="Tinymce\Smarty\TinyMCELanguage">
<tag name="thelia.parser.register_plugin"/>
<argument type="service" id="request"/>
</service>
</services>
<hooks>
<hook id="tinymce.hook" class="Tinymce\Hook\HookManager">
<tag name="hook.event_listener" event="module.configuration" type="back" templates="render:module_configuration.html" />
<tag name="hook.event_listener" event="wysiwyg.js" type="back" method="onJsWysiwyg" />
</hook>
</hooks>
<forms>
<form name="tinymce.configure" class="Tinymce\Form\ConfigurationForm" />
</forms>
</config>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<module>
<fullnamespace>Tinymce\Tinymce</fullnamespace>
<descriptive locale="en_US">
<title>TinyMCE WYSIWYG editor</title>
</descriptive>
<descriptive locale="fr_FR">
<title>Editeur visuel TinyMCE</title>
</descriptive>
<version>2.3.5</version>
<author>
<name>Manuel Raynaud</name>
<email>manu@raynaud.io</email>
</author>
<type>classic</type>
<thelia>2.2.0</thelia>
<stability>alpha</stability>
</module>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<routes xmlns="http://symfony.com/schema/routing"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/routing http://symfony.com/schema/routing/routing-1.0.xsd">
<route id="tinymce.configure" path="/admin/tinymce/configure" methods="post">
<default key="_controller">Tinymce\Controller\ConfigureController::configure</default>
</route>
</routes>

View File

@@ -0,0 +1,128 @@
<?php
/*************************************************************************************/
/* */
/* Thelia */
/* */
/* Copyright (c) OpenStudio */
/* email : info@thelia.net */
/* web : http://www.thelia.net */
/* */
/* This program is free software; you can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 3 of the License */
/* */
/* This program is distributed in the hope that it will be useful, */
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
/* GNU General Public License for more details. */
/* */
/* You should have received a copy of the GNU General Public License */
/* along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* */
/*************************************************************************************/
namespace Tinymce\Controller;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Thelia\Controller\Admin\BaseAdminController;
use Thelia\Core\Security\AccessManager;
use Thelia\Core\Security\Resource\AdminResources;
use Thelia\Exception\TheliaProcessException;
use Thelia\Form\Exception\FormValidationException;
use Thelia\Tools\URL;
use Tinymce\Form\ConfigurationForm;
use Tinymce\Tinymce;
/**
* Class SetTransferConfig
* @package WireTransfer\Controller
* @author Thelia <info@thelia.net>
*/
class ConfigureController extends BaseAdminController
{
public function configure()
{
if (null !== $response = $this->checkAuth(AdminResources::MODULE, 'Tinymce', AccessManager::UPDATE)) {
return $response;
}
// Initialize the potential exception
$ex = null;
// Create the Form from the request
$configurationForm = new ConfigurationForm($this->getRequest());
try {
// Check the form against constraints violations
$form = $this->validateForm($configurationForm, "POST");
// Get the form field values
$data = $form->getData();
Tinymce::setConfigValue('product_summary', $data['product_summary']);
Tinymce::setConfigValue('product_conclusion', $data['product_conclusion']);
Tinymce::setConfigValue('content_summary', $data['content_summary']);
Tinymce::setConfigValue('content_conclusion', $data['content_conclusion']);
Tinymce::setConfigValue('category_summary', $data['category_summary']);
Tinymce::setConfigValue('category_conclusion', $data['category_conclusion']);
Tinymce::setConfigValue('folder_summary', $data['folder_summary']);
Tinymce::setConfigValue('folder_conclusion', $data['folder_conclusion']);
Tinymce::setConfigValue('brand_summary', $data['brand_summary']);
Tinymce::setConfigValue('brand_conclusion', $data['brand_conclusion']);
Tinymce::setConfigValue('show_menu_bar', $data['show_menu_bar']);
Tinymce::setConfigValue('force_pasting_as_text', $data['force_pasting_as_text']);
Tinymce::setConfigValue('editor_height', $data['editor_height']);
Tinymce::setConfigValue('custom_css', $data['custom_css']);
// Save Custom CSS in default assets
$customCss = __DIR__ .DS.'..'.DS.'templates'.DS.'backOffice'.DS.'default'.DS.'assets'.DS.'css'.DS.'custom-css.less';
if (false === file_put_contents($customCss, $data['custom_css'])) {
throw new TheliaProcessException(
$this->getTranslator()->trans(
"Failed to update custom CSS file \"%file\". Please check this file or parent folder write permissions.",
[ '%file' => $customCss ]
)
);
}
// Log configuration modification
$this->adminLogAppend(
"tinymce.configuration.message",
AccessManager::UPDATE,
sprintf("Tinymce configuration updated")
);
// Everything is OK.
return new RedirectResponse(URL::getInstance()->absoluteUrl('/admin/module/Tinymce'));
} catch (FormValidationException $ex) {
// Form cannot be validated. Create the error message using
// the BaseAdminController helper method.
$error_msg = $this->createStandardFormValidationErrorMessage($ex);
}
catch (\Exception $ex) {
// Any other error
$error_msg = $ex->getMessage();
}
// At this point, the form has errors, and should be redisplayed. We don not redirect,
// just redisplay the same template.
// Setup the Form error context, to make error information available in the template.
$this->setupFormErrorContext(
$this->getTranslator()->trans("Tinymce configuration", [], Tinymce::MODULE_DOMAIN),
$error_msg,
$configurationForm,
$ex
);
// Do not redirect at this point, or the error context will be lost.
// Just redisplay the current template.
return $this->render('module-configure', array('module_code' => 'Tinymce'));
}
}

View File

@@ -0,0 +1,161 @@
<?php
/*************************************************************************************/
/* */
/* Thelia */
/* */
/* Copyright (c) OpenStudio */
/* email : info@thelia.net */
/* web : http://www.thelia.net */
/* */
/* This program is free software; you can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 3 of the License */
/* */
/* This program is distributed in the hope that it will be useful, */
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
/* GNU General Public License for more details. */
/* */
/* You should have received a copy of the GNU General Public License */
/* along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* */
/*************************************************************************************/
namespace Tinymce\Form;
use Thelia\Form\BaseForm;
use Tinymce\Tinymce;
/**
* Class ConfigurationForm
* @package Cheque\Form
* @author Thelia <info@thelia.net>
*/
class ConfigurationForm extends BaseForm
{
protected function buildForm()
{
$this->formBuilder
->add(
'editor_height',
'integer',
[
'required' => false,
'data' => Tinymce::getConfigValue('editor_height', 0),
'label' => $this->translator->trans('Height of the editor area, in pixels. Enter 0 for default ', [], Tinymce::MODULE_DOMAIN),
]
)
->add(
'show_menu_bar',
'checkbox',
[
'required' => false,
'data' =>intval(Tinymce::getConfigValue('show_menu_bar', 0)) != 0,
'label' => $this->translator->trans('Show the TinyMCE menu bar', [], Tinymce::MODULE_DOMAIN),
]
)
->add(
'force_pasting_as_text',
'checkbox',
[
'required' => false,
'data' => intval(Tinymce::getConfigValue('force_pasting_as_text', 0)) != 0,
'label' => $this->translator->trans('Force pasting as text', [], Tinymce::MODULE_DOMAIN),
'label_attr' => [
'help' => $this->translator->trans('If checked, all pasted data will be converted as plain text, removing tags and styles.', [], Tinymce::MODULE_DOMAIN)
]
]
)
->add(
'set_images_as_responsive',
'checkbox',
[
'required' => false,
'data' => intval(Tinymce::getConfigValue('set_images_as_responsive', 1)) != 0,
'label' => $this->translator->trans('Add responsive class to images', [], Tinymce::MODULE_DOMAIN),
'label_attr' => [
'help' => $this->translator->trans('If checked, the "img-responsive" class is added by default to inserted images', [], Tinymce::MODULE_DOMAIN)
]
]
)
->add(
'custom_css',
'textarea',
[
'required' => false,
'data' => Tinymce::getConfigValue('custom_css', '/* Enter here CSS or LESS code */'),
'label' => $this->translator->trans('Custom CSS available in the editor', [], Tinymce::MODULE_DOMAIN),
'label_attr' => [
'help' => $this->translator->trans('Enter CSS or LESS code. You may also customize the editor.less file in the plugin template directory.', [], Tinymce::MODULE_DOMAIN)
],
'attr' => [
'rows' => 10,
'style' => 'font-family: \'Courier New\', Courier, monospace;'
]
]
)
->add(
'test_zone',
'textarea',
[
'required' => false,
'label' => $this->translator->trans('Sample editor', [], Tinymce::MODULE_DOMAIN),
'label_attr' => [
'help' => $this->translator->trans('This is a sample text editor, to view actual configuration.', [], Tinymce::MODULE_DOMAIN)
]
]
)->add(
'available_text_areas',
'text',
[
'disabled' => true,
'required' => false,
'label_attr' => [],
'data' => Tinymce::getConfigValue('available_text_areas')
]
);
foreach ($this->getFieldsKeys() as $key) {
$this->addConfigField($key);
}
}
public function getFieldsKeys()
{
return array(
'product_summary',
'product_conclusion',
'brand_summary',
'brand_conclusion',
'content_summary',
'content_conclusion',
'folder_summary',
'folder_conclusion',
'category_summary',
'category_conclusion',
);
}
protected function addConfigField($key)
{
$this->formBuilder->add(
$key,
"checkbox",
array(
"label_attr" => [],
"required" => false,
"constraints" => array(),
"data" => intval(Tinymce::getConfigValue($key, 0)) != 0,
)
);
}
/**
* @return string the name of you form. This name must be unique
*/
public function getName()
{
return 'timymce_configuration';
}
}

View File

@@ -0,0 +1,31 @@
<?php
/*************************************************************************************/
/* This file is part of the Thelia package. */
/* */
/* Copyright (c) OpenStudio */
/* email : dev@thelia.net */
/* web : http://www.thelia.net */
/* */
/* For the full copyright and license information, please view the LICENSE.txt */
/* file that was distributed with this source code. */
/*************************************************************************************/
namespace Tinymce\Hook;
use Thelia\Core\Event\Hook\HookRenderEvent;
use Thelia\Core\Hook\BaseHook;
/**
* Class HookManager
*
* @package Tinymce\Hook
* @author Franck Allimant <franck@cqfdev.fr>
*/
class HookManager extends BaseHook
{
public function onJsWysiwyg(HookRenderEvent $event)
{
$content = $this->render("tinymce_init.tpl");
$event->add($content);
}
}

View File

@@ -0,0 +1,5 @@
<?php
return [
'None' => 'Keine Angabe',
];

View File

@@ -0,0 +1,7 @@
<?php
return array(
'File manager' => 'File manager',
'None' => 'None',
'Responsive' => 'Responsive',
);

View File

@@ -0,0 +1,17 @@
<?php
return [
'Brand' => 'Marque',
'Category' => 'Catégorie',
'Conclusion' => 'Conclusion',
'Content' => 'Contenu',
'File manager' => 'Explorateur de fichiers',
'Folder' => 'Dossier',
'List of the text area where the wysiwyg editor will be used' => 'Liste des zones de texte dans lesquelles l\'éditeur wysiwyg sera utilisé',
'None' => 'Aucun',
'Product' => 'Produit',
'Responsive' => 'Responsive',
'Summary' => 'Résumé',
'This is a <strong>critical</strong> data, to update it you have to inform the ids (#timymce_configuration-id-test_zone for example) or the classes (.wysiwyg for example) , <strong>separated with comas</strong>, of the text areas you want to have the wysiwyg editor <strong>directly in the data base</strong>.' => '<strong>Donnée critique</strong>. Pour la modifier vous devez renseigner <strong>directement en base de données</strong> et en les <strong>séparant par des virgules</strong> les id (#id) ou les classes (.classe) des zones de texte pour lesquelles vous voulez utiliser l\'éditeur wysiwyg.',
'TinyMCE configuration' => 'Configuration de TinyMCE',
];

View File

@@ -0,0 +1,7 @@
<?php
return [
'File manager' => 'Dosya Yöneticisi',
'None' => 'Yok',
'Responsive' => 'Duyarlı',
];

View File

@@ -0,0 +1,15 @@
<?php
return array(
'Add responsive class to images' => 'Add responsive class to images',
'Custom CSS available in the editor' => 'Custom CSS available in the editor',
'Enter CSS or LESS code. You may also customize the editor.less file in the plugin template directory.' => 'Enter CSS or LESS code. You may also customize the editor.less file in the plugin template directory.',
'Force pasting as text' => 'Force pasting as text',
'Height of the editor area, in pixels. Enter 0 for default ' => 'Height of the editor area, in pixels. Enter 0 for default ',
'If checked, all pasted data will be converted as plain text, removing tags and styles.' => 'If checked, all pasted data will be converted as plain text, removing tags and styles.',
'If checked, the "img-responsive" class is added by default to inserted images' => 'If checked, the "img-responsive" class is added by default to inserted images',
'Sample editor' => 'Sample editor',
'Show the TinyMCE menu bar' => 'Show the TinyMCE menu bar',
'This is a sample text editor, to view actual configuration.' => 'This is a sample text editor, to view actual configuration.',
'Tinymce configuration' => 'Tinymce configuration',
);

View File

@@ -0,0 +1,15 @@
<?php
return [
'Add responsive class to images' => 'Rendre les images responsives',
'Custom CSS available in the editor' => 'CSS personnalisé à proposer dans l\'éditeur',
'Enter CSS or LESS code. You may also customize the editor.less file in the plugin template directory.' => 'Indiquez du code CSS ou LESS. Vous pouvez aussi modifier le fichier "editor.less" dans les assets du plugin',
'Force pasting as text' => 'Forcer le collage en mode texte',
'Height of the editor area, in pixels. Enter 0 for default ' => 'Hauteur de la zone d\'édition (en pixels, 0 pour la valeur par défaut)',
'If checked, all pasted data will be converted as plain text, removing tags and styles.' => 'Si cette case est cochée tous les styles et balises HTML seront supprimées lorsque du texte sera collé.',
'If checked, the "img-responsive" class is added by default to inserted images' => 'Si cette case est cochée, la classe \'img-responsive\' sera ajoutée aux images.',
'Sample editor' => 'Editeur de test',
'Show the TinyMCE menu bar' => 'Afficher la barre de menu TinyMCE',
'This is a sample text editor, to view actual configuration.' => 'Il s\'agit d\'une zone de test de votre configuration',
'Tinymce configuration' => 'Configuration de TinyMCE',
];

View File

@@ -0,0 +1,6 @@
<?php
return [
'Enter CSS or LESS code. You may also customize the editor.less file in the plugin template directory.' => 'Inserire il codice CSS o LESS. Si può anche personalizzare il file editor.less nella directory plugin del template.',
'Tinymce configuration' => 'Configurazione di TinyMCE',
];

View File

@@ -0,0 +1,15 @@
<?php
return [
'Add responsive class to images' => 'Resimlere duyarlı sınıf ekleme',
'Custom CSS available in the editor' => 'Özel CSS Düzenleyicisi içinde kullanılabilir',
'Enter CSS or LESS code. You may also customize the editor.less file in the plugin template directory.' => 'CSS veya daha az kod girin. Ayrıca eklenti şablonu dizinindeki editor.less dosyasını özelleştirebilir.',
'Force pasting as text' => 'Kuvvet yapıştırma metin olarak',
'Height of the editor area, in pixels. Enter 0 for default ' => 'Editör alanının piksel cinsinden yüksekliği. Varsayılan için 0 girin ',
'If checked, all pasted data will be converted as plain text, removing tags and styles.' => 'İşaretli değilse, tüm yapıştırılan veri etiketleri ve stilleri kaldırma düz metin olarak dönüştürülür.',
'If checked, the "img-responsive" class is added by default to inserted images' => 'İşaretli değilse, "img-duyarlı" sınıf varsayılan olarak eklenen resimlere eklenir',
'Sample editor' => 'Örnek Düzenleyicisi',
'Show the TinyMCE menu bar' => 'TinyMCE menü çubuğunu göster',
'This is a sample text editor, to view actual configuration.' => 'Bu gerçek yapılandırmasını görüntülemek için bir örnek metin editörü olan.',
'Tinymce configuration' => 'TinyMCE yapılandırma',
];

View File

@@ -0,0 +1,165 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.

View File

@@ -0,0 +1,295 @@
<?php
include('config/config.php');
if($_SESSION['RF']["verify"] != "RESPONSIVEfilemanager") die('Access Denied!');
include('include/utils.php');
if (isset($_SESSION['RF']['language_file']) && file_exists($_SESSION['RF']['language_file'])){
include($_SESSION['RF']['language_file']);
}
else {
die('Language file is missing!');
}
if(isset($_GET['action']))
{
switch($_GET['action'])
{
case 'view':
if(isset($_GET['type'])) {
$_SESSION['RF']["view_type"] = $_GET['type'];
}
else {
die('view type number missing');
}
break;
case 'sort':
if(isset($_GET['sort_by'])) {
$_SESSION['RF']["sort_by"] = $_GET['sort_by'];
}
if(isset($_GET['descending'])) {
$_SESSION['RF']["descending"] = $_GET['descending'] === "TRUE";
}
break;
case 'image_size': // not used
$pos = strpos($_POST['path'],$upload_dir);
if ($pos !== FALSE)
{
$info=getimagesize(substr_replace($_POST['path'],$current_path,$pos,strlen($upload_dir)));
echo json_encode($info);
}
break;
case 'save_img':
$info=pathinfo($_POST['name']);
if (strpos($_POST['path'], '/') === 0
|| strpos($_POST['path'], '../') !== FALSE
|| strpos($_POST['path'], './') === 0
|| strpos($_POST['url'], 'http://featherfiles.aviary.com/') !== 0
|| $_POST['name'] != fix_filename($_POST['name'], $transliteration)
|| !in_array(strtolower($info['extension']), array('jpg','jpeg','png')))
{
die('wrong data');
}
$image_data = get_file_by_url($_POST['url']);
if ($image_data === FALSE)
{
die(lang_Aviary_No_Save);
}
file_put_contents($current_path.$_POST['path'].$_POST['name'],$image_data);
create_img_gd($current_path.$_POST['path'].$_POST['name'], $thumbs_base_path.$_POST['path'].$_POST['name'], 122, 91);
// TODO something with this function cause its blowing my mind
new_thumbnails_creation($current_path.$_POST['path'],$current_path.$_POST['path'].$_POST['name'],$_POST['name'],$current_path,$relative_image_creation,$relative_path_from_current_pos,$relative_image_creation_name_to_prepend,$relative_image_creation_name_to_append,$relative_image_creation_width,$relative_image_creation_height,$fixed_image_creation,$fixed_path_from_filemanager,$fixed_image_creation_name_to_prepend,$fixed_image_creation_to_append,$fixed_image_creation_width,$fixed_image_creation_height);
break;
case 'extract':
if(strpos($_POST['path'],'/')===0 || strpos($_POST['path'],'../')!==FALSE || strpos($_POST['path'],'./')===0) {
die('wrong path');
}
$path = $current_path.$_POST['path'];
$info = pathinfo($path);
$base_folder = $current_path.fix_dirname($_POST['path'])."/";
switch($info['extension'])
{
case "zip":
$zip = new ZipArchive;
if ($zip->open($path) === TRUE) {
//make all the folders
for($i = 0; $i < $zip->numFiles; $i++)
{
$OnlyFileName = $zip->getNameIndex($i);
$FullFileName = $zip->statIndex($i);
if (substr($FullFileName['name'], -1, 1) =="/")
{
create_folder($base_folder.$FullFileName['name']);
}
}
//unzip into the folders
for($i = 0; $i < $zip->numFiles; $i++)
{
$OnlyFileName = $zip->getNameIndex($i);
$FullFileName = $zip->statIndex($i);
if (!(substr($FullFileName['name'], -1, 1) =="/"))
{
$fileinfo = pathinfo($OnlyFileName);
if(in_array(strtolower($fileinfo['extension']),$ext))
{
copy('zip://'. $path .'#'. $OnlyFileName , $base_folder.$FullFileName['name'] );
}
}
}
$zip->close();
}
else {
die(lang_Zip_No_Extract);
}
break;
case "gz":
$p = new PharData($path);
$p->decompress(); // creates files.tar
break;
case "tar":
// unarchive from the tar
$phar = new PharData($path);
$phar->decompressFiles();
$files = array();
check_files_extensions_on_phar( $phar, $files, '', $ext );
$phar->extractTo( $current_path.fix_dirname( $_POST['path'] )."/", $files, TRUE );
break;
default:
die(lang_Zip_Invalid);
}
break;
case 'media_preview':
$preview_file = $_GET["file"];
$info = pathinfo($preview_file);
?>
<div id="jp_container_1" class="jp-video " style="margin:0 auto;">
<div class="jp-type-single">
<div id="jquery_jplayer_1" class="jp-jplayer"></div>
<div class="jp-gui">
<div class="jp-video-play">
<a href="javascript:;" class="jp-video-play-icon" tabindex="1">play</a>
</div>
<div class="jp-interface">
<div class="jp-progress">
<div class="jp-seek-bar">
<div class="jp-play-bar"></div>
</div>
</div>
<div class="jp-current-time"></div>
<div class="jp-duration"></div>
<div class="jp-controls-holder">
<ul class="jp-controls">
<li><a href="javascript:;" class="jp-play" tabindex="1">play</a></li>
<li><a href="javascript:;" class="jp-pause" tabindex="1">pause</a></li>
<li><a href="javascript:;" class="jp-stop" tabindex="1">stop</a></li>
<li><a href="javascript:;" class="jp-mute" tabindex="1" title="mute">mute</a></li>
<li><a href="javascript:;" class="jp-unmute" tabindex="1" title="unmute">unmute</a></li>
<li><a href="javascript:;" class="jp-volume-max" tabindex="1" title="max volume">max volume</a></li>
</ul>
<div class="jp-volume-bar">
<div class="jp-volume-bar-value"></div>
</div>
<ul class="jp-toggles">
<li><a href="javascript:;" class="jp-full-screen" tabindex="1" title="full screen">full screen</a></li>
<li><a href="javascript:;" class="jp-restore-screen" tabindex="1" title="restore screen">restore screen</a></li>
<li><a href="javascript:;" class="jp-repeat" tabindex="1" title="repeat">repeat</a></li>
<li><a href="javascript:;" class="jp-repeat-off" tabindex="1" title="repeat off">repeat off</a></li>
</ul>
</div>
<div class="jp-title" style="display:none;">
<ul>
<li></li>
</ul>
</div>
</div>
</div>
<div class="jp-no-solution">
<span>Update Required</span>
To play the media you will need to either update your browser to a recent version or update your <a href="http://get.adobe.com/flashplayer/" target="_blank">Flash plugin</a>.
</div>
</div>
</div>
<?php
if(in_array(strtolower($info['extension']), $ext_music)) {
?>
<script type="text/javascript">
$(document).ready(function(){
$("#jquery_jplayer_1").jPlayer({
ready: function () {
$(this).jPlayer("setMedia", {
title:"<?php $_GET['title']; ?>",
mp3: "<?php echo $preview_file; ?>",
m4a: "<?php echo $preview_file; ?>",
oga: "<?php echo $preview_file; ?>",
wav: "<?php echo $preview_file; ?>"
});
},
swfPath: "js",
solution:"html,flash",
supplied: "mp3, m4a, midi, mid, oga,webma, ogg, wav",
smoothPlayBar: true,
keyEnabled: false
});
});
</script>
<?php
} elseif(in_array(strtolower($info['extension']), $ext_video)) {
?>
<script type="text/javascript">
$(document).ready(function(){
$("#jquery_jplayer_1").jPlayer({
ready: function () {
$(this).jPlayer("setMedia", {
title:"<?php $_GET['title']; ?>",
m4v: "<?php echo $preview_file; ?>",
ogv: "<?php echo $preview_file; ?>"
});
},
swfPath: "js",
solution:"html,flash",
supplied: "mp4, m4v, ogv, flv, webmv, webm",
smoothPlayBar: true,
keyEnabled: false
});
});
</script>
<?php
}
break;
case 'copy_cut':
if ($_POST['sub_action'] != 'copy' && $_POST['sub_action'] != 'cut') {
die('wrong sub-action');
}
if (trim($_POST['path']) == '' || trim($_POST['path_thumb']) == '') {
die('no path');
}
$path = $current_path.$_POST['path'];
if (is_dir($path))
{
// can't copy/cut dirs
if ($copy_cut_dirs === FALSE){
die(sprintf(lang_Copy_Cut_Not_Allowed, ($_POST['sub_action'] == 'copy' ? lcfirst(lang_Copy) : lcfirst(lang_Cut)), lang_Folders));
}
// size over limit
if ($copy_cut_max_size !== FALSE && is_int($copy_cut_max_size)){
if (($copy_cut_max_size * 1024 * 1024) < foldersize($path)){
die(sprintf(lang_Copy_Cut_Size_Limit, ($_POST['sub_action'] == 'copy' ? lcfirst(lang_Copy) : lcfirst(lang_Cut)), $copy_cut_max_size));
}
}
// file count over limit
if ($copy_cut_max_count !== FALSE && is_int($copy_cut_max_count)){
if ($copy_cut_max_count < filescount($path)){
die(sprintf(lang_Copy_Cut_Count_Limit, ($_POST['sub_action'] == 'copy' ? lcfirst(lang_Copy) : lcfirst(lang_Cut)), $copy_cut_max_count));
}
}
}
else {
// can't copy/cut files
if ($copy_cut_files === FALSE){
die(sprintf(lang_Copy_Cut_Not_Allowed, ($_POST['sub_action'] == 'copy' ? lcfirst(lang_Copy) : lcfirst(lang_Cut)), lang_Files));
}
}
$_SESSION['RF']['clipboard']['path'] = $_POST['path'];
$_SESSION['RF']['clipboard']['path_thumb'] = $_POST['path_thumb'];
$_SESSION['RF']['clipboard_action'] = $_POST['sub_action'];
break;
case 'clear_clipboard':
$_SESSION['RF']['clipboard'] = NULL;
$_SESSION['RF']['clipboard_action'] = NULL;
break;
default: die('no action passed');
}
}
else
{
die('no action passed');
}
?>

View File

@@ -0,0 +1 @@
Deny from all

View File

@@ -0,0 +1,349 @@
<?php
use Thelia\Core\HttpFoundation\Request;
use Thelia\Core\Thelia;
use Thelia\Model\ConfigQuery;
use Symfony\Component\Filesystem\Filesystem;
function generateFolder($env)
{
$webMediaPath = THELIA_WEB_DIR.'media';
$webMediaEnvPath = null;
if ($env !== "prod") {
//Remove separtion between dev and prod in particular environment
$env = str_replace('_dev', '', $env);
$webMediaEnvPath = $webMediaPath.DS.$env;
}
$fileSystem = new Filesystem();
// Create the media directory in the web root , if required
if (null !== $webMediaEnvPath) {
if (false === $fileSystem->exists($webMediaEnvPath)) {
$fileSystem->mkdir($webMediaEnvPath.DS.'upload');
$fileSystem->mkdir($webMediaEnvPath.DS.'thumbs');
}
} else {
if (false === $fileSystem->exists($webMediaPath)) {
$fileSystem->mkdir($webMediaPath.DS.'upload');
$fileSystem->mkdir($webMediaPath.DS.'thumbs');
}
}
}
$env = getenv('THELIA_ENV') ?: 'prod';
if (file_exists(__DIR__.'/../../../../../../../../core/vendor/autoload.php')) {
// Symlinked with std install
require_once __DIR__.'/../../../../../../../../core/vendor/autoload.php';
} elseif (file_exists(__DIR__.'/../../../../core/vendor/autoload.php')) {
// Hard copy with std install
require_once __DIR__.'/../../../../core/vendor/autoload.php';
} elseif (file_exists(__DIR__.'/../../../../../../../../bootstrap.php')) {
// Symlinked with thelia-project
require_once __DIR__.'/../../../../../../../../bootstrap.php';
} elseif (file_exists(__DIR__.'/../../../../bootstrap.php')) {
// Hard copy with thelia-project
require_once __DIR__.'/../../../../bootstrap.php';
}
/** @var Request $request */
$request = Request::createFromGlobals();
$thelia = new Thelia($env, false);
$thelia->boot();
/** @var \Symfony\Component\DependencyInjection\ContainerInterface $container */
$container = $thelia->getContainer();
$eventDispatcher = $container->get('event_dispatcher');
$container->get('thelia.translator');
$container->get('thelia.url.manager');
$container->set('request', $request);
$container->get('request_stack')->push($request);
$event = new \Thelia\Core\Event\SessionEvent(THELIA_CACHE_DIR.$env, false, $env);
$eventDispatcher->dispatch(\Thelia\Core\TheliaKernelEvents::SESSION, $event);
$session = $event->getSession();
$session->start();
$request->setSession($session);
/** @var \Thelia\Core\Security\SecurityContext $securityContext */
$securityContext = $container->get('thelia.securityContext');
// We just check the current user has the ADMIN role.
$isGranted = $securityContext->isGranted(['ADMIN'], [], [], []);
if (false === $isGranted) {
echo "Sorry, it seems that you're not allowed to use this function. ADMIN role is required.";
exit;
}
//------------------------------------------------------------------------------
// DO NOT COPY THESE VARIABLES IN FOLDERS config.php FILES
//------------------------------------------------------------------------------
//**********************
//Path configuration
//**********************
// In this configuration the media folder is located in the /web directory.
// base url of site (without final /). if you prefer relative urls leave empty.
$base_url = rtrim(ConfigQuery::getConfiguredShopUrl(), '/');
// Argh, url_site is not defined ?!
if (empty($base_url)) {
// A we did not used the router to access this dialog, we cannot use the URL class. Use the good old method.
$base_url = $request->getSchemeAndHttpHost().preg_replace('!/tinymce/filemanager/dialog.php.*$!', '', $_SERVER['REQUEST_URI']);
}
//Check for backward compatibility
if ($env !== "prod") {
// path from base_url to base of upload folder for current env (with start and final /)
$upload_dir = '/media/'.$env.'/upload/';
// path from base_url to base of upload folder for current env (with start and final /)
$thumbs_dir = '/media/'.$env.'/thumbs/';
// path to file manager folder to upload folder for current env (with final /)
$current_path = THELIA_WEB_DIR.'media'.DS.$env.DS.'upload'.DS;
// path to file manager folder to thumbs folder for current env (with final /)
// WARNING: thumbs folder should not be inside the upload folder
$thumbs_base_path = THELIA_WEB_DIR.'media'.DS.$env.DS.'thumbs'.DS;
} else {
// path from base_url to base of upload folder (with start and final /)
$upload_dir = '/media/upload/';
// path from base_url to base of upload folder (with start and final /)
$thumbs_dir = '/media/thumbs/';
// path to file manager folder to upload folder (with final /)
$current_path = THELIA_WEB_DIR.'media'.DS.'upload'.DS;
// path to file manager folder to thumbs folder (with final /)
// WARNING: thumbs folder should not be inside the upload folder
$thumbs_base_path = THELIA_WEB_DIR.'media'.DS.'thumbs'.DS;
}
generateFolder($env);
// path from base_url to filemanager folder (with start and final /)
$filemanager_dir = '/tinymce/filemanager/';
// Set the language to the back-office current language, if it is available
$current_locale = $request->getSession()->getLang()->getLocale();
if (file_exists(__DIR__.DS.'..'.DS.'lang.'.DS.$current_locale.'.php')) {
$default_language = $current_locale;
} else {
$default_language = 'en_EN';
}
// OPTIONAL SECURITY
// if set to true only those will access RF whose url contains the access key(akey) like:
// <input type="button" href="../filemanager/dialog.php?field_id=imgField&lang=en_EN&akey=myPrivateKey" value="Files">
// in tinymce a new parameter added: filemanager_access_key:"myPrivateKey"
// example tinymce config:
// tiny init ...
//
// external_filemanager_path:"../filemanager/",
// filemanager_title:"Filemanager" ,
// filemanager_access_key:"myPrivateKey" ,
// ...
define('USE_ACCESS_KEYS', false); // TRUE or FALSE
// add access keys eg: array('myPrivateKey', 'someoneElseKey');
// keys should only containt (a-z A-Z 0-9 \ . _ -) characters
// if you are integrating lets say to a cms for admins, i recommend making keys randomized something like this:
// $username = 'Admin';
// $salt = 'dsflFWR9u2xQa' (a hard coded string)
// $akey = md5($username.$salt);
// DO NOT use 'key' as access key!
// Keys are CASE SENSITIVE!
$access_keys = array('myPrivateKey', 'someoneElseKey');
//--------------------------------------------------------------------------------------------------------
// YOU CAN COPY AND CHANGE THESE VARIABLES INTO FOLDERS config.php FILES TO CUSTOMIZE EACH FOLDER OPTIONS
//--------------------------------------------------------------------------------------------------------
$MaxSizeUpload = 100; //Mb
// SERVER OVERRIDE
if ((int) (ini_get('post_max_size')) < $MaxSizeUpload) {
$MaxSizeUpload = (int) (ini_get('post_max_size'));
}
// $default_language = "en_EN"; //default language file name
$icon_theme = "ico"; //ico or ico_dark you can cusatomize just putting a folder inside filemanager/img
$show_folder_size = true; //Show or not show folder size in list view feature in filemanager (is possible, if there is a large folder, to greatly increase the calculations)
$show_sorting_bar = true; //Show or not show sorting feature in filemanager
$loading_bar = true; //Show or not show loading bar
$transliteration = false; //active or deactive the transliteration (mean convert all strange characters in A..Za..z0..9 characters)
//*******************************************
//Images limit and resizing configuration
//*******************************************
// set maximum pixel width and/or maximum pixel height for all images
// If you set a maximum width or height, oversized images are converted to those limits. Images smaller than the limit(s) are unaffected
// if you don't need a limit set both to 0
$image_max_width = 0;
$image_max_height = 0;
//Automatic resizing //
// If you set $image_resizing to TRUE the script converts all uploaded images exactly to image_resizing_width x image_resizing_height dimension
// If you set width or height to 0 the script automatically calculates the other dimension
// Is possible that if you upload very big images the script not work to overcome this increase the php configuration of memory and time limit
$image_resizing = false;
$image_resizing_width = 0;
$image_resizing_height = 0;
//******************
// Default layout setting
//
// 0 => boxes
// 1 => detailed list (1 column)
// 2 => columns list (multiple columns depending on the width of the page)
// YOU CAN ALSO PASS THIS PARAMETERS USING SESSION VAR => $_SESSION['RF']["VIEW"]=
//
//******************
$default_view = 0;
//set if the filename is truncated when overflow first row
$ellipsis_title_after_first_row = true;
//*************************
//Permissions configuration
//******************
$delete_files = true;
$create_folders = true;
$delete_folders = true;
$upload_files = true;
$rename_files = true;
$rename_folders = true;
$duplicate_files = true;
$copy_cut_files = true; // for copy/cut files
$copy_cut_dirs = true; // for copy/cut directories
// defines size limit for paste in MB / operation
// set 'FALSE' for no limit
$copy_cut_max_size = 100;
// defines file count limit for paste / operation
// set 'FALSE' for no limit
$copy_cut_max_count = 200;
//IF any of these limits reached, operation won't start and generate warning
//**********************
//Allowed extensions (lowercase insert)
//**********************
$ext_img = array('jpg', 'jpeg', 'png', 'gif', 'bmp', 'tiff', 'svg'); //Images
$ext_file = array(
'doc',
'docx',
'rtf',
'pdf',
'xls',
'xlsx',
'txt',
'csv',
'html',
'xhtml',
'psd',
'sql',
'log',
'fla',
'xml',
'ade',
'adp',
'mdb',
'accdb',
'ppt',
'pptx',
'odt',
'ots',
'ott',
'odb',
'odg',
'otp',
'otg',
'odf',
'ods',
'odp',
'css',
'ai',
); //Files
$ext_video = array('mov', 'mpeg', 'mp4', 'avi', 'mpg', 'wma', "flv", "webm"); //Video
$ext_music = array('mp3', 'm4a', 'ac3', 'aiff', 'mid', 'ogg', 'wav'); //Audio
$ext_misc = array('zip', 'rar', 'gz', 'tar', 'iso', 'dmg'); //Archives
$ext = array_merge($ext_img, $ext_file, $ext_misc, $ext_video, $ext_music); //allowed extensions
/******************
* AVIARY config
*******************/
$aviary_active = false;
$aviary_key = "dvh8qudbp6yx2bnp";
$aviary_secret = "m6xaym5q42rpw433";
$aviary_version = 3;
$aviary_language = 'en';
//The filter and sorter are managed through both javascript and php scripts because if you have a lot of
//file in a folder the javascript script can't sort all or filter all, so the filemanager switch to php script.
//The plugin automatic swich javascript to php when the current folder exceeds the below limit of files number
$file_number_limit_js = 500;
//**********************
// Hidden files and folders
//**********************
// set the names of any folders you want hidden (eg "hidden_folder1", "hidden_folder2" ) Remember all folders with these names will be hidden (you can set any exceptions in config.php files on folders)
$hidden_folders = array();
// set the names of any files you want hidden. Remember these names will be hidden in all folders (eg "this_document.pdf", "that_image.jpg" )
$hidden_files = array('config.php');
/*******************
* JAVA upload
*******************/
$java_upload = true;
$JAVAMaxSizeUpload = 200; //Gb
//************************************
//Thumbnail for external use creation
//************************************
// New image resized creation with fixed path from filemanager folder after uploading (thumbnails in fixed mode)
// If you want create images resized out of upload folder for use with external script you can choose this method,
// You can create also more than one image at a time just simply add a value in the array
// Remember than the image creation respect the folder hierarchy so if you are inside source/test/test1/ the new image will create at
// path_from_filemanager/test/test1/
// PS if there isn't write permission in your destination folder you must set it
$fixed_image_creation = false; //activate or not the creation of one or more image resized with fixed path from filemanager folder
$fixed_path_from_filemanager = array(
'../test/',
'../test1/',
); //fixed path of the image folder from the current position on upload folder
$fixed_image_creation_name_to_prepend = array('', 'test_'); //name to prepend on filename
$fixed_image_creation_to_append = array('_test', ''); //name to appendon filename
$fixed_image_creation_width = array(300, 400); //width of image (you can leave empty if you set height)
$fixed_image_creation_height = array(200, ''); //height of image (you can leave empty if you set width)
// New image resized creation with relative path inside to upload folder after uploading (thumbnails in relative mode)
// With Responsive filemanager you can create automatically resized image inside the upload folder, also more than one at a time
// just simply add a value in the array
// The image creation path is always relative so if i'm inside source/test/test1 and I upload an image, the path start from here
$relative_image_creation = false; //activate or not the creation of one or more image resized with relative path from upload folder
$relative_path_from_current_pos = array(
'thumb/',
'thumb/',
); //relative path of the image folder from the current position on upload folder
$relative_image_creation_name_to_prepend = array('', 'test_'); //name to prepend on filename
$relative_image_creation_name_to_append = array('_test', ''); //name to append on filename
$relative_image_creation_width = array(300, 400); //width of image (you can leave empty if you set height)
$relative_image_creation_height = array(200, ''); //height of image (you can leave empty if you set width)
;

View File

@@ -0,0 +1,6 @@
/*!
* bootstrap-lightbox.css v0.6.0
* Copyright 2013 Jason Butz
* http://www.apache.org/licenses/LICENSE-2.0.txt
*/
.lightbox{position:relative;top:70px;z-index:1050;line-height:0;text-align:center;background-color:transparent;outline:0}.lightbox .hide{display:none}.lightbox .in{display:block}.lightbox-content{display:inline-block;-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.lightbox-content .lightbox-caption{position:absolute;right:12px;bottom:11px;left:11px;padding:2%;font-size:14px;line-height:18px;color:white;text-align:center;text-shadow:0 -1px 0 #000;text-shadow:0 -1px 0 rgba(0,0,0,0.3);background:#000;background:rgba(0,0,0,0.6)}.lightbox-header .close{margin-top:-16px;margin-right:-16px;font-size:2em;color:white;opacity:.8;filter:alpha(opacity=80)}.lightbox-header .close :hover{opacity:.4;filter:alpha(opacity=40)}

View File

@@ -0,0 +1,8 @@
/*!
* Bootstrap Modal
*
* Copyright Jordan Schroter
* Licensed under the Apache License v2.0
* http://www.apache.org/licenses/LICENSE-2.0
*
*/.modal-open{overflow:hidden}.modal-open.page-overflow .page-container,.modal-open.page-overflow .page-container .navbar-fixed-top,.modal-open.page-overflow .page-container .navbar-fixed-bottom,.modal-open.page-overflow .modal-scrollable{overflow-y:scroll}@media (max-width:840px){.modal-open.page-overflow .page-container .navbar-fixed-top,.modal-open.page-overflow .page-container .navbar-fixed-bottom{overflow-y:visible}}.modal-scrollable{position:fixed;top:0;bottom:0;left:0;right:0;overflow:auto}.modal{outline:0;position:absolute;margin-top:0;top:50%;overflow:visible}.modal.fade{top:-100%;-webkit-transition:opacity .3s linear,top .3s ease-out,bottom .3s ease-out,margin-top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out,bottom .3s ease-out,margin-top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out,bottom .3s ease-out,margin-top .3s ease-out;transition:opacity .3s linear,top .3s ease-out,bottom .3s ease-out,margin-top .3s ease-out}.modal.fade.in{top:50%}.modal-body{max-height:none;overflow:visible}.modal.modal-absolute{position:absolute;z-index:950}.modal .loading-mask{position:absolute;top:0;bottom:0;left:0;right:0;background:#fff;border-radius:6px}.modal-backdrop.modal-absolute{position:absolute;z-index:940}.modal-backdrop,.modal-backdrop.fade.in{opacity:.85;filter:alpha(opacity=85);background:#eee}.modal.container{width:940px;margin-left:-470px}.modal-overflow.modal{top:1%}.modal-overflow.modal.fade{top:-100%}.modal-overflow.modal.fade.in{top:1%}.modal-overflow .modal-body{overflow:auto;-webkit-overflow-scrolling:touch}@media (min-width:1200px){.modal.container{width:1170px;margin-left:-585px}}@media (max-width:840px){.modal,.modal.container,.modal.modal-overflow{top:1%;right:1%;left:1%;bottom:auto;width:auto!important;height:auto!important;margin:0!important;padding:0!important}.modal.fade.in,.modal.container.fade.in,.modal.modal-overflow.fade.in{top:1%;bottom:auto}.modal-body,.modal-overflow .modal-body{position:static;margin:0;height:auto!important;max-height:none!important;overflow:visible!important}.modal-footer,.modal-overflow .modal-footer{position:static}}.loading-spinner{position:absolute;top:50%;left:50%;margin:-12px 0 0 -12px}.animated{-webkit-animation-duration:1s;-moz-animation-duration:1s;-o-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;-moz-animation-fill-mode:both;-o-animation-fill-mode:both;animation-fill-mode:both}@-webkit-keyframes shake{0%,100%{-webkit-transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px)}}@-moz-keyframes shake{0%,100%{-moz-transform:translateX(0)}10%,30%,50%,70%,90%{-moz-transform:translateX(-10px)}20%,40%,60%,80%{-moz-transform:translateX(10px)}}@-o-keyframes shake{0%,100%{-o-transform:translateX(0)}10%,30%,50%,70%,90%{-o-transform:translateX(-10px)}20%,40%,60%,80%{-o-transform:translateX(10px)}}@keyframes shake{0%,100%{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}.shake{-webkit-animation-name:shake;-moz-animation-name:shake;-o-animation-name:shake;animation-name:shake}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,410 @@
/* The MIT License */
.dropzone,
.dropzone *,
.dropzone-previews,
.dropzone-previews * {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.dropzone {
position: relative;
border: 1px solid rgba(0,0,0,0.08);
background: rgba(0,0,0,0.02);
padding: 1em;
}
.dropzone.dz-clickable {
cursor: pointer;
}
.dropzone.dz-clickable .dz-message,
.dropzone.dz-clickable .dz-message span {
cursor: pointer;
}
.dropzone.dz-clickable * {
cursor: default;
}
.dropzone .dz-message {
opacity: 1;
-ms-filter: none;
filter: none;
}
.dropzone.dz-drag-hover {
border-color: rgba(0,0,0,0.15);
background: rgba(0,0,0,0.04);
}
.dropzone.dz-started .dz-message {
display: none;
}
.dropzone .dz-preview,
.dropzone-previews .dz-preview {
background: rgba(255,255,255,0.8);
position: relative;
display: inline-block;
margin: 17px;
vertical-align: top;
border: 1px solid #acacac;
padding: 6px 6px 6px 6px;
}
.dropzone .dz-preview.dz-file-preview [data-dz-thumbnail],
.dropzone-previews .dz-preview.dz-file-preview [data-dz-thumbnail] {
display: none;
}
.dropzone .dz-preview .dz-details,
.dropzone-previews .dz-preview .dz-details {
width: 100px;
height: 100px;
position: relative;
background: #ebebeb;
padding: 5px;
margin-bottom: 22px;
}
.dropzone .dz-preview .dz-details .dz-filename,
.dropzone-previews .dz-preview .dz-details .dz-filename {
overflow: hidden;
height: 100%;
}
.dropzone .dz-preview .dz-details img,
.dropzone-previews .dz-preview .dz-details img {
position: absolute;
top: 0;
left: 0;
width: 100px;
height: 100px;
}
.dropzone .dz-preview .dz-details .dz-size,
.dropzone-previews .dz-preview .dz-details .dz-size {
position: absolute;
bottom: -28px;
left: 3px;
height: 28px;
line-height: 28px;
}
.dropzone .dz-preview.dz-error .dz-error-mark,
.dropzone-previews .dz-preview.dz-error .dz-error-mark {
display: block;
}
.dropzone .dz-preview.dz-success .dz-success-mark,
.dropzone-previews .dz-preview.dz-success .dz-success-mark {
display: block;
}
.dropzone .dz-preview:hover .dz-details img,
.dropzone-previews .dz-preview:hover .dz-details img {
display: none;
}
.dropzone .dz-preview .dz-success-mark,
.dropzone-previews .dz-preview .dz-success-mark,
.dropzone .dz-preview .dz-error-mark,
.dropzone-previews .dz-preview .dz-error-mark {
display: none;
position: absolute;
width: 40px;
height: 40px;
font-size: 30px;
text-align: center;
right: -10px;
top: -10px;
}
.dropzone .dz-preview .dz-success-mark,
.dropzone-previews .dz-preview .dz-success-mark {
color: #8cc657;
}
.dropzone .dz-preview .dz-error-mark,
.dropzone-previews .dz-preview .dz-error-mark {
color: #ee162d;
}
.dropzone .dz-preview .dz-progress,
.dropzone-previews .dz-preview .dz-progress {
position: absolute;
top: 100px;
left: 6px;
right: 6px;
height: 6px;
background: #d7d7d7;
display: none;
}
.dropzone .dz-preview .dz-progress .dz-upload,
.dropzone-previews .dz-preview .dz-progress .dz-upload {
position: absolute;
top: 0;
bottom: 0;
left: 0;
width: 0%;
background-color: #8cc657;
}
.dropzone .dz-preview.dz-processing .dz-progress,
.dropzone-previews .dz-preview.dz-processing .dz-progress {
display: block;
}
.dropzone .dz-preview .dz-error-message,
.dropzone-previews .dz-preview .dz-error-message {
display: none;
position: absolute;
top: -5px;
left: -20px;
background: rgba(245,245,245,0.8);
padding: 8px 10px;
color: #800;
min-width: 140px;
max-width: 500px;
z-index: 500;
}
.dropzone .dz-preview:hover.dz-error .dz-error-message,
.dropzone-previews .dz-preview:hover.dz-error .dz-error-message {
display: block;
}
.dropzone {
border: 1px solid rgba(0,0,0,0.03);
min-height: 360px;
-webkit-border-radius: 3px;
border-radius: 3px;
background: rgba(0,0,0,0.03);
padding: 23px;
}
.dropzone .dz-default.dz-message {
opacity: 1;
-ms-filter: none;
filter: none;
-webkit-transition: opacity 0.3s ease-in-out;
-moz-transition: opacity 0.3s ease-in-out;
-o-transition: opacity 0.3s ease-in-out;
-ms-transition: opacity 0.3s ease-in-out;
transition: opacity 0.3s ease-in-out;
/*background-image: url("../img/spritemap.png");*/
background-repeat: no-repeat;
background-position: 0 0;
position: absolute;
width: 428px;
height: 123px;
margin-left: -214px;
margin-top: -61.5px;
top: 50%;
left: 50%;
}
@media all and (-webkit-min-device-pixel-ratio:1.5),(min--moz-device-pixel-ratio:1.5),(-o-min-device-pixel-ratio:1.5/1),(min-device-pixel-ratio:1.5),(min-resolution:138dpi),(min-resolution:1.5dppx) {
.dropzone .dz-default.dz-message {
/*background-image: url("../img/spritemap@2x.png");*/
-webkit-background-size: 428px 406px;
-moz-background-size: 428px 406px;
background-size: 428px 406px;
}
}
.dropzone .dz-default.dz-message span {
display: none;
}
.dropzone.dz-square .dz-default.dz-message {
background-position: 0 -123px;
width: 268px;
margin-left: -134px;
height: 174px;
margin-top: -87px;
}
.dropzone.dz-drag-hover .dz-message {
opacity: 0.15;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=15)";
filter: alpha(opacity=15);
}
.dropzone.dz-started .dz-message {
display: block;
opacity: 0;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
filter: alpha(opacity=0);
}
.dropzone .dz-preview,
.dropzone-previews .dz-preview {
-webkit-box-shadow: 1px 1px 4px rgba(0,0,0,0.16);
box-shadow: 1px 1px 4px rgba(0,0,0,0.16);
font-size: 14px;
}
.dropzone .dz-preview.dz-image-preview:hover .dz-details img,
.dropzone-previews .dz-preview.dz-image-preview:hover .dz-details img {
display: block;
opacity: 0.1;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=10)";
filter: alpha(opacity=10);
}
.dropzone .dz-preview.dz-success .dz-success-mark,
.dropzone-previews .dz-preview.dz-success .dz-success-mark {
opacity: 1;
-ms-filter: none;
filter: none;
}
.dropzone .dz-preview.dz-error .dz-error-mark,
.dropzone-previews .dz-preview.dz-error .dz-error-mark {
opacity: 1;
-ms-filter: none;
filter: none;
}
.dropzone .dz-preview.dz-error .dz-progress .dz-upload,
.dropzone-previews .dz-preview.dz-error .dz-progress .dz-upload {
background: #ee1e2d;
}
.dropzone .dz-preview .dz-error-mark,
.dropzone-previews .dz-preview .dz-error-mark,
.dropzone .dz-preview .dz-success-mark,
.dropzone-previews .dz-preview .dz-success-mark {
display: block;
opacity: 0;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
filter: alpha(opacity=0);
-webkit-transition: opacity 0.4s ease-in-out;
-moz-transition: opacity 0.4s ease-in-out;
-o-transition: opacity 0.4s ease-in-out;
-ms-transition: opacity 0.4s ease-in-out;
transition: opacity 0.4s ease-in-out;
/*background-image: url("../img/spritemap.png");*/
background-repeat: no-repeat;
}
@media all and (-webkit-min-device-pixel-ratio:1.5),(min--moz-device-pixel-ratio:1.5),(-o-min-device-pixel-ratio:1.5/1),(min-device-pixel-ratio:1.5),(min-resolution:138dpi),(min-resolution:1.5dppx) {
.dropzone .dz-preview .dz-error-mark,
.dropzone-previews .dz-preview .dz-error-mark,
.dropzone .dz-preview .dz-success-mark,
.dropzone-previews .dz-preview .dz-success-mark {
/*background-image: url("../img/spritemap@2x.png");*/
-webkit-background-size: 428px 406px;
-moz-background-size: 428px 406px;
background-size: 428px 406px;
}
}
.dropzone .dz-preview .dz-error-mark span,
.dropzone-previews .dz-preview .dz-error-mark span,
.dropzone .dz-preview .dz-success-mark span,
.dropzone-previews .dz-preview .dz-success-mark span {
display: none;
}
.dropzone .dz-preview .dz-error-mark,
.dropzone-previews .dz-preview .dz-error-mark {
background-position: -268px -123px;
}
.dropzone .dz-preview .dz-success-mark,
.dropzone-previews .dz-preview .dz-success-mark {
background-position: -268px -163px;
}
.dropzone .dz-preview .dz-progress .dz-upload,
.dropzone-previews .dz-preview .dz-progress .dz-upload {
-webkit-animation: loading 0.4s linear infinite;
-moz-animation: loading 0.4s linear infinite;
-o-animation: loading 0.4s linear infinite;
-ms-animation: loading 0.4s linear infinite;
animation: loading 0.4s linear infinite;
-webkit-transition: width 0.3s ease-in-out;
-moz-transition: width 0.3s ease-in-out;
-o-transition: width 0.3s ease-in-out;
-ms-transition: width 0.3s ease-in-out;
transition: width 0.3s ease-in-out;
-webkit-border-radius: 2px;
border-radius: 2px;
position: absolute;
top: 0;
left: 0;
width: 0%;
height: 100%;
/*background-image: url("../img/spritemap.png");*/
background-repeat: repeat-x;
background-position: 0px -400px;
}
@media all and (-webkit-min-device-pixel-ratio:1.5),(min--moz-device-pixel-ratio:1.5),(-o-min-device-pixel-ratio:1.5/1),(min-device-pixel-ratio:1.5),(min-resolution:138dpi),(min-resolution:1.5dppx) {
.dropzone .dz-preview .dz-progress .dz-upload,
.dropzone-previews .dz-preview .dz-progress .dz-upload {
/*background-image: url("../img/spritemap@2x.png");*/
-webkit-background-size: 428px 406px;
-moz-background-size: 428px 406px;
background-size: 428px 406px;
}
}
.dropzone .dz-preview.dz-success .dz-progress,
.dropzone-previews .dz-preview.dz-success .dz-progress {
display: block;
opacity: 0;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
filter: alpha(opacity=0);
-webkit-transition: opacity 0.4s ease-in-out;
-moz-transition: opacity 0.4s ease-in-out;
-o-transition: opacity 0.4s ease-in-out;
-ms-transition: opacity 0.4s ease-in-out;
transition: opacity 0.4s ease-in-out;
}
.dropzone .dz-preview .dz-error-message,
.dropzone-previews .dz-preview .dz-error-message {
display: block;
opacity: 0;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
filter: alpha(opacity=0);
-webkit-transition: opacity 0.3s ease-in-out;
-moz-transition: opacity 0.3s ease-in-out;
-o-transition: opacity 0.3s ease-in-out;
-ms-transition: opacity 0.3s ease-in-out;
transition: opacity 0.3s ease-in-out;
}
.dropzone .dz-preview:hover.dz-error .dz-error-message,
.dropzone-previews .dz-preview:hover.dz-error .dz-error-message {
opacity: 1;
-ms-filter: none;
filter: none;
}
.dropzone a.dz-remove,
.dropzone-previews a.dz-remove {
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fafafa), color-stop(1, #eee));
background-image: -webkit-linear-gradient(top, #fafafa 0, #eee 100%);
background-image: -moz-linear-gradient(top, #fafafa 0, #eee 100%);
background-image: -o-linear-gradient(top, #fafafa 0, #eee 100%);
background-image: -ms-linear-gradient(top, #fafafa 0, #eee 100%);
background-image: linear-gradient(top, #fafafa 0, #eee 100%);
-webkit-border-radius: 2px;
border-radius: 2px;
border: 1px solid #eee;
text-decoration: none;
display: block;
padding: 4px 5px;
text-align: center;
color: #aaa;
margin-top: 26px;
}
.dropzone a.dz-remove:hover,
.dropzone-previews a.dz-remove:hover {
color: #666;
}
@-moz-keyframes loading {
0% {
background-position: 0 -400px;
}
100% {
background-position: -7px -400px;
}
}
@-webkit-keyframes loading {
0% {
background-position: 0 -400px;
}
100% {
background-position: -7px -400px;
}
}
@-o-keyframes loading {
0% {
background-position: 0 -400px;
}
100% {
background-position: -7px -400px;
}
}
@-ms-keyframes loading {
0% {
background-position: 0 -400px;
}
100% {
background-position: -7px -400px;
}
}
@keyframes loading {
0% {
background-position: 0 -400px;
}
100% {
background-position: -7px -400px;
}
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,38 @@
.context-menu-list{font-family:'Open Sans', sans-serif;width:200px;display:inline-block;position:absolute;list-style-type:none;border:1px solid #DDD;background:#fff;font-size:12px;margin:0;padding:5px}
.context-menu-item{background-color:#fff;position:relative;height:auto;word-wrap:break-word;-webkit-user-select:none;-moz-user-select:0;-ms-user-select:none;user-select:none;padding:5px 5px 5px 30px}
.context-menu-item:last-child{border:none}
.context-menu-separator{padding-bottom:0;border-bottom:1px solid #DDD}
.context-menu-item > label > input,.context-menu-item > label > textarea{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}
.context-menu-item.hover{cursor:pointer;background-color:#DDD}
.context-menu-item.disabled{color:#666}
.context-menu-input.hover,.context-menu-item.disabled.hover{cursor:default;background-color:#EEE}
.context-menu-submenu:after{content:">";color:#666;position:absolute;top:0;right:3px;z-index:1}
.context-menu-item.icon{min-height:18px;vertical-align:middle;background-repeat:no-repeat;background-position:4px 5px;width:auto;display:list-item}
.context-menu-item.icon-edit{background-image:url(../img/page_white_edit.png)}
.context-menu-item.icon-cut{background-image:url(../img/cut.png)}
.context-menu-item.icon-copy{background-image:url(../img/copy.png)}
.context-menu-item.icon-rename{background-image:url(../img/rename.png)}
.context-menu-item.icon-preview{background-image:url(../img/preview.png)}
.context-menu-item.icon-dimension{background-image:url(../img/dimension.png)}
.context-menu-item.icon-date{background-image:url(../img/date.png)}
.context-menu-item.icon-label{background-image:url(../img/label.png)}
.context-menu-item.icon-size{background-image:url(../img/size.png)}
.context-menu-item.icon-download{background-image:url(../img/download.png)}
.context-menu-item.icon-paste{background-image:url(../img/page_white_paste.png)}
.context-menu-item.icon-clipboard-apply {background-image:url(../img/clipboard_apply.png)}
.context-menu-item.icon-delete{background-image:url(../img/page_white_delete.png)}
.context-menu-item.icon-add{background-image:url(../img/page_white_add.png)}
.context-menu-item.icon-quit{background-image:url(../img/door.png)}
.context-menu-item.icon-info{background-image:url(../img/info.png)}
.context-menu-item.icon-extract{background-image:url(../img/zip.png)}
.context-menu-item.icon-url{background-image:url(../img/url.png)}
.context-menu-item.icon-edit_img{background-image:url(../img/edit_img.png)}
.context-menu-item.icon-duplicate{background-image:url(../img/duplicate.png)}
.context-menu-input > label > *{vertical-align:top}
.context-menu-input > label > input[type=checkbox],.context-menu-input > label > input[type=radio]{margin-left:-17px}
.context-menu-input > label > span{margin-left:5px}
.context-menu-input > label,.context-menu-input > label > input[type=text],.context-menu-input > label > textarea,.context-menu-input > label > select{display:block;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}
.context-menu-input > label > textarea{height:100px}
.context-menu-item > .context-menu-list{display:none;right:-5px;top:5px}
.context-menu-item.hover > .context-menu-list{display:block}
.context-menu-accesskey{text-decoration:underline}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,926 @@
*, *:after, *:before { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; }
body, html {
font-family: 'Open Sans', sans-serif;
font-size: 100%; padding: 0; margin: 0;}
body{
padding-top: 32px;
font-weight:200;
background:#ececec;
overflow: -moz-scrollbars-vertical;
}
#qLpercentage{
font-family: 'Open Sans', sans-serif;
font-size: 40px;
line-height: 40px;
color:#bbbbbb;
font-weight: 200;
height: 60px;
-webkit-border-radius: 10px;
border-radius: 10px;
padding: 10px;
text-shadow: 1px 1px 2px #ffffff;
filter: dropshadow(color=#ffffff, offx=1, offy=1);
}
#qLbar{
/* IE9 SVG, needs conditional override of 'filter' to 'none' */
background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzdhN2E3YSIgc3RvcC1vcGFjaXR5PSIwLjQiLz4KICAgIDxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzdhN2E3YSIgc3RvcC1vcGFjaXR5PSIwLjQiLz4KICA8L2xpbmVhckdyYWRpZW50PgogIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9InVybCgjZ3JhZC11Y2dnLWdlbmVyYXRlZCkiIC8+Cjwvc3ZnPg==);
background: -moz-linear-gradient(top, rgba(122,122,122,0.4) 0%, rgba(122,122,122,0.4) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(122,122,122,0.4)), color-stop(100%,rgba(122,122,122,0.4))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, rgba(122,122,122,0.4) 0%,rgba(122,122,122,0.4) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, rgba(122,122,122,0.4) 0%,rgba(122,122,122,0.4) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, rgba(122,122,122,0.4) 0%,rgba(122,122,122,0.4) 100%); /* IE10+ */
background: linear-gradient(to bottom, rgba(122,122,122,0.4) 0%,rgba(122,122,122,0.4) 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#667a7a7a', endColorstr='#667a7a7a',GradientType=0 ); /* IE6-8 */
z-index:200;
margin:0px;
overflow: hidden;
}
[class^="rficon-"],[class*=" rficon-"] {
display:inline-block;
width:16px;
height:16px;
margin-top:1px;
*margin-right:.3em;
line-height:16px;
vertical-align:text-top;
background-position: 0 0;
background-repeat:no-repeat
}
.rficon-clipboard-apply {
background-image:url(../img/clipboard_apply.png);
}
.rficon-clipboard-clear {
background-image:url(../img/clipboard_clear.png);
}
.btn{
-webkit-border-radius: 0px;
border-radius: 0px;
}
.container-fluid{padding-right:0 !important;margin-top:10px !important;}
.img-precontainer{
margin: auto;
width: 100%;
text-align: center;
background: white;
border:none;
}
.img-container{
height: 91px;
width: 122px;
padding: 0px;
border:none;
overflow: hidden;
display: table-cell;
text-align: center;
vertical-align: middle;
margin: auto;
}
ul.breadcrumb{
margin-bottom:5px;
-webkit-border-radius: 0px;
border-radius: 0px;
padding-bottom: 4px;
padding-top: 6px;
background: #f0f0f0;
-webkit-box-shadow: 0 1px 4px rgba(0,0,0,0.065);
-moz-box-shadow: 0 1px 4px rgba(0,0,0,0.065);
box-shadow: 0 1px 4px rgba(0,0,0,0.065);
border-bottom: 1px solid #bbbbbb;
.pull-left i{ margin-top:2px;}
}
.alert {
padding: 8px 35px 8px 14px;
margin-bottom:2px;
border: 1px solid #aaaaaa;
color:#666666;
font-weight: 200;
font-size: 13px;
-webkit-border-radius: 0px;
border-radius: 0px;
background: white;
}
.img-container * ,.img-container-mini * {
vertical-align: middle;
}
#help{
display: none;
}
/*\*//*/
.img-container,.img-container-mini {
display: block;
}
.img-container span, .img-container-mini span {
display: inline-block;
height: 100%;
width: 1px;
}
/**/
iframe{
overflow: auto;
-webkit-overflow-scrolling:touch;
}
.upload-tabbable{
margin-left: 5px;
margin-right: 5px;
.upload-help{
font-size: 11px;
font-weight: 200;
color: #777;
text-shadow: 0 1px 0 #fff;
text-align: center;
}
.nav{
margin:0px;
li a{
font-size: 13px;
font-weight: 200;
color: #777;
text-shadow: 0 1px 0 #fff;
}
}
.tab-content{
padding: 5px;
border-bottom: 1px solid #dddddd;
border-left: 1px solid #dddddd;
border-rigth: 1px solid #dddddd;
background: white;
margin-bottom: 5px;
}
}
input#filter-input{
margin:0px;
width: 84px;
height: 26px;
vertical-align: bottom;
margin-bottom: 2px;
-webkit-border-radius: 0;
border-radius: 0;
font-size: 12px;
font-weight:200;
position:relative;
left:1px;
}
.qq-uploader .span9{margin-left:14px !important;width:690px !important;}
.space10{ clear:both; height:10px; }
h4{ font-size:12px; font-weight:200; margin: 0px; text-align: center; padding: 0px; margin-top:6px; line-height: 18px; }
h3{ font-size:14px; font-weight:200;}
.boxes{ border:1px solid #CCCCCC; word-wrap: break-word; background:white;
-webkit-box-shadow: 1px 1px 2px 0px rgba(0, 0, 0, 0.2);box-shadow: 1px 1px 2px 0px rgba(0, 0, 0, 0.2); min-height:115px;
text-align: center;}
.container-fluid{ padding:0px 10px !important;}
body .avpw .avpw_primary_button,
body .avpw .avpw_primary_button:link,
body .avpw .avpw_primary_button:visited,
body .avpw .avpw_primary_button:active {
background-color: #999999;
color: #ffffff;
background-image:none;
border:none;
}
body .avpw .avpw_primary_button:hover{
border:none;
background-color: #666666;
}
.uploader{
position:fixed;
top:50px;
left:14px;
margin:auto;
width:100%;
z-index:9999;
overflow: hidden;
background:#eeeeee;
padding-top:20px;
border:1px solid #cccccc;
display:none;
-webkit-box-shadow: 0px 0px 10px 0px rgba(1, 1, 1, 0.5);
box-shadow: 0px 0px 10px 0px rgba(1, 1, 1, 0.5);
}
.download-form{
margin-bottom:25px;
}
.grid li i{
margin-left:2px;
margin-right: 2px;
z-index:0;
}
.box,.boxx{
text-align: center;
word-wrap: break-word;
vertical-align: top;
text-align: left;
position: relative;
border: none;
box-shadow: none;
z-index: 100;
padding: 4px;
}
.box .btn{
width: 100%;
background: none;
box-shadow: none;
border:none;
z-index: 200;
}
.navbar{
margin-bottom: 0px;
border-bottom: 1px solid #bbbbbb;
.navbar-inner{
border: none;
min-height: 35px;
-webkit-border-radius: 0px;
border-radius: 0px;
padding-bottom: 2px;
margin: 0px;
padding-right: 8px;
padding-left: 8px;
.container-fluid{
margin: 0px;
margin-top: 0px !important;
padding: 0px;
.brand{
display: none;
}
.filters span{
margin-top:0px;
font-size:13px;font-weight:200;color:#777;text-shadow:0 1px 0 #fff; }
}
}
}
ul.sorting{
position: absolute;
left: -25px;
top:20px;
min-width: 0px;
background: #eeeeee;
li a:hover{
background: #aaaaaa;
}
}
.btn-group .dropdown-toggle.sorting-btn{
background: none;
border: none;
box-shadow: none;
position: relative;
-webkit-box-shadow:none;
top:-5px;
font-size: 13px;
}
.btn-group .dropdown-toggle.sorting-btn:hover{
background: none;
border: none;
box-shadow: none;
-webkit-box-shadow:none;
}
ul.sorting.dropdown-menu>li>a{
font-size: 12px;
text-shadow: none;
&.ascending{
background-image: url(../img/down.png);
background-repeat: no-repeat;
background-position: 6px 8px;
}
&.descending{
background-image: url(../img/up.png);
background-repeat: no-repeat;
background-position: 6px 8px;
}
}
.sorter-container{
a.sorter{
color:black;
}
a.ascending{
padding-left:9px;
background-image: url(../img/down.png);
background-repeat: no-repeat;
background-position: 0px 3px;
}
a.descending{
padding-left:9px;
background-image: url(../img/up.png);
background-repeat: no-repeat;
background-position: 0px 4px;
}
margin-top:5px;
margin-bottom:0px;
-webkit-border-radius: 0px;
border-radius: 0px;
padding-bottom: 4px;
padding-top: 6px;
-webkit-box-shadow: 0 1px 4px rgba(0,0,0,0.065);
-moz-box-shadow: 0 1px 4px rgba(0,0,0,0.065);
box-shadow: 0 1px 4px rgba(0,0,0,0.065);
background-color: #f5f5f5;
position: relative;
border-bottom: 1px solid #bbbbbb;
height: 24px;
.img-dimension,.file-date,.file-size,.file-extension,.file-name,.file-operations{
display: block;position: absolute;
top: 0px;
z-index: 100;
-webkit-box-shadow: none;
box-shadow: none;
text-align: left;
font-size: 13px;
margin-top: 1px;
color:#999999;
}
.file-operations{
width: 110px;
right:0px;
}
.img-dimension{
width: 65px;
right: 123px;
}
.file-date{
width: 70px;
right: 188px;
}
.file-size{
width: 55px;
right: 258px;
}
.file-extension{
width: 40px;
right: 313px;
}
.file-name{
width: 50px;
left: 52px;
}
}
.img-dimension,.file-date,.file-size,.file-extension,.file-name,.file-operations{
font-size:12px;
font-weight:200;
color:#777;text-shadow:0 1px 0 #fff;
display: none;
}
.view-controller{
text-align: left;
.btn-group>.btn:first-child,.btn-group>.btn:last-child{
-webkit-border-radius: 0px;
border-radius: 0px;
}
}
.navbar .filters .btn {
margin-bottom: 2px;
padding-top:2px;
padding-bottom:2px;
padding-left: 8px;
padding-right: 8px;
margin-top:5px;
}
.filters .types{
text-align: right;
}
@media(max-width:780px){
#view2{
display: none;
}
}
@media(max-width:839px){
body{
padding-top: 0px;
}
.filters .types{
text-align: left;
}
.navbar .navbar-inner .container-fluid .brand{
display: block;
}
.navbar .navbar-inner{
padding-bottom: 4px;
}
.filters{
div.span3.half,div.half.span6{
float:none;
width:100%;
}
}
.container-fluid{
margin:0px !important;
padding: 0px;
}
#qLbar{
height:50px !important;
}
}
@media(min-width:400px) and (max-width:839px){
.filters .row-fluid .half{
width:48.61878453038674%;*width:48.56559304102504%; float:left;
}
}
.tooltip.in{
z-index: 10000;
opacity:1;
filter:alpha(opacity=1);
font-weight: bold;
}
.tooltip{
font-weight: bold;
z-index: 10000;
}
/* GRID */
.grid {
padding: 0px 0px;
margin: 0 auto;
list-style: none;
-webkit-overflow-scrolling: touch;
}
.grid li {
display: inline-block;
width: 124px;
border:none;
margin: 4px;
margin-bottom:8px;
padding: 0px;
vertical-align: top;
}
.grid figure {
margin: 0;
position: relative;
display: block;
width: 122px;
margin: auto;
&:hover{ background: #e0e0e0 !important;}
}
.list-view1.grid li{
width:100%;
figure{
width:100%;
}
}
.grid figcaption {
text-align: center;
padding: 2px;
padding-top: 8px;
color: white;
height: 30px;
width: 122px;
margin-left:0px;
margin-right: 0px;
position: absolute;
top: auto;
bottom: 0;
-webkit-box-shadow: inset 0px 0px 8px 0px rgba(41, 41, 41, 0.5);
box-shadow: inset 0px 0px 8px 0px rgba(41, 41, 41, 0.5);
a{
margin: 0px;
padding: 3px;
}
h3 {
margin: 0;
padding: 0;
color: #fff;
}
}
.grid h4{
text-align: center;
color: black;
padding: 0px;
margin-bottom: 4px;
margin-top: 4px;
}
/* Individual Caption Styles */
/* Caption Style 2 */
.grid figure .box {
box-sizing: content-box;
}
.list-view0.grid,.list-view1.grid,.list-view2.grid{
figure{
.box{
max-width: 100%;
display: block;
position: relative;
overflow: hidden;
z-index: 1;
h4.ellipsis{
height:18px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
h4{
z-index: 1;
a{
z-index: 1;
}
}
}
}
.selected{
-webkit-box-shadow: 0px 0px 10px 5px rgba(0, 0, 0, 0.25);
box-shadow: 0px 0px 10px 5px rgba(0, 0, 0, 0.25);
//border: 1px solid #777777;
}
}
.no-touch .list-view0 figure .box{
z-index: 1;
-webkit-transition: -webkit-transform 0.3s;
-moz-transition: -moz-transform 0.3s;
transition: transform 0.3s;
}
.ui-state-highlight{
border:1px solid red;
}
.no-touch .list-view0 figure:hover .box,
.no-touch .list-view0 figure.cs-hover .box {
-webkit-box-shadow: 0px 0px 4px 0px rgba(1, 1, 1, 0.5);
box-shadow: 0px 0px 4px 0px rgba(1, 1, 1, 0.5);
-webkit-transform: translateY(-26px);
-moz-transform: translateY(-26px);
-ms-transform: translateY(-26px);
transform: translateY(-26px);
}
.list-view0 figure:hover .box.no-effect,
.list-view0 figure.cs-hover .box.no-effect,.no-effect{
-webkit-box-shadow: none;
box-shadow: none;
-webkit-transform: none;
-moz-transform: none;
-ms-transform: none;
transform: none;
}
.list-view0 .img-precontainer-mini{
display: none;
background: none;
}
a,a:hover{
color:black;
text-decoration: none;
}
.back-directory{
.img-precontainer,.img-precontainer-mini,.box{
background: none;
}
}
form{
margin:0px;
padding: 0px;
}
.modal-body{
form,input{
margin:0px;
}
}
.modal-header h3{
font-weight: 300;
font-size: 20px;
}
/* LIST VIEW */
.list-view1.sorter-container{
display: block;
}
.list-view0.sorter-container, .list-view2.sorter-container{
display: none;
}
.list-view0.grid{
.img-precontainer{
.img-container{
img{
max-width:122px !important;
max-height:91px !important;
}
img.icon{
width: 122px;
margin-top:0px;
}
}
.filetype{
position:absolute;
top:0px;
width:120px;
text-align:center;
color:white;
font-size: 13px;
line-height: 22px;
}
}
.cover{
/* IE9 SVG, needs conditional override of 'filter' to 'none' */
background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIgc3RvcC1vcGFjaXR5PSIwLjI1Ii8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNmZmZmZmYiIHN0b3Atb3BhY2l0eT0iMC4yNSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
background: -moz-linear-gradient(top, rgba(255,255,255,0.25) 0%, rgba(255,255,255,0.25) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,0.25)), color-stop(100%,rgba(255,255,255,0.25))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, rgba(255,255,255,0.25) 0%,rgba(255,255,255,0.25) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, rgba(255,255,255,0.25) 0%,rgba(255,255,255,0.25) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, rgba(255,255,255,0.25) 0%,rgba(255,255,255,0.25) 100%); /* IE10+ */
background: linear-gradient(to bottom, rgba(255,255,255,0.25) 0%,rgba(255,255,255,0.25) 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#40ffffff', endColorstr='#40ffffff',GradientType=0 ); /* IE6-8 */
width: 122px;
position:absolute;
top:22px;
right:0px;
height: 69px;
}
.box{
background: white;
}
.directory{
background: #dddddd;
}
figure.back-directory{
.directory{
background: #bbbbbb;
}
}
figcaption{
background:#ffffff;
}
}
.list-view1.grid , .list-view2.grid {
li{
margin: 0px;
&.back{
figure.back-directory{
height: 34px;
}
}
}
li:nth-child(odd) figure {background: #f9f9f9; }
li:nth-child(odd) figure.directory {background: #eaeaea; }
li figure{
border-bottom: 1px solid #cccccc;
background: white;
&.back-directory{
background: #bbbbbb;
.box{
background: none;
}
}
&.directory{
background: #efefef;
box{
padding: 0px;
min-height: 10px;
}
}
.box{
h4{
padding-top:1px;
font-size: 13px;
text-align: left;
}
margin-left: 50px;
-webkit-transition: none;
-moz-transition: none;
transition: none;
}
}
.img-precontainer-mini{
display: block;
position: absolute;
width: 45px;
height: 34px;
overflow: hidden;
text-align: center;
img{
height: 34px;
}
.filetype{
position:absolute;
top:5px;
text-align: center;
left:5px;
padding:1px 2px;
font-size: 13px;
line-height: 22px;
width:34px;
height: 24px;
color:white;
background: #333333;
}
}
.cover{
display: none;
}
.img-container-mini{
width: 45px;
height: 34px;
border:none;
overflow: hidden;
display: table-cell;
text-align: center;
vertical-align: middle;
margin: auto;
}
.img-precontainer-mini.original-thumb{
padding: 0px;
img{
width: auto;
margin: 0px;
height: 34px;
}
img.original{
width: auto;
width: auto;
height: auto;
}
}
.img-precontainer{
display: none;
}
figcaption{
background:none;
width: 120px;
position: absolute;
right: 0px;
top: 0px;
z-index: 1;
bottom: 0;
-webkit-box-shadow: none;
box-shadow: none;
text-align: right;
}
.selected{
-webkit-box-shadow: 0px 0px 3px 2px rgba(0, 0, 0, 0.2);
box-shadow: 0px 0px 3px 2px rgba(0, 0, 0, 0.2);
}
}
.list-view1.grid{
.img-dimension,.file-date,.file-size,.file-extension{
overflow: hidden;
display: block;position: absolute;
top: 0px;
z-index: 1;
-webkit-box-shadow: none;
box-shadow: none;
text-align: left;
margin-top:7px;
}
.img-dimension{
width: 65px;
right: 120px;
}
.file-date{
width: 70px;
right: 185px;
}
.file-size{
width: 55px;
right: 255px;
}
.file-extension{
width: 40px;
right: 310px;
}
figure .box{
padding-right: 352px;
}
}
.list-view2.grid{
figure{
.box{
padding-right: 115px;
}
}
}
@media(max-width:610px){
.list-view1.grid figure{
.box{
padding-right: 312px;
}
.file-extension{
display: none;
}
}
.sorter-container .file-extension{
display: none;
}
}
@media(max-width:565px){
.list-view1.grid figure{
.box{
padding-right: 257px;
}
.file-size{
display: none;
}
}
.sorter-container .file-size{
display: none;
}
}
@media(max-width:495px){
.list-view1.grid figure{
.box{
padding-right: 187px;
}
.file-date{
display: none;
}
}
.sorter-container .file-date{
display: none;
}
}
@media(max-width:430px){
.list-view1.grid figure{
.box{
padding-right: 115px;
}
.img-dimension{
display: none;
}
}
.sorter-container .img-dimension{
display: none;
}
.breadcrumb{
margin-left:0px;
margin-right:0px;
}
}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.pdf{ background:#CB0011; }}}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.css{ background:#D10698; }}}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.ai{ background:#D6772F; }}}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.psd{ background:#0960A4; }}}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.html,&.xhtml{ background:#035BC4; }}}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.fla,&.flv{ background:#CF302E; }}}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.ppt,&.pptx{ background:#DA5B00; }}}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.xls,&.xlsx,&.css{ background:#1A712C; }}}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.rts,&.doc,&.docx{ background:#002093; }}}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.rar,&.zip,&.gzip{ background:#FE9221; }}}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.mp4,&.mpeg,&.mov,&.avi,&.mpg,&.wma,&.webm{ background:#31231E; }}}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.mp3,&.m4a,&.ac3,&.aiff,&.mid,&.ogg,&.wav{ background:#9F008B; }}}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.odt,&.ots,&.ott,&.odb,&.odg,&.otp,&.otg,&.odf,&.ods,&.odp{ background:#367BBE; }}}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.jpg,&.jpeg,&.png,&.bmp,&.gif,&.tiff,&.svg{ background:#CFA554; }}}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.txt,&.sql,&.xml,&.log,&.iso,&.dmg{ background:#CACACA; }}}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.ade,&.adp,&.mdb,&.accdb{ background:#B61C19; }}}

View File

@@ -0,0 +1,901 @@
<?php
include('config/config.php');
if (USE_ACCESS_KEYS == TRUE){
if (!isset($_GET['akey'], $access_keys) || empty($access_keys)){
die('Access Denied!');
}
$_GET['akey'] = strip_tags(preg_replace( "/[^a-zA-Z0-9\._-]/", '', $_GET['akey']));
if (!in_array($_GET['akey'], $access_keys)){
die('Access Denied!');
}
}
$_SESSION['RF']["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(strip_tags($_GET['fldr']),"/") ."/");
else
$subdir = '';
if($subdir==""){
if(!empty($_COOKIE['last_position'])
&& strpos($_COOKIE['last_position'],'.')===FALSE)
$subdir= trim($_COOKIE['last_position']);
}
//remember last position
setcookie('last_position',$subdir,time() + (86400 * 7));
if($subdir=="/"){
$subdir="";
}
/***
*SUB-DIR CODE
***/
if(!isset($_SESSION['RF']["subfolder"])) $_SESSION['RF']["subfolder"]='';
$rfm_subfolder = '';
if(!empty($_SESSION['RF']["subfolder"]) && strpos($_SESSION['RF']["subfolder"],'../')===FALSE
&& strpos($_SESSION['RF']["subfolder"],'./')===FALSE && strpos($_SESSION['RF']["subfolder"],"/")!==0
&& strpos($_SESSION['RF']["subfolder"],'.')===FALSE) $rfm_subfolder= $_SESSION['RF']['subfolder'];
if($rfm_subfolder!="" && $rfm_subfolder[strlen($rfm_subfolder)-1]!="/") $rfm_subfolder.="/";
if(!file_exists($current_path . $rfm_subfolder.$subdir)){
$subdir='';
if(!file_exists($current_path . $rfm_subfolder.$subdir)){
$rfm_subfolder="";
}
}
if(trim($rfm_subfolder)==""){
$cur_dir = $upload_dir . $subdir;
$cur_path = $current_path . $subdir;
$thumbs_path = $thumbs_base_path;
$cur_thumbs_dir = $thumbs_dir;
$parent=$subdir;
}else{
$cur_dir = $upload_dir . $rfm_subfolder.$subdir;
$cur_path = $current_path . $rfm_subfolder.$subdir;
$thumbs_path = $thumbs_base_path. $rfm_subfolder;
$cur_thumbs_dir = $thumbs_dir. $rfm_subfolder;
$parent=$rfm_subfolder.$subdir;
}
$cycle=true;
$max_cycles=50;
$i=0;
while($cycle && $i<$max_cycles){
$i++;
if($parent=="./") $parent="";
if(file_exists($current_path.$parent."config.php")){
require_once($current_path.$parent."config.php");
$cycle=false;
}
if($parent=="") $cycle=false;
else $parent=fix_dirname($parent)."/";
}
if(!is_dir($thumbs_path.$subdir)){
create_folder(false, $thumbs_path.$subdir);
}
if(isset($_GET['popup'])) $popup= strip_tags($_GET['popup']); else $popup=0;
//Sanitize popup
$popup=!!$popup;
//view type
if(!isset($_SESSION['RF']["view_type"])){ $view=$default_view; $_SESSION['RF']["view_type"] = $view; }
if(isset($_GET['view'])){ $view=fix_get_params($_GET['view']); $_SESSION['RF']["view_type"] = $view; }
$view=$_SESSION['RF']["view_type"];
if(isset($_GET["filter"])) $filter=fix_get_params($_GET["filter"]);
else $filter='';
if(!isset($_SESSION['RF']['sort_by'])) $_SESSION['RF']['sort_by']='';
if(isset($_GET["sort_by"])) $sort_by=$_SESSION['RF']['sort_by']=fix_get_params($_GET["sort_by"]);
else $sort_by=$_SESSION['RF']['sort_by'];
if(!isset($_SESSION['RF']['descending'])) $_SESSION['RF']['descending']=false;
if(isset($_GET["descending"])) $descending=$_SESSION['RF']['descending']=fix_get_params($_GET["descending"])==="true";
else $descending=$_SESSION['RF']['descending'];
$lang=$default_language;
if(isset($_GET['lang']) && $_GET['lang'] != 'undefined' && $_GET['lang']!='') {
$lang=fix_get_params($_GET['lang']);
$lang=trim($lang);
}
$language_file = 'lang/'.$default_language.'.php';
if ($lang!=$default_language) {
$path_parts = pathinfo($lang);
if(is_readable('lang/' .$path_parts['basename']. '.php')){
$language_file = 'lang/' .$path_parts['basename']. '.php';
}
else {
echo "<script>console.log('The ".$lang." language file is not readable! Falling back...');</script>";
}
}
// add lang file to session for easy include
$_SESSION['RF']['language_file'] = $language_file;
require_once $language_file;
if(!isset($_GET['type'])) $_GET['type']=0;
if(!isset($_GET['field_id'])) $_GET['field_id']='';
$field_id=isset($_GET['field_id']) ? fix_get_params($_GET['field_id']) : '';
$type_param=fix_get_params($_GET['type']);
$get_params = http_build_query(array(
'type' => $type_param,
'lang' => $lang,
'popup' => $popup,
'field_id' => $field_id,
'akey' => (isset($_GET['akey']) && $_GET['akey'] != '' ? $_GET['akey'] : 'key'),
'fldr' => ''
));
?>
<!DOCTYPE html>
<html xmlns="https://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="robots" content="noindex,nofollow">
<title>Responsive FileManager</title>
<link rel="shortcut icon" href="img/ico/favicon.ico">
<link href="css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<link href="css/bootstrap-responsive.min.css" rel="stylesheet" type="text/css" />
<link href="css/bootstrap-lightbox.min.css" rel="stylesheet" type="text/css" />
<link href="css/style.css" rel="stylesheet" type="text/css" />
<link href="css/dropzone.min.css" type="text/css" rel="stylesheet" />
<?php
$sprite_lang_file = 'img/spritemap_'.$lang.'.png';
$sprite_lang_file2 = 'img/spritemap@2x_'.$lang.'.png';
if ( ! file_exists($sprite_lang_file) || ! file_exists($sprite_lang_file2)){
//fallback
$sprite_lang_file = 'img/spritemap_en_EN.png';
$sprite_lang_file2 = 'img/spritemap@2x_en_EN.png';
if ( ! file_exists($sprite_lang_file) || ! file_exists($sprite_lang_file2)){
// we are in deep ****
echo '<script>console.log("Error: Spritemap not found!");</script>';
// exit();
}
}
?>
<style>
.dropzone .dz-default.dz-message,
.dropzone .dz-preview .dz-error-mark,
.dropzone-previews .dz-preview .dz-error-mark,
.dropzone .dz-preview .dz-success-mark,
.dropzone-previews .dz-preview .dz-success-mark,
.dropzone .dz-preview .dz-progress .dz-upload,
.dropzone-previews .dz-preview .dz-progress .dz-upload {
background-image: url(<?php echo $sprite_lang_file; ?>);
}
@media all and (-webkit-min-device-pixel-ratio:1.5),(min--moz-device-pixel-ratio:1.5),(-o-min-device-pixel-ratio:1.5/1),(min-device-pixel-ratio:1.5),(min-resolution:138dpi),(min-resolution:1.5dppx) {
.dropzone .dz-default.dz-message,
.dropzone .dz-preview .dz-error-mark,
.dropzone-previews .dz-preview .dz-error-mark,
.dropzone .dz-preview .dz-success-mark,
.dropzone-previews .dz-preview .dz-success-mark,
.dropzone .dz-preview .dz-progress .dz-upload,
.dropzone-previews .dz-preview .dz-progress .dz-upload {
background-image: url(<?php echo $sprite_lang_file; ?>);
}
}
</style>
<link href="css/jquery.contextMenu.min.css" rel="stylesheet" type="text/css" />
<link href="css/bootstrap-modal.min.css" rel="stylesheet" type="text/css" />
<link href="jPlayer/skin/blue.monday/jplayer.blue.monday.css" rel="stylesheet" type="text/css">
<!--[if lt IE 8]><style>
.img-container span, .img-container-mini span {
display: inline-block;
height: 100%;
}
</style><![endif]-->
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
if (typeof jQuery === 'undefined')
{
document.write(unescape("%3Cscript src='js/jquery.js' type='text/javascript'%3E%3C/script%3E"));
}
</script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
<script type="text/javascript" src="js/bootstrap-lightbox.min.js"></script>
<script type="text/javascript" src="js/dropzone.min.js"></script>
<script type="text/javascript" src="js/jquery.touchSwipe.min.js"></script>
<script type="text/javascript" src="js/modernizr.custom.js"></script>
<script type="text/javascript" src="js/bootbox.min.js"></script>
<script type="text/javascript" src="js/bootstrap-modal.min.js"></script>
<script type="text/javascript" src="js/bootstrap-modalmanager.min.js"></script>
<script type="text/javascript" src="jPlayer/jquery.jplayer.min.js"></script>
<script type="text/javascript" src="js/imagesloaded.pkgd.min.js"></script>
<script type="text/javascript" src="js/jquery.queryloader2.min.js"></script>
<?php
if($aviary_active){
if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) { ?>
<script type="text/javascript" src="https://dme0ih8comzn4.cloudfront.net/js/feather.js"></script>
<?php }else{ ?>
<script type="text/javascript" src="http://feather.aviary.com/js/feather.js "></script>
<?php }} ?>
<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.6.2/html5shiv.js"></script>
<![endif]-->
<script src="js/jquery.ui.position.min.js" type="text/javascript"></script>
<script src="js/jquery-ui-1.10.4.custom.js" type="text/javascript"></script>
<script src="js/jquery.contextMenu.min.js" type="text/javascript"></script>
<script>
var ext_img=new Array('<?php echo implode("','", $ext_img)?>');
var allowed_ext=new Array('<?php echo implode("','", $ext)?>');
var loading_bar=<?php echo $loading_bar?"true":"false"; ?>;
var image_editor=<?php echo $aviary_active?"true":"false"; ?>;
//dropzone config
Dropzone.options.myAwesomeDropzone = {
dictInvalidFileType: "<?php echo lang_Error_extension;?>",
dictFileTooBig: "<?php echo lang_Error_Upload; ?>",
dictResponseError: "SERVER ERROR",
paramName: "file", // The name that will be used to transfer the file
maxFilesize: <?php echo $MaxSizeUpload; ?>, // MB
url: "upload.php",
accept: function(file, done) {
var extension=file.name.split('.').pop();
extension=extension.toLowerCase();
if ($.inArray(extension, allowed_ext) > -1) {
done();
}
else {
done("<?php echo lang_Error_extension;?>");
}
}
};
if (image_editor) {
var featherEditor = new Aviary.Feather({
apiKey: "<?php echo $aviary_key; ?>",
apiVersion: <?php echo $aviary_version; ?>,
language: "<?php echo $aviary_language; ?>",
theme: 'light',
tools: 'all',
onSave: function(imageID, newURL) {
show_animation();
var img = document.getElementById(imageID);
img.src = newURL;
$.ajax({
type: "POST",
url: "ajax_calls.php?action=save_img",
data: { url: newURL, path:$('#sub_folder').val()+$('#fldr_value').val(), name:$('#aviary_img').data('name') }
}).done(function( msg ) {
featherEditor.close();
d = new Date();
$("figure[data-name='"+$('#aviary_img').data('name')+"']").find('img').each(function(){
$(this).attr('src',$(this).attr('src')+"?"+d.getTime());
});
$("figure[data-name='"+$('#aviary_img').data('name')+"']").find('figcaption a.preview').each(function(){
$(this).data('url',$(this).data('url')+"?"+d.getTime());
});
hide_animation();
});
return false;
},
onError: function(errorObj) {
bootbox.alert(errorObj.message);
}
});
}
</script>
<script type="text/javascript" src="js/include.min.js"></script>
</head>
<body>
<input type="hidden" id="popup" value="<?php echo $popup; ?>" />
<input type="hidden" id="view" value="<?php echo $view; ?>" />
<input type="hidden" id="cur_dir" value="<?php echo $cur_dir; ?>" />
<input type="hidden" id="cur_dir_thumb" value="<?php echo $thumbs_path.$subdir; ?>" />
<input type="hidden" id="insert_folder_name" value="<?php echo lang_Insert_Folder_Name; ?>" />
<input type="hidden" id="new_folder" value="<?php echo lang_New_Folder; ?>" />
<input type="hidden" id="ok" value="<?php echo lang_OK; ?>" />
<input type="hidden" id="cancel" value="<?php echo lang_Cancel; ?>" />
<input type="hidden" id="rename" value="<?php echo lang_Rename; ?>" />
<input type="hidden" id="lang_duplicate" value="<?php echo lang_Duplicate; ?>" />
<input type="hidden" id="duplicate" value="<?php if($duplicate_files) echo 1; else echo 0; ?>" />
<input type="hidden" id="base_url" value="<?php echo $base_url?>"/>
<input type="hidden" id="base_url_true" value="<?php echo base_url(); ?>"/>
<input type="hidden" id="fldr_value" value="<?php echo $subdir; ?>"/>
<input type="hidden" id="sub_folder" value="<?php echo $rfm_subfolder; ?>"/>
<input type="hidden" id="file_number_limit_js" value="<?php echo $file_number_limit_js; ?>" />
<input type="hidden" id="descending" value="<?php echo $descending?"true":"false"; ?>" />
<?php $protocol = 'http'; ?>
<input type="hidden" id="current_url" value="<?php echo str_replace(array('&filter='.$filter),array(''),$protocol."://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']); ?>" />
<input type="hidden" id="lang_show_url" value="<?php echo lang_Show_url; ?>" />
<input type="hidden" id="copy_cut_files_allowed" value="<?php if($copy_cut_files) echo 1; else echo 0; ?>" />
<input type="hidden" id="copy_cut_dirs_allowed" value="<?php if($copy_cut_dirs) echo 1; else echo 0; ?>" />
<input type="hidden" id="copy_cut_max_size" value="<?php echo $copy_cut_max_size; ?>" />
<input type="hidden" id="copy_cut_max_count" value="<?php echo $copy_cut_max_count; ?>" />
<input type="hidden" id="lang_copy" value="<?php echo lang_Copy; ?>" />
<input type="hidden" id="lang_cut" value="<?php echo lang_Cut; ?>" />
<input type="hidden" id="lang_paste" value="<?php echo lang_Paste; ?>" />
<input type="hidden" id="lang_paste_here" value="<?php echo lang_Paste_Here; ?>" />
<input type="hidden" id="lang_paste_confirm" value="<?php echo lang_Paste_Confirm; ?>" />
<input type="hidden" id="lang_files_on_clipboard" value="<?php echo lang_Files_ON_Clipboard; ?>" />
<input type="hidden" id="clipboard" value="<?php echo ((isset($_SESSION['RF']['clipboard']['path']) && trim($_SESSION['RF']['clipboard']['path']) != null) ? 1 : 0); ?>" />
<input type="hidden" id="lang_clear_clipboard_confirm" value="<?php echo lang_Clear_Clipboard_Confirm; ?>" />
<input type="hidden" id="lang_file_info" value="<?php echo fix_strtoupper(lang_File_info); ?>" />
<input type="hidden" id="lang_edit_image" value="<?php echo lang_Edit_image; ?>" />
<input type="hidden" id="lang_extract" value="<?php echo lang_Extract; ?>" />
<input type="hidden" id="transliteration" value="<?php echo $transliteration?"true":"false"; ?>" />
<?php if($upload_files){ ?>
<!-- uploader div start -->
<div class="uploader">
<center><button class="btn btn-inverse close-uploader"><i class="icon-backward icon-white"></i> <?php echo lang_Return_Files_List?></button></center>
<div class="space10"></div><div class="space10"></div>
<div class="tabbable upload-tabbable"> <!-- Only required for left/right tabs -->
<?php if($java_upload){ ?>
<ul class="nav nav-tabs">
<li class="active"><a href="#tab1" data-toggle="tab"><?php echo lang_Upload_base; ?></a></li>
<li><a href="#tab2" id="uploader-btn" data-toggle="tab"><?php echo lang_Upload_java; ?></a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tab1">
<?php } ?>
<form action="dialog.php" method="post" enctype="multipart/form-data" id="myAwesomeDropzone" class="dropzone">
<input type="hidden" name="path" value="<?php echo $cur_path?>"/>
<input type="hidden" name="path_thumb" value="<?php echo $thumbs_path.$subdir?>"/>
<div class="fallback">
<?php echo lang_Upload_file?>:<br/>
<input name="file" type="file" />
<input type="hidden" name="fldr" value="<?php echo $subdir; ?>"/>
<input type="hidden" name="view" value="<?php echo $view; ?>"/>
<input type="hidden" name="type" value="<?php echo $type_param; ?>"/>
<input type="hidden" name="field_id" value="<?php echo $field_id; ?>"/>
<input type="hidden" name="popup" value="<?php echo $popup; ?>"/>
<input type="hidden" name="lang" value="<?php echo $lang; ?>"/>
<input type="hidden" name="filter" value="<?php echo $filter; ?>"/>
<input type="submit" name="submit" value="<?php echo lang_OK?>" />
</form>
</div>
<div class="upload-help"><?php echo lang_Upload_base_help; ?></div>
<?php if($java_upload){ ?>
</div>
<div class="tab-pane" id="tab2">
<div id="iframe-container"></div>
<div class="upload-help"><?php echo lang_Upload_java_help; ?></div>
<?php } ?>
</div>
</div>
</div>
</div>
<!-- uploader div start -->
<?php } ?>
<div class="container-fluid">
<?php
$class_ext = '';
$src = '';
if ($_GET['type']==1) $apply = 'apply_img';
elseif($_GET['type']==2) $apply = 'apply_link';
elseif($_GET['type']==0 && $_GET['field_id']=='') $apply = 'apply_none';
elseif($_GET['type']==3) $apply = 'apply_video';
else $apply = 'apply';
$files = scandir($current_path.$rfm_subfolder.$subdir);
$n_files=count($files);
//php sorting
$sorted=array();
$current_folder=array();
$prev_folder=array();
foreach($files as $k=>$file){
if($file==".") $current_folder=array('file'=>$file);
elseif($file=="..") $prev_folder=array('file'=>$file);
elseif(is_dir($current_path.$rfm_subfolder.$subdir.$file)){
$date=filemtime($current_path.$rfm_subfolder.$subdir. $file);
$size=foldersize($current_path.$rfm_subfolder.$subdir. $file);
$file_ext=lang_Type_dir;
$sorted[$k]=array('file'=>$file,'date'=>$date,'size'=>$size,'extension'=>$file_ext);
}else{
$file_path=$current_path.$rfm_subfolder.$subdir.$file;
$date=filemtime($file_path);
$size=filesize($file_path);
$file_ext = substr(strrchr($file,'.'),1);
$sorted[$k]=array('file'=>$file,'date'=>$date,'size'=>$size,'extension'=>$file_ext);
}
}
function filenameSort($x, $y) {
return $x['file'] < $y['file'];
}
function dateSort($x, $y) {
return $x['date'] < $y['date'];
}
function sizeSort($x, $y) {
return $x['size'] - $y['size'];
}
function extensionSort($x, $y) {
return $x['extension'] < $y['extension'];
}
switch($sort_by){
case 'name':
usort($sorted, 'filenameSort');
break;
case 'date':
usort($sorted, 'dateSort');
break;
case 'size':
usort($sorted, 'sizeSort');
break;
case 'extension':
usort($sorted, 'extensionSort');
break;
default:
break;
}
if($descending){
$sorted=array_reverse($sorted);
}
$files=array_merge(array($prev_folder),array($current_folder),$sorted);
?>
<!-- header div start -->
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container-fluid">
<button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<div class="brand"><?php echo lang_Toolbar; ?> -></div>
<div class="nav-collapse collapse">
<div class="filters">
<div class="row-fluid">
<div class="span3 half">
<?php if($upload_files){ ?>
<button class="tip btn upload-btn" title="<?php echo lang_Upload_file; ?>"><i class="icon-plus"></i><i class="icon-file"></i></button>
<?php } ?>
<?php if($create_folders){ ?>
<button class="tip btn new-folder" title="<?php echo lang_New_Folder?>"><i class="icon-plus"></i><i class="icon-folder-open"></i></button>
<?php } ?>
<?php if($copy_cut_files || $copy_cut_dirs){ ?>
<button class="tip btn paste-here-btn" title="<?php echo lang_Paste_Here; ?>"><i class="rficon-clipboard-apply"></i></button>
<button class="tip btn clear-clipboard-btn" title="<?php echo lang_Clear_Clipboard; ?>"><i class="rficon-clipboard-clear"></i></button>
<?php } ?>
</div>
<div class="span3 half view-controller">
<span><?php echo lang_View; ?>:</span>
<button class="btn tip<?php if($view==0) echo " btn-inverse"; ?>" id="view0" data-value="0" title="<?php echo lang_View_boxes; ?>"><i class="icon-th <?php if($view==0) echo "icon-white"; ?>"></i></button>
<button class="btn tip<?php if($view==1) echo " btn-inverse"; ?>" id="view1" data-value="1" title="<?php echo lang_View_list; ?>"><i class="icon-align-justify <?php if($view==1) echo "icon-white"; ?>"></i></button>
<button class="btn tip<?php if($view==2) echo " btn-inverse"; ?>" id="view2" data-value="2" title="<?php echo lang_View_columns_list; ?>"><i class="icon-fire <?php if($view==2) echo "icon-white"; ?>"></i></button>
</div>
<div class="span6 half types">
<span><?php echo lang_Filters; ?>:</span>
<?php if($_GET['type']!=1 && $_GET['type']!=3){ ?>
<input id="select-type-1" name="radio-sort" type="radio" data-item="ff-item-type-1" checked="checked" class="hide" />
<label id="ff-item-type-1" title="<?php echo lang_Files; ?>" for="select-type-1" class="tip btn ff-label-type-1"><i class="icon-file"></i></label>
<input id="select-type-2" name="radio-sort" type="radio" data-item="ff-item-type-2" class="hide" />
<label id="ff-item-type-2" title="<?php echo lang_Images; ?>" for="select-type-2" class="tip btn ff-label-type-2"><i class="icon-picture"></i></label>
<input id="select-type-3" name="radio-sort" type="radio" data-item="ff-item-type-3" class="hide" />
<label id="ff-item-type-3" title="<?php echo lang_Archives; ?>" for="select-type-3" class="tip btn ff-label-type-3"><i class="icon-inbox"></i></label>
<input id="select-type-4" name="radio-sort" type="radio" data-item="ff-item-type-4" class="hide" />
<label id="ff-item-type-4" title="<?php echo lang_Videos; ?>" for="select-type-4" class="tip btn ff-label-type-4"><i class="icon-film"></i></label>
<input id="select-type-5" name="radio-sort" type="radio" data-item="ff-item-type-5" class="hide" />
<label id="ff-item-type-5" title="<?php echo lang_Music; ?>" for="select-type-5" class="tip btn ff-label-type-5"><i class="icon-music"></i></label>
<?php } ?>
<input accesskey="f" type="text" class="filter-input <?php echo (($_GET['type']!=1 && $_GET['type']!=3) ? '' : 'filter-input-notype'); ?>" id="filter-input" name="filter" placeholder="<?php echo fix_strtolower(lang_Text_filter); ?>..." value="<?php echo $filter; ?>"/><?php if($n_files>$file_number_limit_js){ ?><label id="filter" class="btn"><i class="icon-play"></i></label><?php } ?>
<input id="select-type-all" name="radio-sort" type="radio" data-item="ff-item-type-all" class="hide" />
<label id="ff-item-type-all" title="<?php echo lang_All; ?>" <?php if($_GET['type']==1 || $_GET['type']==3){ ?>style="visibility: hidden;" <?php } ?> data-item="ff-item-type-all" for="select-type-all" style="margin-rigth:0px;" class="tip btn btn-inverse ff-label-type-all"><i class="icon-align-justify icon-white"></i></label>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- header div end -->
<!-- breadcrumb div start -->
<div class="row-fluid">
<?php
$link="dialog.php?".$get_params;
?>
<ul class="breadcrumb">
<li class="pull-left"><a href="<?php echo $link?>/"><i class="icon-home"></i></a></li>
<li><span class="divider">/</span></li>
<?php
$bc=explode("/",$subdir);
$tmp_path='';
if(!empty($bc))
foreach($bc as $k=>$b){
$tmp_path.=$b."/";
if($k==count($bc)-2){
?> <li class="active"><?php echo $b?></li><?php
}elseif($b!=""){ ?>
<li><a href="<?php echo $link.$tmp_path?>"><?php echo $b?></a></li><li><span class="divider"><?php echo "/"; ?></span></li>
<?php }
}
?>
<li class="pull-right"><a class="btn-small" href="javascript:void('')" id="info"><i class="icon-question-sign"></i></a></li>
<li class="pull-right"><a id="refresh" class="btn-small" href="dialog.php?<?php echo $get_params.$subdir."&".uniqid() ?>"><i class="icon-refresh"></i></a></li>
<li class="pull-right">
<div class="btn-group">
<a class="btn dropdown-toggle sorting-btn" data-toggle="dropdown" href="#">
<i class="icon-signal"></i>
<span class="caret"></span>
</a>
<ul class="dropdown-menu pull-left sorting">
<li><center><strong><?php echo lang_Sorting ?></strong></center></li>
<li><a class="sorter sort-name <?php if($sort_by=="name"){ echo ($descending)?"descending":"ascending"; } ?>" href="javascript:void('')" data-sort="name"><?php echo lang_Filename; ?></a></li>
<li><a class="sorter sort-date <?php if($sort_by=="date"){ echo ($descending)?"descending":"ascending"; } ?>" href="javascript:void('')" data-sort="date"><?php echo lang_Date; ?></a></li>
<li><a class="sorter sort-size <?php if($sort_by=="size"){ echo ($descending)?"descending":"ascending"; } ?>" href="javascript:void('')" data-sort="size"><?php echo lang_Size; ?></a></li>
<li><a class="sorter sort-extension <?php if($sort_by=="extension"){ echo ($descending)?"descending":"ascending"; } ?>" href="javascript:void('')" data-sort="extension"><?php echo lang_Type; ?></a></li>
</ul>
</div>
</li>
</ul>
</div>
<!-- breadcrumb div end -->
<div class="row-fluid ff-container">
<div class="span12">
<?php if(@opendir($current_path.$rfm_subfolder.$subdir)===FALSE){ ?>
<br/>
<div class="alert alert-error">There is an error! The upload folder there isn't. Check your config.php file. </div>
<?php }else{ ?>
<h4 id="help"><?php echo lang_Swipe_help; ?></h4>
<?php if(isset($folder_message)){ ?>
<div class="alert alert-block"><?php echo $folder_message; ?></div>
<?php } ?>
<?php if($show_sorting_bar){ ?>
<!-- sorter -->
<div class="sorter-container <?php echo "list-view".$view; ?>">
<div class="file-name"><a class="sorter sort-name <?php if($sort_by=="name"){ echo ($descending)?"descending":"ascending"; } ?>" href="javascript:void('')" data-sort="name"><?php echo lang_Filename; ?></a></div>
<div class="file-date"><a class="sorter sort-date <?php if($sort_by=="date"){ echo ($descending)?"descending":"ascending"; } ?>" href="javascript:void('')" data-sort="date"><?php echo lang_Date; ?></a></div>
<div class="file-size"><a class="sorter sort-size <?php if($sort_by=="size"){ echo ($descending)?"descending":"ascending"; } ?>" href="javascript:void('')" data-sort="size"><?php echo lang_Size; ?></a></div>
<div class='img-dimension'><?php echo lang_Dimension; ?></div>
<div class='file-extension'><a class="sorter sort-extension <?php if($sort_by=="extension"){ echo ($descending)?"descending":"ascending"; } ?>" href="javascript:void('')" data-sort="extension"><?php echo lang_Type; ?></a></div>
<div class='file-operations'><?php echo lang_Operations; ?></div>
</div>
<?php } ?>
<input type="hidden" id="file_number" value="<?php echo $n_files; ?>" />
<!--ul class="thumbnails ff-items"-->
<ul class="grid cs-style-2 <?php echo "list-view".$view; ?>" id="main-item-container">
<?php
$jplayer_ext=array("mp4","flv","webmv","webma","webm","m4a","m4v","ogv","oga","mp3","midi","mid","ogg","wav");
foreach ($files as $file_array) {
$file=$file_array['file'];
if($file == '.' || (isset($file_array['extension']) && $file_array['extension']!=lang_Type_dir) || ($file == '..' && $subdir == '') || in_array($file, $hidden_folders) || ($filter!='' && $file!=".." && strpos($file,$filter)===false))
continue;
$new_name=fix_filename($file,$transliteration);
if($file!='..' && $file!=$new_name){
//rename
rename_folder($current_path.$subdir.$new_name,$new_name,$transliteration);
$file=$new_name;
}
//add in thumbs folder if not exist
if (!file_exists($thumbs_path.$subdir.$file)) create_folder(false,$thumbs_path.$subdir.$file);
$class_ext = 3;
if($file=='..' && trim($subdir) != '' ){
$src = explode("/",$subdir);
unset($src[count($src)-2]);
$src=implode("/",$src);
if($src=='') $src="/";
}
elseif ($file!='..') {
$src = $subdir . $file."/";
}
?>
<li data-name="<?php echo $file ?>" <?php if($file=='..') echo 'class="back"'; else echo 'class="dir"'; ?>><?php
$file_prevent_rename = false;
$file_prevent_delete = false;
if (isset($filePermissions[$file])) {
$file_prevent_rename = isset($filePermissions[$file]['prevent_rename']) && $filePermissions[$file]['prevent_rename'];
$file_prevent_delete = isset($filePermissions[$file]['prevent_delete']) && $filePermissions[$file]['prevent_delete'];
}
?> <figure data-name="<?php echo $file ?>" class="<?php if($file=="..") echo "back-"; ?>directory" data-type="<?php if($file!=".."){ echo "dir"; } ?>">
<a class="folder-link" href="dialog.php?<?php echo $get_params.rawurlencode($src)."&".uniqid() ?>">
<div class="img-precontainer">
<div class="img-container directory"><span></span>
<img class="directory-img" src="img/<?php echo $icon_theme; ?>/folder<?php if($file==".."){ echo "_back"; }?>.jpg" alt="folder" />
</div>
</div>
<div class="img-precontainer-mini directory">
<div class="img-container-mini">
<span></span>
<img class="directory-img" src="img/<?php echo $icon_theme; ?>/folder<?php if($file==".."){ echo "_back"; }?>.png" alt="folder" />
</div>
</div>
<?php if($file==".."){ ?>
<div class="box no-effect">
<h4><?php echo lang_Back ?></h4>
</div>
</a>
<?php }else{ ?>
</a>
<div class="box">
<h4 class="<?php if($ellipsis_title_after_first_row){ echo "ellipsis"; } ?>"><a class="folder-link" data-file="<?php echo $file ?>" href="dialog.php?<?php echo $get_params.rawurlencode($src)."&".uniqid() ?>"><?php echo $file; ?></a></h4>
</div>
<input type="hidden" class="name" value=""/>
<input type="hidden" class="date" value="<?php echo $file_array['date']; ?>"/>
<input type="hidden" class="size" value="<?php echo $file_array['size']; ?>"/>
<input type="hidden" class="extension" value="<?php echo lang_Type_dir; ?>"/>
<div class="file-date"><?php echo date(lang_Date_type,$file_array['date'])?></div>
<?php if($show_folder_size){ ?><div class="file-size"><?php echo makeSize($file_array['size'])?></div><?php } ?>
<div class='file-extension'><?php echo lang_Type_dir; ?></div>
<figcaption>
<a href="javascript:void('')" class="tip-left edit-button rename-file-paths <?php if($rename_folders && !$file_prevent_rename) echo "rename-folder"; ?>" title="<?php echo lang_Rename?>" data-path="<?php echo $rfm_subfolder.$subdir.$file; ?>" data-thumb="<?php echo $thumbs_path.$subdir.$file; ?>">
<i class="icon-pencil <?php if(!$rename_folders || $file_prevent_rename) echo 'icon-white'; ?>"></i></a>
<a href="javascript:void('')" class="tip-left erase-button <?php if($delete_folders && !$file_prevent_delete) echo "delete-folder"; ?>" title="<?php echo lang_Erase?>" data-confirm="<?php echo lang_Confirm_Folder_del; ?>" data-path="<?php echo $rfm_subfolder.$subdir.$file; ?>" data-thumb="<?php echo $thumbs_path.$subdir .$file; ?>">
<i class="icon-trash <?php if(!$delete_folders || $file_prevent_delete) echo 'icon-white'; ?>"></i>
</a>
</figcaption>
<?php } ?>
</figure>
</li>
<?php
}
$files_prevent_duplicate = array();
foreach ($files as $nu=>$file_array) {
$file=$file_array['file'];
if($file == '.' || $file == '..' || is_dir($current_path.$rfm_subfolder.$subdir.$file) || in_array($file, $hidden_files) || !in_array(fix_strtolower($file_array['extension']), $ext) || ($filter!='' && strpos($file,$filter)===false))
continue;
$file_path=$current_path.$rfm_subfolder.$subdir.$file;
//check if file have illegal caracter
$filename=substr($file, 0, '-' . (strlen($file_array['extension']) + 1));
if($file!=fix_filename($file,$transliteration)){
$file1=fix_filename($file,$transliteration);
$file_path1=($current_path.$rfm_subfolder.$subdir.$file1);
if(file_exists($file_path1)){
$i = 1;
$info=pathinfo($file1);
while(file_exists($current_path.$rfm_subfolder.$subdir.$info['filename'].".[".$i."].".$info['extension'])) {
$i++;
}
$file1=$info['filename'].".[".$i."].".$info['extension'];
$file_path1=($current_path.$rfm_subfolder.$subdir.$file1);
}
$filename=substr($file1, 0, '-' . (strlen($file_array['extension']) + 1));
rename_file($file_path,fix_filename($filename,$transliteration),$transliteration);
$file=$file1;
$file_array['extension']=fix_filename($file_array['extension'],$transliteration);
$file_path=$file_path1;
}
$is_img=false;
$is_video=false;
$is_audio=false;
$show_original=false;
$show_original_mini=false;
$mini_src="";
$src_thumb="";
$src_thumb_url="";
$extension_lower=fix_strtolower($file_array['extension']);
if(in_array($extension_lower, $ext_img)){
$src = $base_url . $cur_dir . rawurlencode($file);
$mini_src = $src_thumb = $thumbs_path.$subdir. $file;
$src_thumb_url = $base_url . $cur_thumbs_dir.$subdir. $file;
$mini_src_url = $base_url .$thumbs_dir.$subdir. $file;
//add in thumbs folder if not exist
if(!file_exists($src_thumb)){
try {
create_img_gd($file_path, $src_thumb, 122, 91);
new_thumbnails_creation($current_path.$rfm_subfolder.$subdir,$file_path,$file,$current_path,$relative_image_creation,$relative_path_from_current_pos,$relative_image_creation_name_to_prepend,$relative_image_creation_name_to_append,$relative_image_creation_width,$relative_image_creation_height,$fixed_image_creation,$fixed_path_from_filemanager,$fixed_image_creation_name_to_prepend,$fixed_image_creation_to_append,$fixed_image_creation_width,$fixed_image_creation_height);
} catch (Exception $e) {
$src_thumb=$mini_src=$src_thumb_url="";
}
}
$is_img=true;
//check if is smaller than thumb
list($img_width, $img_height, $img_type, $attr)=getimagesize($file_path);
if($img_width<122 && $img_height<91){
$src_thumb=$current_path.$rfm_subfolder.$subdir.$file;
$show_original=true;
}
if($img_width<45 && $img_height<38){
$mini_src=$current_path.$rfm_subfolder.$subdir.$file;
$mini_src_url= $base_url.$upload_dir.$rfm_subfolder.$subdir.$file;
$show_original_mini=true;
}
}
$is_icon_thumb=false;
$is_icon_thumb_mini=false;
$no_thumb=false;
if($src_thumb==""){
$no_thumb=true;
if(file_exists('img/'.$icon_theme.'/'.$extension_lower.".jpg")){
$src_thumb ='img/'.$icon_theme.'/'.$extension_lower.".jpg";
}else{
$src_thumb = "img/".$icon_theme."/default.jpg";
}
$src_thumb_url = $base_url . $filemanager_dir . $src_thumb;
$is_icon_thumb=true;
}
if($mini_src==""){
$is_icon_thumb_mini=false;
}
$class_ext=0;
if (in_array($extension_lower, $ext_video)) {
$class_ext = 4;
$is_video=true;
}elseif (in_array($extension_lower, $ext_img)) {
$class_ext = 2;
}elseif (in_array($extension_lower, $ext_music)) {
$class_ext = 5;
$is_audio=true;
}elseif (in_array($extension_lower, $ext_misc)) {
$class_ext = 3;
}else{
$class_ext = 1;
}
if((!($_GET['type']==1 && !$is_img) && !(($_GET['type']==3 && !$is_video) && ($_GET['type']==3 && !$is_audio))) && $class_ext>0){
?>
<li class="ff-item-type-<?php echo $class_ext; ?> file" data-name="<?php echo $file; ?>"><?php
$file_prevent_rename = false;
$file_prevent_delete = false;
if (isset($filePermissions[$file])) {
if (isset($filePermissions[$file]['prevent_duplicate']) && $filePermissions[$file]['prevent_duplicate']) {
$files_prevent_duplicate[] = $file;
}
$file_prevent_rename = isset($filePermissions[$file]['prevent_rename']) && $filePermissions[$file]['prevent_rename'];
$file_prevent_delete = isset($filePermissions[$file]['prevent_delete']) && $filePermissions[$file]['prevent_delete'];
}
?> <figure data-name="<?php echo $file ?>" data-type="<?php if($is_img){ echo "img"; }else{ echo "file"; } ?>">
<a href="javascript:void('')" class="link" data-file="<?php echo $file; ?>" data-field_id="<?php echo $field_id; ?>" data-function="<?php echo $apply; ?>">
<div class="img-precontainer">
<?php if($is_icon_thumb){ ?><div class="filetype"><?php echo $extension_lower ?></div><?php } ?>
<div class="img-container">
<span></span>
<img alt="<?php echo $filename." thumbnails";?>" class="<?php echo $show_original ? "original" : "" ?> <?php echo $is_icon_thumb ? "icon" : "" ?>" src="<?php echo $src_thumb_url; ?>">
</div>
</div>
<div class="img-precontainer-mini <?php if($is_img) echo 'original-thumb' ?>">
<div class="filetype <?php echo $extension_lower ?> <?php if(!$is_icon_thumb){ echo "hide"; }?>"><?php echo $extension_lower ?></div>
<div class="img-container-mini">
<span></span>
<?php if($mini_src!=""){ ?>
<img alt="<?php echo $filename." thumbnails";?>" class="<?php echo $show_original_mini ? "original" : "" ?> <?php echo $is_icon_thumb_mini ? "icon" : "" ?>" src="<?php echo $mini_src_url; ?>">
<?php } ?>
</div>
</div>
<?php if($is_icon_thumb){ ?>
<div class="cover"></div>
<?php } ?>
</a>
<div class="box">
<h4 class="<?php if($ellipsis_title_after_first_row){ echo "ellipsis"; } ?>"><a href="javascript:void('')" class="link" data-file="<?php echo $file; ?>" data-field_id="<?php echo $field_id; ?>" data-function="<?php echo $apply; ?>">
<?php echo $filename; ?></a> </h4>
</div>
<input type="hidden" class="date" value="<?php echo $file_array['date']; ?>"/>
<input type="hidden" class="size" value="<?php echo $file_array['size'] ?>"/>
<input type="hidden" class="extension" value="<?php echo $extension_lower; ?>"/>
<input type="hidden" class="name" value=""/>
<div class="file-date"><?php echo date(lang_Date_type,$file_array['date'])?></div>
<div class="file-size"><?php echo makeSize($file_array['size'])?></div>
<div class='img-dimension'><?php if($is_img){ echo $img_width."x".$img_height; } ?></div>
<div class='file-extension'><?php echo $extension_lower; ?></div>
<figcaption>
<form action="force_download.php" method="post" class="download-form" id="form<?php echo $nu; ?>">
<input type="hidden" name="path" value="<?php echo $rfm_subfolder.$subdir?>"/>
<input type="hidden" class="name_download" name="name" value="<?php echo $file?>"/>
<a title="<?php echo lang_Download?>" class="tip-right" href="javascript:void('')" onclick="$('#form<?php echo $nu; ?>').submit();"><i class="icon-download"></i></a>
<?php if($is_img && $src_thumb!=""){ ?>
<a class="tip-right preview" title="<?php echo lang_Preview?>" data-url="<?php echo $src;?>" data-toggle="lightbox" href="#previewLightbox"><i class=" icon-eye-open"></i></a>
<?php }elseif(($is_video || $is_audio) && in_array($extension_lower,$jplayer_ext)){ ?>
<a class="tip-right modalAV <?php if($is_audio){ echo "audio"; }else{ echo "video"; } ?>"
title="<?php echo lang_Preview?>" data-url="ajax_calls.php?action=media_preview&title=<?php echo $filename; ?>&file=<?php echo $current_path.$rfm_subfolder.$subdir.$file;; ?>"
href="javascript:void('');" ><i class=" icon-eye-open"></i></a>
<?php }else{ ?>
<a class="preview disabled"><i class="icon-eye-open icon-white"></i></a>
<?php } ?>
<a href="javascript:void('')" class="tip-left edit-button rename-file-paths <?php if($rename_files && !$file_prevent_rename) echo "rename-file"; ?>" title="<?php echo lang_Rename?>" data-path="<?php echo $rfm_subfolder.$subdir .$file; ?>" data-thumb="<?php echo $thumbs_path.$subdir .$file; ?>">
<i class="icon-pencil <?php if(!$rename_files || $file_prevent_rename) echo 'icon-white'; ?>"></i></a>
<a href="javascript:void('')" class="tip-left erase-button <?php if($delete_files && !$file_prevent_delete) echo "delete-file"; ?>" title="<?php echo lang_Erase?>" data-confirm="<?php echo lang_Confirm_del; ?>" data-path="<?php echo $rfm_subfolder.$subdir.$file; ?>" data-thumb="<?php echo $thumbs_path.$subdir .$file; ?>">
<i class="icon-trash <?php if(!$delete_files || $file_prevent_delete) echo 'icon-white'; ?>"></i>
</a>
</form>
</figcaption>
</figure>
</li>
<?php
}
}
?></div>
</ul>
<?php } ?>
</div>
</div>
</div>
<script>
var files_prevent_duplicate = new Array();
<?php
foreach ($files_prevent_duplicate as $key => $value): ?>
files_prevent_duplicate[<?php echo $key;?>] = '<?php echo $value; ?>';
<?php endforeach; ?>
</script>
<!-- lightbox div start -->
<div id="previewLightbox" class="lightbox hide fade" tabindex="-1" role="dialog" aria-hidden="true">
<div class='lightbox-content'>
<img id="full-img" src="">
</div>
</div>
<!-- lightbox div end -->
<!-- loading div start -->
<div id="loading_container" style="display:none;">
<div id="loading" style="background-color:#000; position:fixed; width:100%; height:100%; top:0px; left:0px;z-index:100000"></div>
<img id="loading_animation" src="img/storing_animation.gif" alt="loading" style="z-index:10001; margin-left:-32px; margin-top:-32px; position:fixed; left:50%; top:50%"/>
</div>
<!-- loading div end -->
<!-- player div start -->
<div class="modal hide fade" id="previewAV">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h3><?php echo lang_Preview; ?></h3>
</div>
<div class="modal-body">
<div class="row-fluid body-preview">
</div>
</div>
</div>
<!-- player div end -->
<img id='aviary_img' src='' class="hide"/>
</body>
</html>
<?php } ?>

View File

@@ -0,0 +1,280 @@
<?php
include('config/config.php');
if ($_SESSION['RF']["verify"] != "RESPONSIVEfilemanager") die('forbiden');
include('include/utils.php');
$thumb_pos = strpos($_POST['path_thumb'], $thumbs_base_path);
if ($thumb_pos !=0
|| strpos($_POST['path_thumb'],'../',strlen($thumbs_base_path)+$thumb_pos)!==FALSE
|| strpos($_POST['path'],'/')===0
|| strpos($_POST['path'],'../')!==FALSE
|| strpos($_POST['path'],'./')===0)
{
die('wrong path');
}
$language_file = 'lang/'.$default_language.'.php';
if (isset($_GET['lang']) && $_GET['lang'] != 'undefined' && $_GET['lang']!='')
{
$path_parts = pathinfo($_GET['lang']);
if (is_readable('lang/' .$path_parts['basename']. '.php'))
{
$language_file = 'lang/' .$path_parts['basename']. '.php';
}
}
require_once $language_file;
$base = $current_path;
$path = $current_path.$_POST['path'];
$cycle = TRUE;
$max_cycles = 50;
$i = 0;
while($cycle && $i<$max_cycles)
{
$i++;
if ($path == $base) $cycle=FALSE;
if (file_exists($path."config.php"))
{
require_once($path."config.php");
$cycle = FALSE;
}
$path = fix_dirname($path)."/";
$cycle = FALSE;
}
$path = $current_path.$_POST['path'];
$path_thumb = $_POST['path_thumb'];
if (isset($_POST['name']))
{
$name = $_POST['name'];
if (strpos($name,'../') !== FALSE) die('wrong name');
}
$info = pathinfo($path);
if (isset($info['extension']) && !(isset($_GET['action']) && $_GET['action']=='delete_folder') && !in_array(strtolower($info['extension']), $ext))
{
die('wrong extension');
}
if (isset($_GET['action']))
{
switch($_GET['action'])
{
case 'delete_file':
if ($delete_files){
unlink($path);
if (file_exists($path_thumb)) unlink($path_thumb);
$info=pathinfo($path);
if ($relative_image_creation){
foreach($relative_path_from_current_pos as $k=>$path)
{
if ($path!="" && $path[strlen($path)-1]!="/") $path.="/";
if (file_exists($info['dirname']."/".$path.$relative_image_creation_name_to_prepend[$k].$info['filename'].$relative_image_creation_name_to_append[$k].".".$info['extension']))
{
unlink($info['dirname']."/".$path.$relative_image_creation_name_to_prepend[$k].$info['filename'].$relative_image_creation_name_to_append[$k].".".$info['extension']);
}
}
}
if ($fixed_image_creation)
{
foreach($fixed_path_from_filemanager as $k=>$path)
{
if ($path!="" && $path[strlen($path)-1] != "/") $path.="/";
$base_dir=$path.substr_replace($info['dirname']."/", '', 0, strlen($current_path));
if (file_exists($base_dir.$fixed_image_creation_name_to_prepend[$k].$info['filename'].$fixed_image_creation_to_append[$k].".".$info['extension']))
{
unlink($base_dir.$fixed_image_creation_name_to_prepend[$k].$info['filename'].$fixed_image_creation_to_append[$k].".".$info['extension']);
}
}
}
}
break;
case 'delete_folder':
if ($delete_folders){
if (is_dir($path_thumb))
{
deleteDir($path_thumb);
}
if (is_dir($path))
{
deleteDir($path);
if ($fixed_image_creation)
{
foreach($fixed_path_from_filemanager as $k=>$paths){
if ($paths!="" && $paths[strlen($paths)-1] != "/") $paths.="/";
$base_dir=$paths.substr_replace($path, '', 0, strlen($current_path));
if (is_dir($base_dir)) deleteDir($base_dir);
}
}
}
}
break;
case 'create_folder':
if ($create_folders)
{
create_folder(fix_path($path,$transliteration),fix_path($path_thumb,$transliteration));
}
break;
case 'rename_folder':
if ($rename_folders){
$name=fix_filename($name,$transliteration);
$name=str_replace('.','',$name);
if (!empty($name)){
if (!rename_folder($path,$name,$transliteration)) die(lang_Rename_existing_folder);
rename_folder($path_thumb,$name,$transliteration);
if ($fixed_image_creation){
foreach($fixed_path_from_filemanager as $k=>$paths){
if ($paths!="" && $paths[strlen($paths)-1] != "/") $paths.="/";
$base_dir=$paths.substr_replace($path, '', 0, strlen($current_path));
rename_folder($base_dir,$name,$transliteration);
}
}
}
else {
die(lang_Empty_name);
}
}
break;
case 'rename_file':
if ($rename_files){
$name=fix_filename($name,$transliteration);
if (!empty($name))
{
if (!rename_file($path,$name,$transliteration)) die(lang_Rename_existing_file);
rename_file($path_thumb,$name,$transliteration);
if ($fixed_image_creation)
{
$info=pathinfo($path);
foreach($fixed_path_from_filemanager as $k=>$paths)
{
if ($paths!="" && $paths[strlen($paths)-1] != "/") $paths.="/";
$base_dir = $paths.substr_replace($info['dirname']."/", '', 0, strlen($current_path));
if (file_exists($base_dir.$fixed_image_creation_name_to_prepend[$k].$info['filename'].$fixed_image_creation_to_append[$k].".".$info['extension']))
{
rename_file($base_dir.$fixed_image_creation_name_to_prepend[$k].$info['filename'].$fixed_image_creation_to_append[$k].".".$info['extension'],$fixed_image_creation_name_to_prepend[$k].$name.$fixed_image_creation_to_append[$k],$transliteration);
}
}
}
}
else {
die(lang_Empty_name);
}
}
break;
case 'duplicate_file':
if ($duplicate_files)
{
$name = fix_filename($name,$transliteration);
if (!empty($name))
{
if (!duplicate_file($path,$name)) die(lang_Rename_existing_file);
duplicate_file($path_thumb,$name);
if ($fixed_image_creation)
{
$info=pathinfo($path);
foreach($fixed_path_from_filemanager as $k=>$paths)
{
if ($paths!="" && $paths[strlen($paths)-1] != "/") $paths.= "/";
$base_dir=$paths.substr_replace($info['dirname']."/", '', 0, strlen($current_path));
if (file_exists($base_dir.$fixed_image_creation_name_to_prepend[$k].$info['filename'].$fixed_image_creation_to_append[$k].".".$info['extension']))
{
duplicate_file($base_dir.$fixed_image_creation_name_to_prepend[$k].$info['filename'].$fixed_image_creation_to_append[$k].".".$info['extension'],$fixed_image_creation_name_to_prepend[$k].$name.$fixed_image_creation_to_append[$k]);
}
}
}
}
else
{
die(lang_Empty_name);
}
}
break;
case 'paste_clipboard':
if ( ! isset($_SESSION['RF']['clipboard_action'], $_SESSION['RF']['clipboard']['path'], $_SESSION['RF']['clipboard']['path_thumb'])
|| $_SESSION['RF']['clipboard_action'] == ''
|| $_SESSION['RF']['clipboard']['path'] == ''
|| $_SESSION['RF']['clipboard']['path_thumb'] == '')
{
die();
}
$action = $_SESSION['RF']['clipboard_action'];
$data = $_SESSION['RF']['clipboard'];
$data['path'] = $current_path.$data['path'];
$pinfo = pathinfo($data['path']);
// user wants to paste to the same dir. nothing to do here...
if ($pinfo['dirname'] == rtrim($path, '/')) {
die();
}
// user wants to paste folder to it's own sub folder.. baaaah.
if (is_dir($data['path']) && strpos($path, $data['path']) !== FALSE){
die();
}
// something terribly gone wrong
if ($action != 'copy' && $action != 'cut'){
die('no action');
}
// check for writability
if (is_really_writable($path) === FALSE || is_really_writable($path_thumb) === FALSE){
die($path.'--'.$path_thumb.'--'.lang_Dir_No_Write);
}
// check if server disables copy or rename
if (is_function_callable(($action == 'copy' ? 'copy' : 'rename')) === FALSE){
die(sprintf(lang_Function_Disabled, ($action == 'copy' ? lcfirst(lang_Copy) : lcfirst(lang_Cut))));
}
if ($action == 'copy')
{
rcopy($data['path'], $path);
rcopy($data['path_thumb'], $path_thumb);
}
elseif ($action == 'cut')
{
rrename($data['path'], $path);
rrename($data['path_thumb'], $path_thumb);
// cleanup
if (is_dir($data['path']) === TRUE){
rrename_after_cleaner($data['path']);
rrename_after_cleaner($data['path_thumb']);
}
}
// cleanup
$_SESSION['RF']['clipboard']['path'] = NULL;
$_SESSION['RF']['clipboard']['path_thumb'] = NULL;
$_SESSION['RF']['clipboard_action'] = NULL;
break;
default:
die('wrong action');
}
}
?>

View File

@@ -0,0 +1,30 @@
<?php
include('config/config.php');
if($_SESSION['RF']["verify"] != "RESPONSIVEfilemanager") die('forbiden');
include('include/utils.php');
if(strpos($_POST['path'],'/')===0
|| strpos($_POST['path'],'../')!==FALSE
|| strpos($_POST['path'],'./')===0)
die('wrong path');
if(strpos($_POST['name'],'/')!==FALSE)
die('wrong path');
$path=$current_path.$_POST['path'];
$name=$_POST['name'];
$info=pathinfo($name);
if(!in_array(fix_strtolower($info['extension']), $ext)){
die('wrong extension');
}
header('Pragma: private');
header('Cache-control: private, must-revalidate');
header("Content-Type: application/octet-stream");
header("Content-Length: " .(string)(filesize($path.$name)) );
header('Content-Disposition: attachment; filename="'.($name).'"');
readfile($path.$name);
exit;
?>

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 412 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Some files were not shown because too many files have changed in this diff Show More