luci-app-filemanager: Full featured File Manager application for LuCI

- Navigation in resizable window
- Scrollable and sortable list of files with name, type, creation
date/time columns
- Directory and files creation/renaming/removing
- Directory and files attributes changing
- Duplicating any object in the current directory
- Selecting objects individually and everything for removing selected
- Inverting selection with alt-click
- Large files uploading/downloading
- Drag'n'Drop multiple files from local directory to server
- Large files editing
- Line numbers toggle in editing window
- HEX mode for editing/viewing
- ASCII, HEX and RegExp search in HEX mode
- Storage of interface settings in config file
- Help tab with a short manual

Signed-off-by: Dmitry R <rdmitry0911@gmail.com>
Added timeout to info type addNotification so UI does not flood
synced i18n
Signed-off-by: Paul Donald <newtwen+github@gmail.com>
This commit is contained in:
dima
2024-10-02 06:53:21 -04:00
committed by Paul Donald
parent 5c97a89684
commit 3447700b38
8 changed files with 4901 additions and 0 deletions

View File

@@ -0,0 +1,13 @@
# This is free software, licensed under the Apache License, Version 2.0 .
include $(TOPDIR)/rules.mk
LUCI_TITLE:=LuCI File Manager module
LUCI_DEPENDS:=+luci-base
PKG_LICENSE:=Apache-2.0
PKG_MAINTAINER:=Dmitry R <rdmitry0911@gmail.com>
include ../../luci.mk
# call BuildPackage - OpenWrt buildroot signature

View File

