| /* |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| */ |
| |
| var contentTypeMap = { xml : 'text/xml', html : 'text/html', js : 'text/javascript', json : 'application/json', 'css' : 'text/css' }; |
| var languages = {js: "javascript", xml:"xml", xsl:"xml", vm: "xml", html: "xml", json: "json", css: "css"}; |
| |
| solrAdminApp.controller('FilesController', |
| function($scope, $rootScope, $routeParams, $location, Files, Constants) { |
| $scope.resetMenu("files", Constants.IS_COLLECTION_PAGE); |
| |
| $scope.file = $location.search().file; |
| $scope.content = null; |
| |
| $scope.baseurl = $location.protocol()+ "://" + $location.host() + ":" + $location.port(); |
| |
| $scope.refresh = function () { |
| |
| var process = function (path, tree) { |
| var params = {core: $routeParams.core}; |
| if (path.slice(-1) == '/') { |
| params.file = path.slice(0, -1); |
| } else if (path!='') { |
| params.file = path; |
| } |
| |
| Files.list(params, function (data) { |
| var filenames = Object.keys(data.files); |
| filenames.sort(); |
| for (var i in filenames) { |
| var file = filenames[i]; |
| var filedata = data.files[file]; |
| var state = undefined; |
| var children = undefined; |
| |
| if (filedata.directory) { |
| file = file + "/"; |
| if ($scope.file && $scope.file.indexOf(path + file) == 0) { |
| state = "open"; |
| } else { |
| state = "closed"; |
| } |
| children = []; |
| process(path + file, children); |
| } |
| tree.push({ |
| data: { |
| title: file, |
| attr: { id: path + file} |
| }, |
| children: children, |
| state: state |
| }); |
| } |
| }); |
| } |
| $scope.tree = []; |
| process("", $scope.tree); |
| |
| if ($scope.file && $scope.file != '' && $scope.file.split('').pop()!='/') { |
| var extension; |
| if ($scope.file == "managed-schema") { |
| extension = contentTypeMap['xml']; |
| } else { |
| extension = $scope.file.match( /\.(\w+)$/)[1] || ''; |
| } |
| var contentType = (contentTypeMap[extension] || 'text/plain' ) + ';charset=utf-8'; |
| |
| Files.get({core: $routeParams.core, file: $scope.file, contentType: contentType}, function(data) { |
| $scope.content = data.data; |
| $scope.url = $scope.baseurl + data.config.url + "?" + $.param(data.config.params); |
| if (contentType.indexOf("text/plain") && (data.data.indexOf("<?xml")>=0) || data.data.indexOf("<!--")>=0) { |
| $scope.lang = "xml"; |
| } else { |
| $scope.lang = languages[extension] || "txt"; |
| } |
| }); |
| } |
| }; |
| |
| $scope.showTreeLink = function(data) { |
| var file = data.args[0].id; |
| $location.search({file:file}); |
| }; |
| |
| $scope.refresh(); |
| }); |