1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/xianrenqh-huicmf_webman

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

HuiCMF 2.0 Управление системой администрирования

Разработано на основе Webman

Адрес демонстрационной версии:

https://webman2.xiaohuihui.club/app/admin

Логин: admin

Пароль: 123456

Модули функциональности

  1. По умолчанию первое установочное окружение с возможностью кастомизации
  2. Добавлено управление плагинами приложений, позволяющее устанавливать и обновлять плагины
  3. Модуль управления backend полностью независим, включает установку и обновление плагинов
  4. Управление правами доступа backend, позволяющее управлять подчинёнными правами
  5. Поддержка конфигураций с возможностью кастомизации
  6. Поддержка управления словарями
  7. Управление вложениями
  8. Логи входа в backend и логи действий
  9. Более плагинов находятся в разработке, ждём вашего участия
  10. Другие возможности...

Требования к среде

  1. PHP 8.1+ (рекомендовано 8.1)
  2. MySQL 5.6+ (рекомендовано 5.7)
  3. Поддержка Redis (по умолчанию используется кэширование локальных файлов, для использования Redis требуется запустить службу Redis)

Внимание:

Конфигурация базы данных указывает на ошибку> При использовании команд composer install или composer update для установки или обновления зависимостей, если происходит обновление библиотеки классов thinkphp-orm, то автоматически создаётся конфигурационный файл thinorm.php в папке app/config. Этот файл следует удалить вручную, чтобы избежать ошибок.

(Файл уже настроен по умолчанию в папке plugin/admin/config, глобальный файл app можно игнорировать.)### Версия PHP

[Новая установка]

Из-за обновления библиотеки Interventions/Image до последней версии v3 требуется минимум PHP 8.1+. Поэтому минимальная версия PHP для этого проекта должна быть 8.1.

[Установка существующей версии]

Если вы хотите использовать PHP 8.0 или текущую версию без обновления до PHP 8.1+, это также возможно.

Установка:

1. Клонирование кода

git clone https://gitee.com/xianrenqh/huicmf_webman.git

2. Установка зависимостей

Если при выполнении команды composer install возникают ошибки, обычно они связаны с отключёнными функциями, такими как putenv, proc_open, pcntl_fork и т.д. Эти функции следует активировать.

(Необходимо активировать эти функции, чтобы избежать проблем при старте или установке некоторых пакетов Composer)

composer install

3. Настройка среды выполнения (на примере Pantheon Panel)

Настройка обратного прокси Nginx

Официальная конфигурация:

upstream webman {
    server 127.0.0.1:8789;
    keepalive 10240;
}

server {
  server_name ваш_домен;
  listen 80;
  access_log off;
  root /ваш/путь/webman/public;

  location / {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_http_version 1.1;
      proxy_set_header Connection "";
      if (!-f $request_filename) {
          proxy_pass http://webman;
      }
  }
}
upstream webman {
    server 127.0.0.1:8789;
    keepalive 10240;
}

server
{
    listen 80;
    listen [::]:80;
    server_name webman.xiaohuihui.net;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwroot/webman.xiaohuihui.net/public;
    access_log off;
}    #SSL-START SSL-конфигурация, пожалуйста, не удаляйте или изменяйте следующую строку с пометкой 404
    #error_page 404/404.html;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    add_header Strict-Transport-Security "max-age=31536000";
    error_page 497 https://$host$request_uri;

    #SSL-END

    #ERROR-PAGE-START Конфигурация страниц ошибок, можно закомментировать, удалить или изменить
    #error_page 404 /404.html;
    #error_page 502 /502.html;
    #ERROR-PAGE-END

    #PHP-INFO-START Конфигурация PHP-соединений, можно закомментировать или изменить
    include enable-php-74.conf;
    #PHP-INFO-END

    #REWRITE-START Конфигурация правил перезаписи URL, изменение приведёт к потере настроек псевдо-статических правил в панели управления
    include /www/server/panel/vhost/rewrite/webman.xiaohuihui.net.conf;
    #REWRITE-END

    #Запрещённые файлы или директории
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md) {
        return 404;
    }

    #Настройки проверки сертификата SSL при одном клике
    location ~ \.well-known {
        allow all;
    }

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
        expires 30d;
        proxy_pass http://webman;
        error_log /dev/null;
        access_log /dev/null;
    }

    location ~ .*\.(js|css)?$ {
        expires 12h;
        proxy_pass http://webman;
        error_log /dev/null;
        access_log /dev/null;
    }
}

Вышеуказанный код следует внимательно рассмотреть:

_location ~_ содержимое требует особого внимания. Неправильная обработка этих данных может привести к невозможности доступа к некоторым статическим ресурсам.

Настройка рабочего каталога:

Каталог работы сайта установлен как public

Настройка псевдо-статического режима

location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    if (!-f $request_filename) {
        proxy_pass http://webman;
    }
}

Изменение порта (если требуется)