@@ -0,0 +1,138 @@
/**
* Parses a limited subset of Markdown and converts it to HTML.
*
* Supported Markdown elements:
* - Headings (#, ##, ###)
* - Bold text (**text** or __text__)
* - Unordered lists (- or *)
* - Ordered lists (1., 2., etc.)
* - Paragraphs
*
* @param {string} markdown - The Markdown-formatted string.
* @returns {string} - The resulting HTML string.
*/
function parseMarkdown(markdown) {
// Split the input into lines
const lines = markdown.split('\n');
const html = [];
let inList = false;
let listType = ''; // 'ul' or 'ol'
lines.forEach((line) => {
let trimmedLine = line.trim();
if (trimmedLine === '') {
// Empty line signifies a new paragraph
if (inList) {
html.push(`</${listType}>`);
inList = false;
listType = '';
}
return; // Skip adding empty lines to HTML
}
// Check for headings
if (/^###\s+(.*)/.test(trimmedLine)) {
const content = trimmedLine.replace(/^###\s+/, '');
html.push(`<h3>${escapeHtml(content)}</h3>`);
return;
} else if (/^##\s+(.*)/.test(trimmedLine)) {
const content = trimmedLine.replace(/^##\s+/, '');
html.push(`<h2>${escapeHtml(content)}</h2>`);
return;
} else if (/^#\s+(.*)/.test(trimmedLine)) {
const content = trimmedLine.replace(/^#\s+/, '');
html.push(`<h1>${escapeHtml(content)}</h1>`);
return;
}
// Check for ordered lists
let orderedMatch = trimmedLine.match(/^(\d+)\.\s+(.*)/);
if (orderedMatch) {
const [, number, content] = orderedMatch;
if (!inList || listType !== 'ol') {
if (inList) {
html.push(`</${listType}>`);
}
html.push('<ol>');
inList = true;
listType = 'ol';
}
html.push(`<li>${parseInlineMarkdown(escapeHtml(content))}</li>`);
return;
}
// Check for unordered lists
let unorderedMatch = trimmedLine.match(/^[-*]\s+(.*)/);
if (unorderedMatch) {
const content = unorderedMatch[1];
if (!inList || listType !== 'ul') {
if (inList) {
html.push(`</${listType}>`);
}
html.push('<ul>');
inList = true;
listType = 'ul';
}
html.push(`<li>${parseInlineMarkdown(escapeHtml(content))}</li>`);
return;
}
// If currently inside a list but the line doesn't match a list item, close the list
if (inList) {
html.push(`</${listType}>`);
inList = false;
listType = '';
}
// Regular paragraph
html.push(`<p>${parseInlineMarkdown(escapeHtml(trimmedLine))}</p>`);
});
// Close any open list tags at the end
if (inList) {
html.push(`</${listType}>`);
}
return html.join('\n');
}
/**
* Parses inline Markdown elements like bold text.
*
* Supported inline elements:
* - Bold text (**text** or __text__)
*
* @param {string} text - The text to parse.
* @returns {string} - The text with inline Markdown converted to HTML.
*/
function parseInlineMarkdown(text) {
// Convert **text** and __text__ to <strong>text</strong>
return text
.replace(/\*\*(.+?)\*\*/g, '<strong>$1</strong>')
.replace(/__(.+?)__/g, '<strong>$1</strong>');
}
/**
* Escapes HTML special characters to prevent XSS attacks.
*
* @param {string} text - The text to escape.
* @returns {string} - The escaped text.
*/
function escapeHtml(text) {
const map = {
'&': '&amp;',
'<': '&lt;',
'>': '&gt;',
'"': '&quot;',
"'": '&#039;',
};
return text.replace(/[&<>"']/g, function(m) {
return map[m];
});
}
return L.Class.extend({
parseMarkdown: parseMarkdown,
});

View File

@@ -0,0 +1,128 @@
return L.Class.extend({
// Define the Help content in Markdown format
helpContentMarkdown: `
# LuCI OpenWrt File Manager Application Help
## Introduction
The **LuCI OpenWrt File Manager** is a tool to navigate directories, manage files, edit content, and customize the application's settings.
## Key Features
1. **Tabbed Interface**
- **File Manager Tab**: Primary interface for browsing and managing files and directories.
- **Editor Tab**: Advanced tool for editing file contents in both text and hexadecimal formats.
- **Settings Tab**: Customize the application's appearance and behavior according to your preferences.
- **Help Tab**: Access detailed instructions and information about the application's features and functionalities.
2. **File Management**
- **View Files and Directories**: Display a list of files and folders within the current directory.
- **Navigate Directories**: Move into subdirectories or return to parent directories.
- **Resizable Columns**: Adjust the width of table columns to enhance readability and organization.
- **Drag-and-Drop Uploads**: Upload files by simply dragging them into the designated area.
- **Upload via File Selector**: Use the "Upload File" button to select and upload files from your local machine.
- **Create New Files and Folders**:
- **Create Folder**: Instantiate new directories within the current path.
- **Create File**: Generate new empty files for content creation or editing.
- **File Actions**:
- **Edit**: Modify the contents of files directly within the application.
- **Duplicate**: Create copies of existing files or directories.
- **Delete**: Remove selected files or directories permanently.
- **Download**: Save copies of files to your local machine for offline access.
3. **Selection and Bulk Actions**
- **Select All**: Quickly select or deselect all files and directories within the current view using the "Select All" checkbox.
- **Invert Selection**: Reverse the current selection of files and directories, selecting previously unselected items and vice versa.
- **Individual Selection**: Select or deselect individual files and directories using the checkboxes next to each item.
- **Bulk Delete**: Remove multiple selected items simultaneously for efficient management.
4. **Advanced Editing**
- **Text Editor**:
- **Line Numbers**: Toggle the display of line numbers to assist in content navigation.
- **Save Changes**: Commit edits directly to the server.
- **Hex Editor**:
- **Binary Editing**: Modify file contents at the byte level for advanced users.
- **ASCII, HEX and RegExp search**: Search for a pattern in the file and navigate to it.
- **Switch Between Modes**: Seamlessly toggle between text and hex editing modes.
- **Save Changes**: Apply and save binary modifications.
5. **User Notifications and Status Indicators**
- **Progress Bars**: Visual indicators for ongoing operations like file uploads and deletions.
- **Notifications**: Informational messages alert users about the success or failure of actions performed.
6. **Customizable Settings**
- **Interface Customization**:
- **Column Widths**: Define the width of each column in the file list for optimal viewing.
- **Window Sizes**: Adjust the size of the file list container and editor windows.
- **Padding**: Set padding values to control the spacing within the interface.
- **Persistent Configuration**: Save your settings to ensure a consistent user experience across sessions.
## How to Use the Application
1. **Accessing the Application**
- Navigate to your OpenWrt device's LuCI web interface.
- Locate and select the **File Manager** application from **System** menu .
2. **Navigating the Interface**
- **Tabs**: Use the top navigation tabs to switch between **File Manager**, **Editor**, **Settings**, and **Help**.
- **File Manager Tab**:
- Browse through directories by clicking on folder names.
- Use the "Go" button or press "Enter" after typing a path in the path input field to navigate to specific directories.
- **Editor Tab**:
- Select a file from the File Manager to open it in the Editor.
- Choose between text or hex editing modes using the toggle buttons.
- **Settings Tab**:
- Adjust interface settings such as column widths, window sizes, and padding.
- Save your configurations to apply changes immediately.
- **Help Tab**:
- Access detailed instructions and information about the application's features and functionalities.
3. **Managing Files and Directories**
- **Uploading Files**:
- **Drag and Drop**: Drag files from your local machine and drop them into the **File List Container** to upload.
- **File Selector**: Click the "Upload File" button to open a file dialog and select files for uploading.
- **Creating Files/Folders**:
- Click on "Create File" or "Create Folder" buttons and provide the necessary names to add new items.
- **Editing Files**:
- Select a file and click the edit icon (✏️) to modify its contents in the Editor tab.
- **Duplicating Files/Folders**:
- Use the duplicate icon (📑) to create copies of selected items.
- **Deleting Items**:
- Select one or multiple items using checkboxes and click the delete icon (🗑️) or use the "Delete Selected" button for bulk deletions.
- **Downloading Files**:
- Click the download icon (⬇️) next to a file to save it to your local machine.
4. **Using Selection Features**
- **Select All**:
- Use the "Select All" checkbox located in the table header to select or deselect all files and directories in the current view.
- **Invert Selection**:
- Hold the "Alt" key and click the "Select All" checkbox to invert the current selection, selecting all unselected items and deselecting previously selected ones.
- **Individual Selection**:
- Click on the checkbox next to each file or directory to select or deselect it individually.
5. **Using the Editor**
- **Text Mode**:
- Edit the content of text files with features like line numbers and real-time updates.
- Save your changes by clicking the "Save" button.
- **Hex Mode**:
- Perform binary editing on files for advanced modifications.
- Perform ASCII, HEX and RegExp pattern search in the file.
- Toggle between text and hex modes as needed.
- Save changes to apply your edits.
- **Quick Access**: Hold the "Alt" key and click on file names or links to open files directly in the hex editor.
6. **Customizing Settings**
- Navigate to the **Settings Tab** to personalize the application's layout and behavior.
- Adjust parameters such as column widths, window sizes, and padding to suit your preferences.
- Save settings to ensure they persist across sessions.
## Additional Functionalities
- **Resizable Columns and Windows**: Enhance the interface's flexibility by resizing table columns and editor windows to match your workflow. The Help window starts at **650x600** pixels and can be adjusted as needed.
- **Responsive Design**: The application adapts to different screen sizes, ensuring usability across various devices.
- **Error Handling and Notifications**: Receive immediate feedback on actions, helping you stay informed about the status of your file management tasks.
- **Line Number Toggle**: Easily show or hide line numbers in the text editor to assist with content navigation.
- **Bulk Operations**: Efficiently manage multiple files or directories through bulk actions like delete and duplicate.
- **Symlink Handling**: Navigate and manage symbolic links seamlessly within the file structure.
`
});

View File

@@ -0,0 +1,433 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:848
msgid "Actions"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1607
msgid "Are you sure you want to delete the selected files and directories?"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2043
msgid "Are you sure you want to delete this %s: \"%s\"?"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2458
msgid "Changes to %s \"%s\" uploaded successfully."
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1023
msgid "Column Max Widths (format: name:maxWidth,type:maxWidth,...):"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1012
msgid "Column Min Widths (format: name:minWidth,type:minWidth,...):"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1001
msgid "Column Widths (format: name:width,type:width,...):"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1494
msgid "Create"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1445
msgid "Create Directory:"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:898
msgid "Create File"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1502
msgid "Create File:"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:894
msgid "Create Folder"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1061
msgid "Current Directory:"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager/HexEditor.js:1238
msgid "Decoded Text"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:904
msgid "Delete Selected"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2051
msgid "Deleted %s: \"%s\"."
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1707
msgid "Directory"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1461
msgid "Directory \"%s\" created successfully."
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1428
msgid "Directory Name"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2015
msgid "Downloaded file: \"%s\"."
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:859
msgid "Drop files here to upload"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2406
msgid "Editing %s: \"%s\""
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2784
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2788
msgid "Editing:"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:740
msgid "Editor"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2182
msgid "Editor textarea not found."
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2300
msgid "Failed to access symlink target: %s"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1276
msgid "Failed to access the specified path: %s"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2261
msgid "Failed to apply permissions to file \"%s\": %s"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1470
msgid "Failed to create directory \"%s\": %s"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1527
msgid "Failed to create file \"%s\": %s"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2054
msgid "Failed to delete %s \"%s\": %s"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1613
msgid "Failed to delete %s: %s"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1624
msgid "Failed to delete selected files and directories: %s"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1636
msgid "Failed to display the file list."
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2018
msgid "Failed to download file \"%s\": %s"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2167
msgid "Failed to duplicate %s \"%s\": %s"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2170
msgid "Failed to get file list: %s"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1813
msgid "Failed to load file list: %s"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1977
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1979
msgid "Failed to open file: %s"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1225
msgid "Failed to render Help content: Container not found."
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2467
msgid "Failed to save changes to %s \"%s\": %s"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2277
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2279
msgid "Failed to save file \"%s\": %s"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2584
msgid "Failed to save settings: %s"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1190
msgid "Failed to update file list: %s"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1734
msgid "File"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1518
msgid "File \"%s\" created successfully."
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1398
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1400
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2254
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2256
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2265
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2267
msgid "File \"%s\" uploaded successfully."
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:731
#: applications/luci-app-filemanager/root/usr/share/luci/menu.d/luci-app-filemanager.json:3
msgid "File Manager"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:697
msgid "File Manager:"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1485
msgid "File Name"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:713
msgid "Go"
msgstr ""
#: applications/luci-app-filemanager/root/usr/share/rpcd/acl.d/luci-app-filemanager.json:3
msgid "Grant access to File Manager"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:759
msgid "Help"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:992
msgid "Hex Editor Height:"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:983
msgid "Hex Editor Width:"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:939
msgid "Interface Settings"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:830
msgid "Last Modified"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1928
msgid "Loading file..."
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:791
msgid "Name"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1467
msgid "No directory selected."
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:877
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1345
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1524
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1804
msgid "No file selected."
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2464
msgid "No item selected."
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager/HexEditor.js:1226
msgid "Offset (h)"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1052
msgid "Padding Max:"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1043
msgid "Padding Min:"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1034
msgid "Padding:"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1075
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1437
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2396
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2713
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2755
msgid "Save"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2224
msgid "Saving file: \"%s\"..."
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager/HexEditor.js:428
msgid "Search ASCII"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager/HexEditor.js:431
msgid "Search HEX (e.g., 4F6B)"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager/HexEditor.js:434
msgid "Search RegExp (e.g., \\d{3})"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:916
msgid "Select a file from the list to edit it here."
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1617
msgid "Selected files and directories deleted successfully."
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:749
msgid "Settings"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2554
msgid "Settings uploaded successfully."
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:817
msgid "Size"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:834
msgid "Sort by Last Modified"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:795
msgid "Sort by Name"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:821
msgid "Sort by Size"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:808
msgid "Sort by Type"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2045
msgid "Successfully deleted %s: \"%s\"."
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2162
msgid "Successfully duplicated %s \"%s\" as \"%s\"."
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1779
msgid "Symlink"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2304
msgid "Symlink:"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:974
msgid "Text Editor Height:"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:965
msgid "Text Editor Width:"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1273
msgid "The specified path does not appear to be a directory."
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2297
msgid "The symlink points to an unsupported type."
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2729
msgid "Toggle Line Numbers"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2763
msgid "Toggle to ASCII Mode"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2721
msgid "Toggle to Hex Mode"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:804
msgid "Type"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1786
msgid "Unknown"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:890
msgid "Upload File"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1408
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1410
msgid "Upload failed for file \"%s\": %s"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:1372
msgid "Uploading: \"%s\"..."
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:956
msgid "Window Height:"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:947
msgid "Window Width:"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2031
msgid "directory"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2033
msgid "file"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2037
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2040
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2162
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2167
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2406
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2458
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2467
msgid "item"
msgstr ""
#: applications/luci-app-filemanager/htdocs/luci-static/resources/view/system/filemanager.js:2035
msgid "symbolic link"
msgstr ""

View File

@@ -0,0 +1,13 @@
{
"admin/system/filemanager": {
"title": "File Manager",
"order": 80,
"action": {
"type": "view",
"path": "system/filemanager"
},
"depends": {
"acl": [ "luci-app-filemanager" ]
}
}
}

View File

@@ -0,0 +1,14 @@
{
"luci-app-filemanager": {
"description": "Grant access to File Manager",
"write": {
"cgi-io": [ "upload", "download" ],
"ubus": {
"file": [ "*" ]
},
"file": {
"/*": [ "list", "read", "write", "exec" ]
}
}
}
}