Example #1
0
 public function init()
 {
     if ((isset($_GET['cms_visual_edit']) || isset($_SESSION['visual_edit'])) && Users::getInstance()->isLogged() && Settings::get('enable_visual_edit')) {
         self::$enabled = true;
         $_SESSION['visual_edit'] = true;
     }
 }
Example #2
0
 /**
  * @return $this
  */
 protected function beforeSave()
 {
     $can_set_permission = 0;
     // If user is super-admin with all privileges granted
     if ($this->is_superadmin) {
         $can_set_permission = 1;
     }
     // If current group is allowed to set permissions
     if ($this->getField('can_set_permissions') && Users::getInstance()->getGroupData('can_set_permissions')) {
         $can_set_permission = 1;
     }
     $this->setCanSetPermissions($can_set_permission);
     return $this;
 }
 private function init_data()
 {
     if (Settings::getInstance()->get('disable_cms_translations')) {
         return;
         // No translations
     }
     $data = [];
     foreach (Finder::getInstance()->getPathFolders(Finder::TYPE_TRANSLATIONS) as $file) {
         $file_path = $file . Users::getInstance()->getUserLng() . '.php';
         if (stripos($file_path, DIR_BASE) === false) {
             $file_path = DIR_BASE . $file_path;
         }
         if (file_exists($file_path)) {
             $data += (require_once $file_path);
         }
     }
     self::$init_data = $data;
 }
Example #4
0
 private function generateContent()
 {
     ob_start();
     // Requesting P page
     $method = false;
     $call_object = false;
     // Find in classes under Vendor - Modules
     $real_class = Converter::to_camel_case(P);
     $class = '\\TMCms\\Modules\\' . $real_class . '\\Cms' . $real_class;
     if (!class_exists($class)) {
         // Not vendor module - check main CMS admin object
         $class = '\\TMCms\\Admin\\' . $real_class . '\\Cms' . $real_class;
         $call_object = true;
         if (!class_exists($class)) {
             // Search for exclusive module CMS pages created in Project folder for this individual site
             $file_path = DIR_MODULES . strtolower($real_class) . '/' . 'Cms' . $real_class . '.php';
             if (file_exists($file_path)) {
                 require_once $file_path;
                 // Check for module itself
                 $file_path = DIR_MODULES . strtolower($real_class) . '/' . 'Module' . $real_class . '.php';
                 if (file_exists($file_path)) {
                     require_once $file_path;
                 }
                 // Require all objects class files
                 $objects_path = DIR_MODULES . strtolower($real_class) . '/Entity/';
                 if (file_exists($objects_path)) {
                     foreach (array_diff(scandir($objects_path), ['.', '..']) as $object_file) {
                         require_once $objects_path . $object_file;
                     }
                 }
                 // CmsClass
                 $real_class = Converter::to_camel_case(P);
                 $class = '\\TMCms\\Modules\\' . $real_class . '\\Cms' . $real_class;
             }
         }
     }
     // Try autoload PSR-0 or PSR-4
     if (!class_exists($class)) {
         $class = 'TMCms\\Modules\\' . $real_class . '\\Cms' . $real_class;
     }
     // Try to find the right directory of requested class
     if (!class_exists($class)) {
         $class_name = 'Cms' . $real_class;
         $directory_iterator = new RecursiveDirectoryIterator(DIR_MODULES);
         $iterator = new RecursiveIteratorIterator($directory_iterator);
         foreach ($iterator as $file) {
             if ($file->getFilename() == $class_name . '.php') {
                 $module_path = $file->getPathInfo()->getPathName();
                 $module_name = $file->getPathInfo()->getFilename();
                 $module_directory_iterator = new RecursiveDirectoryIterator($module_path);
                 $module_iterator = new RecursiveIteratorIterator($module_directory_iterator);
                 foreach ($module_iterator as $module_file) {
                     $module_file_directory = $module_file->getPathInfo()->getFilename();
                     $module_file_name = $module_file->getFileName();
                     if (!in_array($module_file_name, ['.', '..']) and in_array($module_file_directory, [$module_name, 'Entity'])) {
                         require_once $module_file->getPathName();
                     }
                 }
                 $class = implode('\\', ['\\TMCms', 'Modules', $module_name, $class_name]);
                 break;
             }
         }
     }
     // Still no class
     if (!class_exists($class)) {
         dump('Requested class "' . $class . '" not found');
     }
     // Check existence of requested method
     if (class_exists($class)) {
         $call_object = true;
         // Check requested method exists or set default
         if (method_exists($class, P_DO)) {
             $method = P_DO;
         } else {
             $method = '_default';
         }
         // Final check we have anything to run
         if (!method_exists($class, $method)) {
             dump('Method "' . $method . '" not found in class "' . $class . '"');
         }
     }
     // Check user's permission
     if (!Users::getInstance()->checkAccess(P, $method)) {
         error('You do not have permissions to access this page ("' . P . ' - ' . $method . '")');
         die;
     }
     // Call required method
     if ($call_object) {
         $obj = new $class();
         $obj->{$method}();
     } else {
         call_user_func([$class, $method]);
     }
     $this->content = ob_get_clean();
 }
