HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberCP/public/static/filemanager/js/codeMirror.js
function getCookie(name) {
    var cookieValue = null;
    if (document.cookie && document.cookie !== '') {
        var cookies = document.cookie.split(';');
        for (var i = 0; i < cookies.length; i++) {
            var cookie = jQuery.trim(cookies[i]);
            // Does this cookie string begin with the name we want?
            if (cookie.substring(0, name.length + 1) === (name + '=')) {
                cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                break;
            }
        }
    }
    return cookieValue;
}

var fileManager = angular.module('editFile', []);

fileManager.config(['$interpolateProvider', function ($interpolateProvider) {
    $interpolateProvider.startSymbol('{$');
    $interpolateProvider.endSymbol('$}');
}]);


fileManager.controller('editFileCtrl', function ($scope, $http, $window) {

    $('form').submit(function (e) {
        e.preventDefault();
    });

    var domainName = $("#domainNameInitial").text();

    // html editor
    $scope.cyberPanelLoading = true;
    var globalCM;

    var url = '/filemanager/controller';

    $scope.getFileContents = function () {


        var data = {
            fileName: $("#completeFilePath").text(),
            method: "readFileContents",
            domainName: domainName
        };

        var config = {
            headers: {
                'X-CSRFToken': getCookie('csrftoken')
            }
        };


        $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);


        function ListInitialDatas(response) {

            $scope.htmlEditorLoading = true;

            if (response.data.status === 1) {

                let url = new URL(window.location.href);
                let params = new URLSearchParams(url.search);
                let python = params.get('python');

                if (python == null) {
                    var cm = new CodeMirror.fromTextArea(document.getElementById("fileContent"), {
                        lineNumbers: true,
                        mode: $("#mode").text(),
                        lineWrapping: false,
                        theme: $("#theme").text()
                    });
                    globalCM = cm;
                } else {
                    var mode = {name: $("#mode").text(), version: python};

                    var cm = new CodeMirror.fromTextArea(document.getElementById("fileContent"), {
                        lineNumbers: true,
                        mode: mode,
                        lineWrapping: false,
                        theme: $("#theme").text()
                    });
                    globalCM = cm;
                }

                cm.setValue(response.data.fileContents);
                cm.setSize(null, 800);

                // cm.on("keyup", function (cm, event) {
                //     if(event.keyCode === 9){
                //         event.preventDefault();
                //         event.stopPropagation();
                //     }
                //     if (!cm.state.completionActive && event.keyCode === 9) {
                //         CodeMirror.commands.autocomplete(cm, null, {completeSingle: false});
                //     }
                // });

            } else {
                $scope.errorMessageEditor = false;
                $scope.error_message = response.data.error_message;
            }

        }

        function cantLoadInitialDatas(response) {
        }

    };
    $scope.getFileContents();

    $scope.changeTheme = function () {

        let url = new URL(window.location.href);
        let params = new URLSearchParams(url.search);
        let theme = params.get('theme');

        if (theme == null) {
            $window.location.href = window.location.href + '&theme=' + $scope.theme;
        } else {
            params.set('theme', $scope.theme);
            $window.location.href = 'https://' + window.location.hostname + ':' + window.location.port + window.location.pathname + '?' + params.toString();
        }
    };

    $scope.additionalOptions = function () {

        if ($scope.optionValue === 'Python 2') {
            let url = new URL(window.location.href);
            let params = new URLSearchParams(url.search);
            let python = params.get('python');

            if (python == null) {
                $window.location.href = window.location.href + '&python=2';
            } else {
                params.set('python', '2');
                $window.location.href = 'https://' + window.location.hostname + ':' + window.location.port + window.location.pathname + '?' + params.toString();
            }

        } else if ($scope.optionValue === 'Python 3') {
            let url = new URL(window.location.href);
            let params = new URLSearchParams(url.search);
            let python = params.get('python');

            if (python == null) {
                $window.location.href = window.location.href + '&python=3';
            } else {
                params.set('python', '3');
                $window.location.href = 'https://' + window.location.hostname + ':' + window.location.port + window.location.pathname + '?' + params.toString();
            }
        }
    };

    $scope.putFileContents = function () {

        $scope.cyberPanelLoading = false;

        var data = {
            fileName: $("#completeFilePath").text(),
            method: "writeFileContents",
            fileContent: globalCM.getValue(),
            domainName: domainName
        };


        var config = {
            headers: {
                'X-CSRFToken': getCookie('csrftoken')
            }
        };


        $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);

        function ListInitialDatas(response) {
            $scope.cyberPanelLoading = true;
            if (response.data.status === 1) {
                new PNotify({
                    title: 'Success!',
                    text: 'File saved successfully.',
                    type: 'success'
                });
            } else {
                new PNotify({
                    title: 'Operation Failed!',
                    text: response.data.error_message,
                    type: 'error'
                });
            }

        }

        function cantLoadInitialDatas(response) {
            $scope.cyberPanelLoading = true;
            new PNotify({
                title: 'Operation Failed!',
                text: 'Could not connect to server, please refresh this page',
                type: 'error'
            });
        }

    };

    $scope.closeWindow = function () {
         window.close();
    };

});