файл /config/server.php
приблизительно 16 строка:
'listen' => 'http://0.0.0.0:8789',
```### Веб-интерфейс управления

1. По умолчанию используется одностраничная (SPA) архитектура без использования `iframe`.
2. Веб-интерфейс управления по умолчанию использует версию Pear Admin Layui 4.0.
3. Layui использует последнюю версию: 2.9.10.

---

### Выполнение команд запуска

#### Окружение Windows разработки

php windows.php start


#### Окружение Linux производства

php start.php start php start.php start -d


#### Гладкий перезапуск

php start.php reload


## Первый вход (установка)

> Обратите внимание на конфигурирование порта

http://127.0.0.1:8789/app/admin

Если привязан домен, то переходите по адресу:

https://webman2.xiaohuihui.club/app/admin

Домен лучше заменить на свой.

---

## Управление веб-разработкой

### 1. Шаблоны

> Обратите внимание:
>
> В шаблоне UI:
>
> **Не должно быть одинаковых ID**
>
> **Не должно быть одинаковых ID**
>
> **Не должно быть одинаковых ID**
>
> Не использовать `window.****=function();`
>
> При смене конфигурации базы данных, особенно имени базы данных, обязательно перезапустите сервис `webman`.

1. При использовании в страницах, обязательно различайте значения ID, они не должны повторяться на других страницах.

**Не должно быть одинаковых ID**

**Не должно быть одинаковых ID**

**Не должно быть одинаковых ID**

Например, страница таблицы данных:

```html
<table class="layui-hide" id="ruleTable" lay-filter="ruleTable"></table>
var ruleInit = treeTable.render({
	elem: '#ruleTable'
});
``````html

<script type="text/html" id="optionTpl">
    <a class="layui-btn layui-btn-xs layui-btn-normal" data-open="/app/admin/rule/add?id={{d.id}}"
       data-title="Добавить подчинённого" data-reload="1" permission="app.admin.rule.add">Добавить подчинённого</a>
    <a class="layui-btn layui-btn-xs layui-btn-success" data-open="/app/admin/rule/edit?id={{d.id}}"
       data-title="Редактировать" data-reload="1">Редактировать</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs" data-confirm="/app/admin/rule/delete"
       data-data="id={{d.id}}" data-title="Вы уверены, что хотите удалить?" data-reload="1">Удалить</a>
</script>
[
  {fixed: "right", title: "Действия", width: 190, align: "center", toolbar: "#optionTpl"}
]

В вышестоящем коде: значение elem в JS совпадает со значением id в HTML, и это значение не должно повторяться на других страницах, иначе страница будет пустой. Лучший способ названия: текущее имя + Table, например выше: ruleTable, что означает: таблица ролей.

Метод сортировки таблицы (layui) с помощью перетаскивания:

Ссылка: https://www.workerman.net/a/1677

HTML страница:

Импорт soulTable:

layui.use(['table', 'soulTable'], function() {
  var soulTable = layui.soulTable;
  table.render({
    rowDrag: {
      trigger: ".layui-icon-snowflake",
      done: (obj) => {
        let PRIMARY_KEY = 'id'; // Поле сортировки ID
        let UPDATE_API = '/app/knowledge/knowledge/sort'; // API запроса для сортировки
        rowDragDoneFunc(obj, PRIMARY_KEY, UPDATE_API, 'sort');
        refreshTable(tableInit.config.id, 1); // Обновление таблицы
      },
    },
    done: function() {
      soulTable.render(this);
    }
  });
});

Обработка контроллером серверной части:

// Импорт метода сортировки
use plugin\admin\app\servicers\DragdoneUpService;
```/**
     * Сортировка
     *
     * @param Request $request
     *
     * @return Response
     */
    public function sort(Request $request): Response
    {
        if ($request->method() === 'POST') {
            if ($request->post('dragDone') == 1 && DragdoneUpService::dragDoneUpData($request, $this->model)) {
                return $this->success('Операция выполнена успешно');
            }
        }
    }

Пример использования wangEditor для загрузки видео:

window.editor = E.createEditor({
uploadVideo: {
server: '/app/admin/upload/upload?editor_type=wang',
fieldName: 'custom-fileName',
meta: {token: 'xxx', a: 100},
metaWithUrl: true, // объединение параметров в URL
headers: {
'Accept': 'text/x-json'
}
,
maxFileSize: 10 * 1024 * 1024, // 10МБ
onBeforeUpload(file) {
return file
}
,
onProgress(progress) {
console.log('progress', progress)
}
}
})

Разработка плагинов:

  1. Ссылка на официальную документацию:

https://www.workerman.net/doc/webman/app/create.html

  1. После создания плагина, необходимо отредактировать файл api/Install.php в директории плагина:

По умолчанию используется фреймворк Laravel, но здесь используется ThinkPHP. Поэтому если есть SQL-файлы для установки, этот файл следует изменить.

Шестая строка должна быть изменена следующим образом:

use think\facade\Db;

Строка 178 должна быть изменена следующим образом:

Db::connect(static::$connection)->execute($sql);
  1. При работе с базой данных при разработке плагинов (например, создание новых таблиц), рекомендуется использовать модели для определения названий таблиц. В противном случае, при обновлении плагина могут возникнуть ошибки из-за различий в префиксах таблиц. Например:
protected $table = "cmf_email_template";
```## Другое

Если вы не хотите обновлять плагины административной панели, измените значение `version` в соответствующих файлах конфигурации плагинов на произвольно большое число. Например: 10.0.0
/admin/plugin/admin/config/app.php

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Huicmf — это система управления правами доступа для администраторов, разработанная на основе webman. Развернуть Свернуть
JavaScript и 4 других языков
MIT
Отмена

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/xianrenqh-huicmf_webman.git
git@api.gitlife.ru:oschina-mirror/xianrenqh-huicmf_webman.git
oschina-mirror
xianrenqh-huicmf_webman
xianrenqh-huicmf_webman
v2.0