Example #5
0
<?php

defined('INC') or exit;
use TMCms\Admin\Users;
use TMCms\Log\App;
Users::getInstance()->deleteSession($_SESSION['admin_id']);
App::add('User "' . $_SESSION['admin_login'] . '" logged out');
$_SESSION['admin_logged'] = false;
$_SESSION['admin_id'] = false;
$_SESSION['admin_login'] = false;
$_SESSION['admin_super'] = false;
$_SESSION['admin_sid'] = false;
go(DIR_CMS_URL);
Example #6
0
    /**
     * Main view
     */
    public function _default()
    {
        // We can show only files if user is locked to current folder
        $files_only = isset($_GET['files_only']);
        // We can set range of allowed file extensions to be uploaded
        $allowed_extensions = isset($_GET['allowed_extensions']) ? explode(',', $_GET['allowed_extensions']) : [];
        // If page is shown in modal widow
        if (IS_AJAX_REQUEST) {
            ob_start();
        }
        // Directory to be shown is supplied from url
        $dir = isset($_GET['path']) ? $_GET['path'] : NULL;
        // Maybe user hav access only to public folder, so we have to check and change folder
        if (Users::getInstance()->getGroupData('filemanager_limited') && stripos($dir, DIR_PUBLIC_URL) === false) {
            $dir = DIR_PUBLIC_URL;
        }
        // If no dir - set default directory for public files
        if (!$dir) {
            $dir = DIR_PUBLIC_URL;
        }
        // Check that we have no slash as first symbol
        if ($dir[0] === '/') {
            $dir = substr($dir, 1);
        }
        // Create requested directory if not exists
        if (!file_exists(DIR_BASE . $dir)) {
            FileSystem::mkDir(DIR_BASE . $dir);
        }
        // Create list of folders and files in requested location
        $file_list = $dir_list = [];
        foreach (array_diff(scandir(DIR_BASE . $dir), ['.', '..']) as $v) {
            $p = $dir . $v;
            if (is_dir(DIR_BASE . $p)) {
                $dir_list[] = $p . '/';
            } else {
                $file_list[] = $p;
            }
        }
        // Generate path to upper folder
        $tmp = [];
        $path_up = explode('/', $dir);
        foreach ($path_up as $v) {
            if ($v) {
                $tmp[] = $v;
            }
        }
        $path_up = $tmp;
        array_pop($path_up);
        $path_up = '/' . implode('/', $path_up) . '/';
        // Show current path and generate links on page parts
        $path_links = [];
        $tmp = '/';
        foreach (explode('/', $dir) as $v) {
            if (trim($v) == '') {
                continue;
            }
            $tmp .= $v . '/';
            $path_links[] = '<a onclick="filemanager_helpers.loadDirectory(this); return false;" href="?p=' . P . '&nomenu&path=' . $tmp . '">' . $v . '</a>';
        }
        // Show top bar if we are allowed to view folders
        if (!$files_only) {
            ?>
            <!--suppress JSUnresolvedFunction -->
            <div style="padding: 10px; position: relative">
                <a onclick="filemanager_helpers.show_create_directory(); return false;" href="?p=<?php 
            echo P;
            ?>
&do=create_directory&nomenu&path=<?php 
            echo $dir;
            ?>
">Create directory</a>
                &nbsp;&nbsp;|&nbsp;&nbsp;
                <a href="?p=<?php 
            echo P;
            ?>
&do=filemanager&nomenu&path=<?php 
            echo $path_up;
            ?>
" onclick="filemanager_helpers.loadDirectory(this); return false;">Go up</a>
                &nbsp;&nbsp;|&nbsp;&nbsp;
                Current path: /<?php 
            echo implode('/', $path_links);
            ?>
                <hr>
                <a onclick="filemanager_helpers.show_create_file(); return false;" href="?p=<?php 
            echo P;
            ?>
&do=create_file&nomenu&path=<?php 
            echo $dir;
            ?>
">Create file</a>
                &nbsp;&nbsp;|&nbsp;&nbsp;
                Filter by name&nbsp;&nbsp;<input type="text" id="filter_name" placeholder="File or folder name">
                <hr>
                <span id="multiple_commands">
                    <var onclick="multiple.download(this)"><?php 
            echo __('Download');
            ?>
</var>
                    &nbsp;&nbsp;
                    <var onclick="if (confirm('<?php 
            echo __('Are you sure?');
            ?>
')) multiple.delete_files()"><?php 
            echo __('Delete');
            ?>
</var>
                    &nbsp;&nbsp;
                    <var onclick="multiple.copy(this)"><?php 
            echo __('Copy');
            ?>
</var>
                    &nbsp;&nbsp;
                    <var id="multiple_paste" style="display:none;" onclick="multiple.paste(this)"><?php 
            echo __('Paste');
            ?>
</var>
                </span>
                <hr>
                <div style="position: absolute; top: 0; right: 0; width: 300px; z-index: 10">
                    <img width="300" id="filemanager_current_image" style="display: none" src="<?php 
            echo DIR_CMS_IMAGES_URL;
            ?>
_.gif">
                </div>
            </div>
        <?php 
        }
        ?>

        <div style="min-height: 350px; overflow-y: auto; padding: 10px" id="file_list_zone">
            <table cellspacing="0" cellpadding="0" style="line-height:20px">
                <?php 
        if (!$files_only) {
            ?>
                    <tr>
                        <td width="100%"></td>
                        <td></td>
                        <td width="75"></td>
                        <td width="30"></td>
                    </tr>
                    <tr>
                        <td colspan="5">Folders:</td>
                    </tr>
                    <?php 
            foreach ($dir_list as $k => $v) {
                ?>
                        <?php 
                if ($v[0] != '/') {
                    $v = '/' . $v;
                }
                ?>
                        <tr class="bg_mouseover toggle_checkbox">
                            <td>
                                <input class="cb_hide" type="checkbox" name="<?php 
                echo $v;
                ?>
" value="">
                                &nbsp;
                                <a class="dir_context" href="?p=<?php 
                echo P;
                ?>
&do=filemanager&nomenu&path=<?php 
                echo $v;
                ?>
" onclick="return setSelectedToInput(this);" data-path="<?php 
                echo $v;
                ?>
" ondblclick="filemanager_helpers.loadDirectory(this); return false;" data-name="<?php 
                echo basename($v);
                ?>
"><?php 
                echo basename($v);
                ?>
</a>
                            </td>
                            <td></td>
                            <td></td>
                            <td align="center">
                                <a href="?p=<?php 
                echo P;
                ?>
&do=_delete&path=<?php 
                echo $v;
                ?>
" onclick="filemanager_helpers.delete_files('<?php 
                echo $v;
                ?>
'); return false;">x</a>
                            </td>
                        </tr>
                    <?php 
            }
            ?>
                    <tr>
                        <td colspan="5">&nbsp;</td>
                    </tr>
                <?php 
        }
        ?>
                <tr>
                    <td colspan="5">Files:</td>
                </tr>
                <?php 
        foreach ($file_list as $k => $v) {
            // Need to have slash in name to set absolute paths
            if ($v[0] != '/') {
                $v = '/' . $v;
            }
            // Check special file type to show context menu
            $ext = strtolower(pathinfo($v, PATHINFO_EXTENSION));
            $type_by_extension = '';
            if (in_array($ext, ['txt', 'html', 'php', 'js', 'htaccess', 'css', ''])) {
                $type_by_extension = '_text';
            } elseif (in_array(strtolower($ext), ['bmp', 'jpg', 'png', 'jpeg', 'gif'])) {
                $type_by_extension = '_img';
            } elseif (in_array(strtolower($ext), ['zip'])) {
                $type_by_extension = '_archive';
            }
            ?>
                    <tr class="bg_mouseover toggle_checkbox">
                        <td>
                            <input class="cb_hide" type="checkbox" name="<?php 
            echo $v;
            ?>
" value="">
                            &nbsp;
                            <a class="file_context<?php 
            echo $type_by_extension;
            ?>
" href="" onclick="return setSelectedToInput(this);" data-path="<?php 
            echo $v;
            ?>
" ondblclick="done();"
                                <?php 
            if ($type_by_extension == '_img') {
                ?>
                                    onmouseover="$('#filemanager_current_image').attr('src', '<?php 
                echo $v;
                ?>
').show()"
                                    onmouseout="$('#filemanager_current_image').attr('src', '<?php 
                echo DIR_CMS_IMAGES_URL;
                ?>
_.gif').hide()"
                                <?php 
            }
            ?>
                                data-name="<?php 
            echo basename($v);
            ?>
"><?php 
            echo basename($v);
            ?>
</a>
                        </td>
                        <td></td>
                        <td><?php 
            echo Converter::formatDataSize(filesize(DIR_BASE . $v));
            ?>
</td>
                        <td align="center">
                            <a href="?p=<?php 
            echo P;
            ?>
&do=_delete&path=<?php 
            echo $v;
            ?>
" onclick="filemanager_helpers.delete_files('<?php 
            echo $v;
            ?>
'); return false;">x</a>
                        </td>
                    </tr>
                <?php 
        }
        ?>
            </table>




            <?php 
        if ($files_only) {
            // Stop further rendering if we can locked to see only files
            echo ob_get_clean();
            die;
        }
        ?>
        </div>
        <br>
        <div style="margin: auto 5px">
        <?php 
        // Simple upload form
        echo CmsForm::getInstance()->addField('Selected file (<a href="" onclick="done(); return false">Set</a>)', CmsInputText::getInstance('filename')->disableBackupBlock()->enableReadOnly());
        ?>
        </div>
        <?php 
        // Get maximum allowed size of chunk of uploaded file
        $max_upload_file = $max_post = Converter::formatIniSize(ini_get('post_max_size'));
        $max_upload = Converter::formatIniSize(ini_get('upload_max_filesize'));
        if ($max_upload < $max_upload_file) {
            $max_upload_file = $max_upload;
        }
        // Modern upload form with multiple file selects and large file uploads
        $upload_form = CmsForm::getInstance()->setSubmitButton(CmsButton::getInstance('Upload')->setElementIdAttribute('upload_files'))->setEnctype(CmsForm::ENCTYPE_MULTIPART)->setAction('?p=' . P . '&do=_upload')->addField('Upload files', CmsHtml::getInstance('file')->enableMultiple()->setValue('
        <div id="filelist">
            <input id="file" type="file" name="file[]" class="form-control" multiple="">
        </div>
        <div id="container">
            <a id="pickfiles" href="javascript:;" style="display: block; letter-spacing: 3px; padding-top: 15px; height: 50px; font-size: 13px; text-align: center; border: 1px solid black">Click to select files, or drag files here</a>
        </div>
        <pre id="console" style="display: none"></pre>'))->addField('Extract .zip files', CmsCheckbox::getInstance('extract')->setIsChecked())->addField('If file exists', CmsRadioBox::getInstance('exists')->setRadioButtons(['skip' => 'Skip upload', 'overwrite' => 'Overwrite', 'rename' => 'Make new name'])->setSelected('skip'));
        // Render textarea with form
        echo $upload_form;
        ?>

        <script>
            // Choose folder or file
            function setSelectedToInput(link) {
                $('a[data-path="' + link.getAttribute('data-path') + '"')
                    .parents('#modal-popup_inner')
                    .find('#filename')
                    .val(link.getAttribute('data-path'));

                return false;
            }
            // Set value in opener and close window
            function done() {
                var filenameInput = $('#filename'),
                    modalWindow = filenameInput.parents('#modal-popup_inner');

                modalWindow.trigger('popup:return_result', [filenameInput.val()]);
                modalWindow.trigger('popup:close');
            }

            // Main Container
            var _ = {
                con: {
                    close: function () {
                        $('#con_bg_in').hide().width(400).height(200).css('margin-left', -200);
                        $('#con_bg, #con_bg_in, #con_rename, #con_file_create, #con_dir_create').hide();
                    },
                    open: function () {
                        var $w = $(window);
                        var w_h = $w.height();
                        $('#con_bg').show().width('100%').height(w_h);
                        $('#con_bg_in').show();
                    }
                }
            };

            // Bind checkbox events
            function events_on_checkboxes() {
                // Checkboxes toggle
                $('.toggle_checkbox input').change(function () {
                    var $container = $('#multiple_commands');
                    if ($('.toggle_checkbox input:checked').length > 0) {
                        $container.show();
                    } else {
                        $container.hide();
                    }
                });

                $('#con_bg').click(function () {
                    _.con.close();
                });
            }
            events_on_checkboxes();

            // Filter by name
            $('#filter_name').focus().keyup(function (el) {
                var value = el.target.value;
                if (!value.length) {
                    $('a[data-name').closest('tr').show();
                } else {
                    $('a[data-name').closest('tr').hide();
                }

                $('a[data-name*="' + value + '"]').closest('tr').show();
            });

            // Actions with multiple selected items
            var multiple = {
                // Start storage
                init: function () {
                    var storage = this.getLocalStorage();
                    var items_copy = storage.get('multiple_copy_items');

                    if (items_copy) {
                        $('#multiple_paste').show();
                    }
                },
                // Get list of selected items
                get_selected_item_sources: function () {
                    var items = [];
                    $('.toggle_checkbox input:checked').each(function (k, v) {
                        items.push($(v).attr('name'));
                    });
                    return items;
                },
                // Show / hide available button
                toggleButton: function (el) {
                    $(el).stop().fadeOut('fast', function () {
                        $(el).fadeIn('fast');
                    });
                },
                getLocalStorage: function () {
                    return new Storage('filemanager_multiple');
                },
                // Delete files from server
                delete_files: function () {
                    var items = this.get_selected_item_sources();

                    $.post('?p=filemanager&nomenu&do=_multiple_delete&ajax' + Date.now(),
                        {pathes: items},
                        function () {
                            filemanager_helpers.reloadFiles();
                        });
                },
                // Delete files from server
                download: function () {
                    var items = this.get_selected_item_sources();

                    $.post('?p=filemanager&nomenu&do=_multiple_download&ajax' + Date.now(),
                        {pathes: items},
                        function (link) {
                            location.href = link;
                        });
                },
                // Copy selected items
                copy: function (el) {
                    // Save item paths into buffer
                    var items = this.get_selected_item_sources();
                    var storage = this.getLocalStorage();
                    storage.set('multiple_copy_items', items);
                    this.toggleButton(el);
                    this.init();
                },
                // Paste (create copied)
                paste: function (el) {
                    var storage = this.getLocalStorage();

                    // Check copied items
                    var items = storage.get('multiple_copy_items');
                    if (items) {
                        $.get('?p=filemanager&nomenu&do=_multiple_copy&ajax' + Date.now(),
                            {pathes: items, current_path: '<?php 
        echo $dir;
        ?>
'},
                            function () {
                                filemanager_helpers.reloadFiles();
                            }
                        );
                    }
                    this.toggleButton(el);
                }
            };
            multiple.init();

            // File uploader plugin with chunk upload possibility, drag and drop, and multiple selectes
            var uploader = new plupload.Uploader({
                runtimes: 'html5,flash,silverlight,html4',
                browse_button: 'pickfiles',
                max_retries: 3,
                chunk_size: '<?php 
        echo $max_upload_file;
        ?>
',
                container: document.getElementById('container'),
                drop_element: document.getElementById('container'),
                url: "?p=<?php 
        echo P;
        ?>
&do=_upload_multiple&path=<?php 
        echo $dir;
        ?>
&allowed_extensions=<?php 
        echo implode(',', $allowed_extensions);
        ?>
",

                // Flash settings
                flash_swf_url: '<?php 
        echo DIR_CMS_SCRIPTS_URL;
        ?>
plupload/Moxie.swf',

                // Silverlight settings
                silverlight_xap_url: '<?php 
        echo DIR_CMS_SCRIPTS_URL;
        ?>
plupload/Moxie.xap',

                init: {
                    PostInit: function () {
                        document.getElementById('filelist').innerHTML = '';

                        document.getElementById('upload_files').onclick = function () {
                            uploader.start();
                            return false;
                        };
                    },

                    FilesAdded: function (up, files) {
                        plupload.each(files, function (file) {
                            document.getElementById('filelist').innerHTML += '<div onclick="filemanager_helpers.removeFile(\''+ file.id +'\')" style="cursor: no-drop" id="' + file.id + '"><var id="deleteFile' + file.id + '">X</var>&nbsp;&nbsp;&nbsp; ' + file.name + ' (' + plupload.formatSize(file.size) + ') <b></b></div>';
                            filemanager_helpers.upload_object = up;
                            filemanager_helpers.file_handlers[file.id] = file;
                        });
                    },

                    UploadProgress: function (up, file) {
                        document.getElementById(file.id).getElementsByTagName('b')[0].innerHTML = '<span style="float: right; color: #fff; text-align: center; display: inline-block; width: 100px"><span style="background: green; width: '+ file.percent +'%; display: inline-block">' + file.percent + "%</span></span>";
                    },

                    Error: function (up, err) {
                        document.getElementById('console').style.display = 'block';
                        document.getElementById('console').innerHTML += "\nError #" + err.code + ": " + err.message;
                    },

                    UploadComplete: function () { // (up, err)
                        filemanager_helpers.reloadFiles();
                    },

                    BeforeUpload: function () { // (up, err)
                        uploader.setOption('url', "?p=<?php 
        echo P;
        ?>
&do=_upload_multiple&path=<?php 
        echo $dir;
        ?>
&allowed_extensions=<?php 
        echo implode(',', $allowed_extensions);
        ?>
&exists=" + $('input[name=exists]:checked').val() + '&extract=' + $('input[name=extract]:checked').length + '&cache=<?php 
        echo NOW;
        ?>
');
                    }
                }
            });

            // Helper function for uploader plugin
            var filemanager_helpers = {
                upload_object: null,
                file_handlers: {},
                removeFile: function(file_id) {
                    var file = filemanager_helpers.file_handlers[file_id];
                    filemanager_helpers.upload_object.removeFile(file);
                    $("#" + file_id).remove();
                },
                reloadFiles: function() {
                    $('#file_list_zone').load(filemanager_helpers.current_url + '&files_only');
                    setTimeout(function() {
                        events_on_checkboxes();
                        ajax_toasters.request_new_messages();
                        filemanager_helpers.reinit_context_menues();
                    }, 100);
                },
                current_url: '<?php 
        echo SELF;
        ?>
',
                loadDirectory: function (link) {
                    // From CKEditor - in separate window
                    if ('<?php 
        echo (int) isset($_GET['CKEditor']);
        ?>
' == '1') {
                        window.location.href = link.href + '&CKEditor=<?php 
        echo isset($_GET['CKEditor']) ? $_GET['CKEditor'] : '';
        ?>
&CKEditorFuncNum=<?php 
        echo isset($_GET['CKEditorFuncNum']) ? $_GET['CKEditorFuncNum'] : '';
        ?>
&langCode=<?php 
        echo isset($_GET['langCode']) ? $_GET['langCode'] : '';
        ?>
';
                    } else {
                        // Ajax
                        filemanager_helpers.current_url = link.href;
                        $(link).parents('#modal-popup_inner').trigger('popup:load_content', [link.href]);
                    }

                    return false;
                },
                show_create_directory: function() {
                    _.con.open();
                    $('#con_file_create').hide();
                    $('#con_dir_create').show();
                },
                show_create_file: function() {
                    _.con.open();
                    $('#con_dir_create').hide();
                    $('#con_file_create').show();
                },
                delete_files: function(path) {
                    if (!confirm('<?php 
        echo __('Are you sure?');
        ?>
')) return false;

                    $.get("?p=<?php 
        echo P;
        ?>
&do=_delete&path="+ path, {
                        'path': path
                    }, function () {
                        filemanager_helpers.reloadFiles();
                    });
                },
                reinit_context_menues: function() {
                    // Move all contextMenues to the BODY element - to calculate proper CSS
                    if ($('body > .contextMenu').length < 1) {
                        $('.contextMenu').appendTo(document.body);
                    } else {
                        // Delete new from ajaxed data
                        $('.contextMenu').not('body > .contextMenu').remove();
                    }
                }
            };

            uploader.init();
            filemanager_helpers.reinit_context_menues();
        </script><?php 
        if (IS_AJAX_REQUEST) {
            echo ob_get_clean();
            die;
        }
    }
Example #7
0
 /**
  * After that user is logged-in
  * @param AdminUser $user
  * @return string session id
  */
 public function setUserLoggedIn($user)
 {
     $_SESSION['admin_logged'] = true;
     $_SESSION['admin_id'] = $user->getId();
     $_SESSION['admin_login'] = $user->getLogin();
     $_SESSION['admin_sid'] = Users::getInstance()->startSession($user->getId());
     if (!defined('USER_ID')) {
         define('USER_ID', $user->getId());
     }
     App::add('User "' . $user->getLogin() . '" logged in.');
 }
Example #8
0
    /**
     * Get top page header
     * @return string
     */
    public function getMenuHeaderView()
    {
        if (!defined('USER_ID') || !USER_ID) {
            return '';
        }
        ob_start();
        // Notifications from system
        $notification_repository = new UsersMessageEntityRepository();
        $notification_repository->setWhereToUserId(USER_ID);
        $notification_repository->setWhereFromUserId(0);
        $notification_repository->addOrderByField('ts', true);
        $notification_repository->setWhereSeen(0);
        $total_notifications = $notification_repository->getCountOfObjectsInCollection();
        $notification_repository->setLimit(10);
        $notifications = $notification_repository->getAsArrayOfObjects();
        // Messages from users
        $messages_repository = new UsersMessageEntityRepository();
        $messages_repository->setWhereToUserId(USER_ID);
        $messages_repository->addWhereFieldIsNot('from_user_id', 0);
        $messages_repository->addOrderByField('ts', true);
        $messages_repository->setWhereSeen(0);
        $total_messages = $messages_repository->getCountOfObjectsInCollection();
        $messages_repository->setLimit(10);
        $messages = $messages_repository->getAsArrayOfObjects();
        // Custom notifiers
        // TODO
        $custom_notifiers = [];
        $custom_notifiers[] = $this->getHelpTextsNotifier();
        // Logo image and link
        $logo = '';
        if (array_key_exists('logo', Configuration::getInstance()->get('cms'))) {
            $logo = Configuration::getInstance()->get('cms')['logo'];
        }
        $logo_link = DIR_CMS_URL;
        if (array_key_exists('logo_link', Configuration::getInstance()->get('cms'))) {
            $logo_link = Configuration::getInstance()->get('cms')['logo_link'];
        }
        $user_avatar = Users::getInstance()->getUserData('avatar');
        if (!$user_avatar) {
            $user_avatar = '/vendor/devp-eu/tmcms-core/src/assets/cms/layout/img/avatar.png';
        }
        $languages = AdminLanguages::getPairs();
        $current_language = Users::getInstance()->getUserLng();
        ?>
        <div class="page-header-inner">
            <?php 
        if ($logo) {
            ?>
                <div class="page-logo">
                    <a href="<?php 
            echo $logo_link;
            ?>
">
                        <img src="<?php 
            echo $logo;
            ?>
" alt="logo" class="logo-default">
                    </a>
                    <div class="menu-toggler sidebar-toggler"></div>
                </div>
            <?php 
        }
        ?>
            <a href="javascript:;" class="menu-toggler responsive-toggler" data-toggle="collapse" data-target=".navbar-collapse"></a>
            <div class="top-menu">
                <ul class="nav navbar-nav pull-right">
                    <li class="dropdown dropdown-extended dropdown-home" id="header_home_bar">
                        <a href="/" target="_blank" class="dropdown-toggle" data-hover="dropdown" data-close-others="true">
                            <i class="icon-home"></i>
                        </a>
                    </li>
                    <?php 
        if (count($languages) > 1) {
            ?>
                        <li class="dropdown dropdown-language">
                            <a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">
                                <img alt="" src="/vendor/devp-eu/tmcms-core/src/assets/cms/img/flags/<?php 
            echo LNG;
            ?>
.png">
                                <span class="langname"><?php 
            echo strtoupper(LNG);
            ?>
 </span>
                                <i class="fa fa-angle-down"></i>
                            </a>
                            <ul class="dropdown-menu">
                                <?php 
            foreach ($languages as $k => $v) {
                if ($k == LNG) {
                    continue;
                }
                ?>
                                <li>
                                    <a href="?p=users&do=_change_lng&lng=<?php 
                echo $k;
                ?>
">
                                        <img alt="" src="/vendor/devp-eu/tmcms-core/src/assets/cms/img/flags/<?php 
                echo $k;
                ?>
.png"> <?php 
                echo $v;
                ?>
                                    </a>
                                </li>
                                <?php 
            }
            ?>
                            </ul>
                        </li>
                    <?php 
        }
        ?>
                    <?php 
        if ($notifications) {
            ?>
                        <li class="dropdown dropdown-extended dropdown-notification" id="header_notification_bar">
                            <a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">
                                <i class="icon-bell"></i>
                                <span class="badge badge-default"><?php 
            echo count($notifications);
            ?>
</span>
                            </a>
                            <ul class="dropdown-menu">
                                <li>
                                    <p>
                                        You have <?php 
            echo $total_notifications;
            ?>
 new notifications
                                    </p>
                                </li>
                                <li>
                                    <ul class="dropdown-menu-list scroller" style="height: 250px;">
                                        <?php 
            foreach ($notifications as $k => $message) {
                /** @var UsersMessageEntity $message */
                ?>
                                            <li>
                                                <a href="#">
                                                    <span class="label label-sm label-icon label-warning">
                                                        <i class="fa fa-bell-o"></i>
                                                    </span>
                                                    <?php 
                echo $message->getMessage();
                ?>
                                                    <span class="time">
                                                        <?php 
                echo Converter::getTimeFromEventAgo($message->getTs());
                ?>
                                                    </span>
                                                </a>
                                            </li>
                                        <?php 
            }
            ?>
                                    </ul>
                                </li>
                                <li class="external">
                                    <a href="?p=home&do=notifications">
                                        See all notifications <i class="m-icon-swapright"></i>
                                    </a>
                                </li>
                            </ul>
                        </li>
                    <?php 
        }
        ?>
                    <?php 
        if ($messages) {
            ?>
                        <li class="dropdown dropdown-extended dropdown-inbox" id="header_inbox_bar">
                            <a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">
                                <i class="icon-envelope-open"></i>
                                <span class="badge badge-default"><?php 
            echo count($messages);
            ?>
</span>
                            </a>
                            <ul class="dropdown-menu">
                                <li>
                                    <p>
                                        You have <?php 
            echo $total_messages;
            ?>
 new messages
                                    </p>
                                </li>
                                <li>
                                    <ul class="dropdown-menu-list scroller" style="height: 250px;">
                                        <?php 
            foreach ($notifications as $k => $message) {
                /** @var UsersMessageEntity $message */
                $user = new AdminUser($message->getFromUserId());
                $avatar = $user->getAvatar();
                ?>
                                            <li>
                                                <a href="?p=users&do=chat&user_id=2">
                                                    <?php 
                if ($avatar) {
                    ?>
                                                        <span class="photo">
                                                           <img src="<?php 
                    echo $avatar;
                    ?>
" alt="" style="height=40px">
                                                        </span>
                                                    <?php 
                }
                ?>
                                                    <span class="subject">
                                                        <span class="from"><?php 
                echo $user->getName();
                ?>
</span>
                                                        <span class="time"><?php 
                echo Converter::getTimeFromEventAgo($message->getTs());
                ?>
</span>
                                                    </span>
                                                    <span class="message"><?php 
                echo Converter::cutLongStrings($message->getMessage());
                ?>
</span>
                                                </a>
                                            </li>
                                        <?php 
            }
            ?>
                                    </ul>
                                </li>
                                <li class="external">
                                    <a href="?p=users&do=chat">
                                        See all messages <i class="m-icon-swapright"></i>
                                    </a>
                                </li>
                            </ul>
                        </li>
                    <?php 
        }
        ?>
                    <?php 
        if ($custom_notifiers) {
            ?>
                        <?php 
            echo implode('', $custom_notifiers);
            ?>
                    <?php 
        }
        ?>
                    <li class="dropdown dropdown-user">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">
                            <img alt="" class="img-circle" src="<?php 
        echo $user_avatar;
        ?>
" style="height: 29px;">
                            <span class="username"><?php 
        echo Users::getInstance()->getUserData('name');
        ?>
</span>
                            <i class="fa fa-angle-down"></i>
                        </a>
                        <ul class="dropdown-menu">
                            <li>
                                <a href="?p=users&do=users_edit&id=<?php 
        echo USER_ID;
        ?>
">
                                    <i class="icon-user"></i> My Profile
                                </a>
                            </li>
                            <li>
                                <a href="?p=home&do=notifications">
                                    <i class="icon-envelope-open"></i>My notifications
                                    <span class="badge badge-danger"> <?php 
        echo count($notifications);
        ?>
</span>
                                </a>
                            </li>
                            <li class="divider"></li>
                            <li>
                                <a href="#" onclick="clipboard_forms.copy_page_forms(); return false;">
                                    <i class="icon-cloud-download"></i>Copy form data
                                </a>
                            </li>
                            <li>
                                <a href="#" onclick="clipboard_forms.paste_page_forms(); return false;">
                                    <i class="icon-cloud-upload"></i>Paste form data
                                </a>
                            </li>
                            <li class="divider"></li>
                            <li>
                                <a href="?p=home&do=_exit" onclick="return confirm('<?php 
        echo __('Are you sure?');
        ?>
');">
                                    <i class="icon-key"></i> Log Out
                                </a>
                            </li>
                        </ul>
                    </li>
                    <?php 
        // TODO right panel
        ?>
<!--                    <li class="dropdown dropdown-quick-sidebar-toggler">-->
<!--                        <a href="javascript:;" class="dropdown-toggle">-->
<!--                            <i class="icon-logout"></i>-->
<!--                        </a>-->
<!--                    </li>-->
                </ul>
            </div>
        </div>
        <?php 
        return ob_get_clean();
    }
<?php

use TMCms\Admin\Menu;
use TMCms\Admin\Users;
use TMCms\Config\Settings;
if (!Settings::get('admin_panel_on_site') || !Users::getInstance()->isLogged()) {
    die;
}
ob_start();
?>
<style>
	#admin_front_panel table {
		border-collapse: collapse;
	}
	#admin_front_panel td {
		border: 2px solid #000; padding: 3px;
	}
</style>
<div id="admin_front_panel" style="position: fixed; top: 0; left: 0; opacity: 0.9; width: 100%; height: 25px; background: #fff; z-index: 99998; font-size: 16px; font-family: Arial, sans-serif">
	<table cellpadding="0" cellspacing="0">
		<tr>
			<td style="text-align: right">
				<a href="<?php 
echo DIR_CMS_URL;
?>
" title="Open Admin panel">CMS</a>
			</td>
			<td style="text-align: right">
				<a href="<?php 
echo DIR_CMS_URL;
?>
Example #10
0
 /**
  * @param AdminUser $user
  */
 private function initLogInProcess($user)
 {
     $user->loadDataFromDB();
     // Set constants and session
     Users::getInstance()->deleteSession($user->getId());
     Users::getInstance()->setUserLoggedIn($user);
     go(isset($_POST['go']) ? $_POST['go'] : '/cms/?p=home');
 }
Example #11
0
 public function hashPassword()
 {
     $this->setPassword(Users::getInstance()->generateHash($this->getPassword()));
 }