├── LICENSE ├── README.md ├── backend ├── .gitignore ├── README.md ├── application │ ├── __init__.py │ ├── asgi.py │ ├── celery.py │ ├── settings.py │ ├── urls.py │ └── wsgi.py ├── apps │ ├── __init__.py │ ├── address │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── migrations │ │ │ ├── 0001_initial.py │ │ │ └── __init__.py │ │ ├── models.py │ │ ├── tests.py │ │ ├── urls.py │ │ └── views.py │ ├── logins │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── migrations │ │ │ └── __init__.py │ │ ├── models.py │ │ ├── tests.py │ │ └── views.py │ ├── lycrontab │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── filters.py │ │ ├── migrations │ │ │ └── __init__.py │ │ ├── tasks.py │ │ ├── tests.py │ │ ├── urls.py │ │ └── views │ │ │ ├── celery_clocked_schedule.py │ │ │ ├── celery_crontab_schedule.py │ │ │ ├── celery_interval_schedule.py │ │ │ ├── celery_periodic_task.py │ │ │ └── celery_task_result.py │ ├── lymessages │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── migrations │ │ │ ├── 0001_initial.py │ │ │ ├── 0002_initial.py │ │ │ └── __init__.py │ │ ├── models.py │ │ ├── tests.py │ │ ├── urls.py │ │ └── views.py │ ├── lymonitor │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── migrations │ │ │ ├── 0001_initial.py │ │ │ └── __init__.py │ │ ├── models.py │ │ ├── tests.py │ │ ├── urls.py │ │ └── views.py │ ├── lyusers │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── migrations │ │ │ └── __init__.py │ │ ├── models.py │ │ ├── tests.py │ │ ├── urls.py │ │ └── views.py │ ├── lywebsocket │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── consumers.py │ │ ├── migrations │ │ │ ├── 0001_initial.py │ │ │ ├── 0002_terminalserver_port.py │ │ │ └── __init__.py │ │ ├── models.py │ │ ├── routing.py │ │ ├── tests.py │ │ ├── urls.py │ │ └── views.py │ ├── mall │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── migrations │ │ │ ├── 0001_initial.py │ │ │ ├── 0002_alter_sku_options_alter_skuspecification_options_and_more.py │ │ │ └── __init__.py │ │ ├── models.py │ │ ├── redis_ex_mallorder_callback.py │ │ ├── tests.py │ │ ├── urls.py │ │ └── views.py │ ├── oauth │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── management │ │ │ ├── __init__.py │ │ │ └── commands │ │ │ │ ├── __init__.py │ │ │ │ └── getxcxaccesstoken.py │ │ ├── migrations │ │ │ ├── 0001_initial.py │ │ │ ├── 0002_alter_oauthwxuser_mobilephonenumber.py │ │ │ └── __init__.py │ │ ├── models.py │ │ ├── tests.py │ │ └── views.py │ └── platformsettings │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── migrations │ │ ├── 0001_initial.py │ │ ├── 0002_lunbotumanage_link_type_alter_lunbotumanage_link_and_more.py │ │ ├── 0003_alter_othermanage_type.py │ │ ├── 0004_alter_othermanage_options.py │ │ ├── 0005_systemconfig.py │ │ ├── 0006_alter_systemconfig_form_item_type.py │ │ ├── 0007_alter_systemconfig_data_options_and_more.py │ │ ├── 0008_alter_systemconfig_form_item_type.py │ │ └── __init__.py │ │ ├── models.py │ │ ├── tests.py │ │ ├── urls.py │ │ └── views.py ├── config.py ├── docker_start.sh ├── extra_apps │ ├── __init__.py │ └── python_alipay_sdk │ │ ├── __init__.py │ │ ├── compat.py │ │ ├── exceptions.py │ │ ├── loggers.py │ │ └── utils.py ├── frontend │ ├── download-app │ │ ├── index.html │ │ └── static │ │ │ ├── css │ │ │ └── index.2554488.lllxs2download-app.css │ │ │ ├── images │ │ │ ├── download_pattern_left.2554488.lllxs2download-app.png │ │ │ ├── download_pattern_right.2554488.lllxs2download-app.png │ │ │ ├── favicon.2554488.lllxs2download-app.ico │ │ │ ├── icon_android.2554488.lllxs2download-app.png │ │ │ ├── icon_android_1.2554488.lllxs2download-app.png │ │ │ ├── icon_ios.2554488.lllxs2download-app.png │ │ │ ├── icon_ios_1.2554488.lllxs2download-app.png │ │ │ ├── icon_logo.2554488.lllxs2download-app.png │ │ │ └── tips.2554488.lllxs2download-app.png │ │ │ └── js │ │ │ ├── index.2554488.lllxs2download-app.js │ │ │ └── utils.2554488.lllxs2download-app.js │ ├── index.html │ └── static │ │ └── favicon.ico ├── key │ ├── alipay_public_key.pem │ ├── apiclient_cert.pem │ ├── apiclient_key.pem │ ├── app_private_key.pem │ └── app_public_key.pem ├── lyadmin_db.sql ├── manage.py ├── media │ └── platform │ │ ├── 2021-10-27 │ │ └── 20211027110807_498.jpg │ │ ├── 2022-04-07 │ │ └── 20220407120605_298.png │ │ └── 2022-08-01 │ │ ├── 20220801225845_971.png │ │ ├── 20220801225848_774.png │ │ ├── 20220801225851_499.png │ │ ├── 20220801225947_460.png │ │ ├── 20220801225950_577.png │ │ ├── 20220801225952_984.png │ │ └── 20220801225955_189.png ├── mysystem │ ├── __init__.py │ ├── admin.py │ ├── apps.py │ ├── initialize.py │ ├── management │ │ ├── __init__.py │ │ └── commands │ │ │ ├── __init__.py │ │ │ ├── generate_token.py │ │ │ ├── init.py │ │ │ └── lyadminstartapp.py │ ├── migrations │ │ ├── 0001_initial.py │ │ ├── 0002_alter_users_identity_alter_users_mobile.py │ │ └── __init__.py │ ├── models.py │ ├── signals.py │ ├── tests.py │ ├── urls.py │ └── views │ │ ├── button.py │ │ ├── dept.py │ │ ├── dictionary.py │ │ ├── login.py │ │ ├── menu.py │ │ ├── menu_button.py │ │ ├── operation_log.py │ │ ├── role.py │ │ └── user.py ├── requirements.txt ├── requirements_linux.txt ├── requirements_now.txt ├── static │ └── favicon.ico ├── tb_areas.sql └── utils │ ├── alipay.py │ ├── aliyunsms.py │ ├── apisecurity.py │ ├── common.py │ ├── exception.py │ ├── export_excel.py │ ├── filters.py │ ├── imageupload.py │ ├── jiguang_jpush.py │ ├── jsonResponse.py │ ├── kuaidi100.py │ ├── locationanalysis.py │ ├── middleware.py │ ├── models.py │ ├── pagination.py │ ├── permission.py │ ├── request_util.py │ ├── serializers.py │ ├── server │ ├── crontab │ │ └── crontab_windows.py │ ├── linux.py │ ├── system.py │ └── windows.py │ ├── streamingmedia_response.py │ ├── swagger.py │ ├── tencentsms.py │ ├── uniappsms.py │ ├── validator.py │ ├── viewset.py │ ├── weixinpay.py │ ├── wexinpay_cashout.py │ └── yunpian.py ├── django-vue-lyadmin mini精简版.zip ├── docker-compose.yml ├── docker_env ├── .gitignore ├── django │ └── Dockerfile ├── mysql │ └── conf.d │ │ └── my.cnf ├── nginx │ └── my.conf └── redis │ └── redis.conf ├── frontend ├── .gitignore ├── README.md ├── babel.config.js ├── package-lock.json ├── package.json ├── public │ ├── favicon.ico │ ├── index.html │ └── static │ │ ├── favicon.ico │ │ └── tinymce │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── bower.json │ │ ├── composer.json │ │ ├── icons │ │ └── default │ │ │ ├── icons.js │ │ │ ├── icons.min.js │ │ │ └── index.js │ │ ├── jquery.tinymce.js │ │ ├── jquery.tinymce.min.js │ │ ├── langs │ │ └── zh_CN.js │ │ ├── license.txt │ │ ├── package.json │ │ ├── plugins │ │ ├── advlist │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── anchor │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── autolink │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── autoresize │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── autosave │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── bbcode │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── charmap │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── code │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── codesample │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── colorpicker │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── contextmenu │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── directionality │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── emoticons │ │ │ ├── index.js │ │ │ ├── js │ │ │ │ ├── emojiimages.js │ │ │ │ ├── emojiimages.min.js │ │ │ │ ├── emojis.js │ │ │ │ └── emojis.min.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── fullpage │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── fullscreen │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── help │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── hr │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── image │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── imagetools │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── importcss │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── insertdatetime │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── legacyoutput │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── link │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── lists │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── media │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── nonbreaking │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── noneditable │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── pagebreak │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── paste │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── preview │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── print │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── quickbars │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── save │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── searchreplace │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── spellchecker │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── tabfocus │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── table │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── template │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── textcolor │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── textpattern │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── toc │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── visualblocks │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── visualchars │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ └── wordcount │ │ │ ├── index.js │ │ │ ├── plugin.js │ │ │ └── plugin.min.js │ │ ├── skins │ │ ├── content │ │ │ ├── dark │ │ │ │ ├── content.css │ │ │ │ └── content.min.css │ │ │ ├── default │ │ │ │ ├── content.css │ │ │ │ └── content.min.css │ │ │ ├── document │ │ │ │ ├── content.css │ │ │ │ └── content.min.css │ │ │ └── writer │ │ │ │ ├── content.css │ │ │ │ └── content.min.css │ │ └── ui │ │ │ ├── oxide-dark │ │ │ ├── content.css │ │ │ ├── content.inline.css │ │ │ ├── content.inline.min.css │ │ │ ├── content.min.css │ │ │ ├── content.mobile.css │ │ │ ├── content.mobile.min.css │ │ │ ├── fonts │ │ │ │ └── tinymce-mobile.woff │ │ │ ├── skin.css │ │ │ ├── skin.min.css │ │ │ ├── skin.mobile.css │ │ │ ├── skin.mobile.min.css │ │ │ ├── skin.shadowdom.css │ │ │ └── skin.shadowdom.min.css │ │ │ └── oxide │ │ │ ├── content.css │ │ │ ├── content.inline.css │ │ │ ├── content.inline.min.css │ │ │ ├── content.min.css │ │ │ ├── content.mobile.css │ │ │ ├── content.mobile.min.css │ │ │ ├── fonts │ │ │ └── tinymce-mobile.woff │ │ │ ├── skin.css │ │ │ ├── skin.min.css │ │ │ ├── skin.mobile.css │ │ │ ├── skin.mobile.min.css │ │ │ ├── skin.shadowdom.css │ │ │ └── skin.shadowdom.min.css │ │ ├── themes │ │ ├── mobile │ │ │ ├── index.js │ │ │ ├── theme.js │ │ │ └── theme.min.js │ │ └── silver │ │ │ ├── index.js │ │ │ ├── theme.js │ │ │ └── theme.min.js │ │ ├── tinymce.d.ts │ │ ├── tinymce.js │ │ └── tinymce.min.js └── src │ ├── App.vue │ ├── api │ ├── api.js │ ├── date.js │ ├── request.js │ └── url.js │ ├── assets │ ├── css │ │ ├── common.scss │ │ ├── elementplus-theme-dark-css-vars.css │ │ └── nprogress.scss │ ├── img │ │ ├── 007.png │ │ ├── 01.png │ │ ├── 02.png │ │ ├── 03.png │ │ ├── 04.png │ │ ├── 05.png │ │ ├── 06.png │ │ ├── 088.png │ │ ├── 098.png │ │ ├── 099.png │ │ ├── 100.png │ │ ├── 188.png │ │ ├── alipay.jpg │ │ ├── alired.jpg │ │ ├── avatar.jpg │ │ ├── avatar02.jpg │ │ ├── bgiphonehen.png │ │ ├── bgiphonejian.png │ │ ├── cronexpress.png │ │ ├── logo.png │ │ ├── qq.jpg │ │ ├── show.png │ │ ├── sq.png │ │ ├── task01.png │ │ ├── task02.png │ │ └── wechat.jpg │ └── logo.png │ ├── components │ ├── Pagination.vue │ ├── TEditor.vue │ ├── analysis │ │ ├── barEchart.vue │ │ ├── echartCard.vue │ │ ├── echartsInstall.js │ │ ├── growCard.vue │ │ └── lineEchart.vue │ ├── dialog │ │ └── dialog.vue │ ├── dict │ │ └── crudTemplateData.js │ ├── icons │ │ └── chooseIcons.vue │ ├── leftnav.vue │ ├── lycrud.vue │ ├── monitor │ │ ├── echartCard.vue │ │ ├── lyLineEchart.vue │ │ └── statusCard.vue │ ├── mutitabs.vue │ ├── navcon.vue │ ├── pagination │ │ └── pagination.vue │ ├── render │ │ └── render.vue │ ├── teditorjs │ │ ├── config.js │ │ └── importTinymce.js │ ├── terminal │ │ └── xterm.vue │ └── upload │ │ ├── avatar.vue │ │ └── goods.vue │ ├── config │ └── index.js │ ├── locales │ ├── index.js │ └── lang │ │ ├── en.js │ │ └── zh-cn.js │ ├── main.js │ ├── mixins │ └── mixins.js │ ├── router │ └── index.js │ ├── store │ ├── index.js │ ├── keepAlive.js │ ├── mutitabs.js │ └── siteTheme.js │ ├── utils │ ├── color.js │ ├── directive.js │ ├── menu.js │ ├── menuTree.js │ └── util.js │ └── views │ ├── adminManage │ ├── adminManage.vue │ └── components │ │ └── addAdmin.vue │ ├── dashBoard │ └── analysis.vue │ ├── error │ └── 404.vue │ ├── financeManage │ └── financeStatisticsGoods.vue │ ├── index.vue │ ├── journalManage │ ├── journalManage.vue │ └── journalManageDetail.vue │ ├── login.vue │ ├── loginsimple.vue │ ├── lyterminal.vue │ ├── mallManage │ ├── components │ │ ├── addModuleGoodsManage.vue │ │ └── addModuleGoodsType.vue │ ├── goodsManage.vue │ └── goodsType.vue │ ├── messageCenter │ ├── components │ │ ├── addModuleNotice.vue │ │ └── addModuleTemplate.vue │ ├── messagNotice.vue │ └── messagTemplate.vue │ ├── monitorManage │ ├── crontab │ │ ├── components │ │ │ ├── cronExpression.vue │ │ │ ├── cronlogs.vue │ │ │ ├── crontabModule.vue │ │ │ └── language │ │ │ │ ├── cn.js │ │ │ │ ├── en.js │ │ │ │ ├── index.js │ │ │ │ └── pt_br.js │ │ └── crontab.vue │ ├── server │ │ └── server.vue │ └── terminal │ │ ├── components │ │ └── addModuleTerminal.vue │ │ └── terminal.vue │ ├── orderManage │ ├── components │ │ ├── deliverGoodsModule.vue │ │ └── shoppingMallOrderDetail.vue │ └── mallOrderManage.vue │ ├── personalCenter │ └── personalCenter.vue │ ├── platformSettings │ ├── carouselSettingsimg.vue │ ├── components │ │ ├── addCarouselModule.vue │ │ └── addModuleOther.vue │ └── platformSettingsother.vue │ ├── systemManage │ ├── areaManage │ │ ├── areaManage.vue │ │ └── components │ │ │ └── addArea.vue │ ├── authorityManage │ │ └── authorityManage.vue │ ├── button │ │ ├── buttonManage.vue │ │ └── components │ │ │ └── addButton.vue │ ├── buttonConfig │ │ ├── buttonConfig.vue │ │ └── components │ │ │ └── addButton.vue │ ├── departmentManage │ │ ├── components │ │ │ └── addDepartment.vue │ │ └── departmentManage.vue │ ├── menuManage │ │ ├── components │ │ │ └── addMenu.vue │ │ └── menuManage.vue │ ├── roleManage │ │ ├── components │ │ │ └── addRole.vue │ │ └── roleManage.vue │ └── systemConfig │ │ ├── components │ │ ├── addModuleContent.vue │ │ ├── addModuleGroup.vue │ │ └── formItem.vue │ │ └── systemConfig.vue │ ├── userFeekback │ ├── components │ │ └── addModule.vue │ └── userFeekback.vue │ └── userManage │ ├── components │ ├── addUser.vue │ └── userDetail.vue │ ├── userManage.vue │ └── userManageCrud.vue └── frontend_vite ├── .gitignore ├── README.md ├── babel.config.js ├── index.html ├── package.json ├── public ├── favicon.ico └── static │ ├── favicon.ico │ └── tinymce │ ├── CHANGELOG.md │ ├── README.md │ ├── bower.json │ ├── composer.json │ ├── icons │ └── default │ │ ├── icons.js │ │ ├── icons.min.js │ │ └── index.js │ ├── jquery.tinymce.js │ ├── jquery.tinymce.min.js │ ├── langs │ └── zh_CN.js │ ├── license.txt │ ├── package.json │ ├── plugins │ ├── advlist │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── anchor │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── autolink │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── autoresize │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── autosave │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── bbcode │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── charmap │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── code │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── codesample │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── colorpicker │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── contextmenu │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── directionality │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── emoticons │ │ ├── index.js │ │ ├── js │ │ │ ├── emojiimages.js │ │ │ ├── emojiimages.min.js │ │ │ ├── emojis.js │ │ │ └── emojis.min.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── fullpage │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── fullscreen │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── help │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── hr │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── image │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── imagetools │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── importcss │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── insertdatetime │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── legacyoutput │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── link │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── lists │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── media │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── nonbreaking │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── noneditable │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── pagebreak │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── paste │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── preview │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── print │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── quickbars │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── save │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── searchreplace │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── spellchecker │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── tabfocus │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── table │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── template │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── textcolor │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── textpattern │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── toc │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── visualblocks │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── visualchars │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ └── wordcount │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── skins │ ├── content │ │ ├── dark │ │ │ ├── content.css │ │ │ └── content.min.css │ │ ├── default │ │ │ ├── content.css │ │ │ └── content.min.css │ │ ├── document │ │ │ ├── content.css │ │ │ └── content.min.css │ │ └── writer │ │ │ ├── content.css │ │ │ └── content.min.css │ └── ui │ │ ├── oxide-dark │ │ ├── content.css │ │ ├── content.inline.css │ │ ├── content.inline.min.css │ │ ├── content.min.css │ │ ├── content.mobile.css │ │ ├── content.mobile.min.css │ │ ├── fonts │ │ │ └── tinymce-mobile.woff │ │ ├── skin.css │ │ ├── skin.min.css │ │ ├── skin.mobile.css │ │ ├── skin.mobile.min.css │ │ ├── skin.shadowdom.css │ │ └── skin.shadowdom.min.css │ │ └── oxide │ │ ├── content.css │ │ ├── content.inline.css │ │ ├── content.inline.min.css │ │ ├── content.min.css │ │ ├── content.mobile.css │ │ ├── content.mobile.min.css │ │ ├── fonts │ │ └── tinymce-mobile.woff │ │ ├── skin.css │ │ ├── skin.min.css │ │ ├── skin.mobile.css │ │ ├── skin.mobile.min.css │ │ ├── skin.shadowdom.css │ │ └── skin.shadowdom.min.css │ ├── themes │ ├── mobile │ │ ├── index.js │ │ ├── theme.js │ │ └── theme.min.js │ └── silver │ │ ├── index.js │ │ ├── theme.js │ │ └── theme.min.js │ ├── tinymce.d.ts │ ├── tinymce.js │ └── tinymce.min.js ├── src ├── App.vue ├── api │ ├── api.js │ ├── date.js │ ├── request.js │ └── url.js ├── assets │ ├── css │ │ ├── common.scss │ │ ├── elementplus-theme-dark-css-vars.css │ │ └── nprogress.scss │ ├── img │ │ ├── alipay.jpg │ │ ├── alired.jpg │ │ ├── avatar.jpg │ │ ├── avatar02.jpg │ │ ├── bgiphonehen.png │ │ ├── bgiphonejian.png │ │ ├── cronexpress.png │ │ ├── logo.png │ │ ├── qq.jpg │ │ ├── show.png │ │ ├── sq.png │ │ ├── task01.png │ │ ├── task02.png │ │ └── wechat.jpg │ └── logo.png ├── components │ ├── Pagination.vue │ ├── TEditor.vue │ ├── analysis │ │ ├── barEchart.vue │ │ ├── echartCard.vue │ │ ├── echartsInstall.js │ │ ├── growCard.vue │ │ └── lineEchart.vue │ ├── dialog │ │ └── dialog.vue │ ├── dict │ │ └── crudTemplateData.js │ ├── icons │ │ └── chooseIcons.vue │ ├── leftnav.vue │ ├── lycrud.vue │ ├── monitor │ │ ├── echartCard.vue │ │ ├── lyLineEchart.vue │ │ └── statusCard.vue │ ├── mutitabs.vue │ ├── navcon.vue │ ├── pagination │ │ └── pagination.vue │ ├── render │ │ └── render.vue │ ├── teditorjs │ │ ├── config.js │ │ └── importTinymce.js │ ├── terminal │ │ └── xterm.vue │ └── upload │ │ ├── avatar.vue │ │ └── goods.vue ├── config │ └── index.js ├── locales │ ├── index.js │ └── lang │ │ ├── en.js │ │ └── zh-cn.js ├── main.js ├── mixins │ └── mixins.js ├── router │ └── index.js ├── store │ ├── index.js │ ├── keepAlive.js │ ├── mutitabs.js │ └── siteTheme.js ├── utils │ ├── color.js │ ├── directive.js │ ├── menu.js │ ├── menuTree.js │ └── util.js └── views │ ├── adminManage │ ├── adminManage.vue │ └── components │ │ └── addAdmin.vue │ ├── dashBoard │ └── analysis.vue │ ├── error │ └── 404.vue │ ├── financeManage │ └── financeStatisticsGoods.vue │ ├── index.vue │ ├── journalManage │ ├── journalManage.vue │ └── journalManageDetail.vue │ ├── login.vue │ ├── loginsimple.vue │ ├── lyterminal.vue │ ├── mallManage │ ├── components │ │ ├── addModuleGoodsManage.vue │ │ └── addModuleGoodsType.vue │ ├── goodsManage.vue │ └── goodsType.vue │ ├── messageCenter │ ├── components │ │ ├── addModuleNotice.vue │ │ └── addModuleTemplate.vue │ ├── messagNotice.vue │ └── messagTemplate.vue │ ├── monitorManage │ ├── crontab │ │ ├── components │ │ │ ├── cronExpression.vue │ │ │ ├── cronlogs.vue │ │ │ ├── crontabModule.vue │ │ │ └── language │ │ │ │ ├── cn.js │ │ │ │ ├── en.js │ │ │ │ ├── index.js │ │ │ │ └── pt_br.js │ │ └── crontab.vue │ ├── server │ │ └── server.vue │ └── terminal │ │ ├── components │ │ └── addModuleTerminal.vue │ │ └── terminal.vue │ ├── orderManage │ ├── components │ │ ├── deliverGoodsModule.vue │ │ └── shoppingMallOrderDetail.vue │ └── mallOrderManage.vue │ ├── personalCenter │ └── personalCenter.vue │ ├── platformSettings │ ├── carouselSettingsimg.vue │ ├── components │ │ ├── addCarouselModule.vue │ │ └── addModuleOther.vue │ └── platformSettingsother.vue │ ├── systemManage │ ├── areaManage │ │ ├── areaManage.vue │ │ └── components │ │ │ └── addArea.vue │ ├── authorityManage │ │ └── authorityManage.vue │ ├── button │ │ ├── buttonManage.vue │ │ └── components │ │ │ └── addButton.vue │ ├── buttonConfig │ │ ├── buttonConfig.vue │ │ └── components │ │ │ └── addButton.vue │ ├── departmentManage │ │ ├── components │ │ │ └── addDepartment.vue │ │ └── departmentManage.vue │ ├── menuManage │ │ ├── components │ │ │ └── addMenu.vue │ │ └── menuManage.vue │ ├── roleManage │ │ ├── components │ │ │ └── addRole.vue │ │ └── roleManage.vue │ └── systemConfig │ │ ├── components │ │ ├── addModuleContent.vue │ │ ├── addModuleGroup.vue │ │ └── formItem.vue │ │ └── systemConfig.vue │ ├── userFeekback │ ├── components │ │ └── addModule.vue │ └── userFeekback.vue │ └── userManage │ ├── components │ ├── addUser.vue │ └── userDetail.vue │ ├── userManage.vue │ └── userManageCrud.vue └── vite.config.js /backend/.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | logs 3 | # virtualenv 4 | /venv/ 5 | *.log 6 | *.pot 7 | *.py[cod] 8 | __pycache__ 9 | .env 10 | .venv 11 | #项目日志和上传资源目录 12 | /logs/ 13 | #/media/ 14 | # Installer logs 15 | pip-log.txt 16 | pip-delete-this-directory.txt -------------------------------------------------------------------------------- /backend/application/__init__.py: -------------------------------------------------------------------------------- 1 | #Django连接MySQL时默认使用MySQLdb驱动,但MySQLdb不支持Python3,因此这里将MySQL驱动设置为pymysql 2 | import pymysql 3 | 4 | pymysql.install_as_MySQLdb() -------------------------------------------------------------------------------- /backend/application/asgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | ASGI config for application project. 3 | 4 | It exposes the ASGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/3.2/howto/deployment/asgi/ 8 | """ 9 | 10 | import os 11 | import django 12 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'application.settings') 13 | django.setup() 14 | 15 | from django.core.asgi import get_asgi_application 16 | 17 | from utils.middleware import JwtAuthMiddleware 18 | from channels.routing import ProtocolTypeRouter, URLRouter 19 | from apps.lywebsocket.routing import websocket_urlpatterns 20 | 21 | 22 | # application = get_asgi_application() 23 | 24 | application = ProtocolTypeRouter({ 25 | "http": get_asgi_application(),# 也可以不需要此项,普通的HTTP请求不需要我们手动在这里添加,框架会自动加载 26 | "websocket": JwtAuthMiddleware( 27 | # 多个url合并一起使用,多个子路由列表相加:a+b 28 | URLRouter( 29 | websocket_urlpatterns 30 | ) 31 | ), 32 | }) 33 | -------------------------------------------------------------------------------- /backend/application/celery.py: -------------------------------------------------------------------------------- 1 | #!/bin/python 2 | #coding: utf-8 3 | # +------------------------------------------------------------------- 4 | # | system: django-vue-lyadmin 5 | # +------------------------------------------------------------------- 6 | # | Author: lybbn 7 | # +------------------------------------------------------------------- 8 | # | QQ: 1042594286 9 | # +------------------------------------------------------------------- 10 | 11 | # ------------------------------ 12 | # celery 13 | # ------------------------------ 14 | # 官网 15 | # https://docs.celeryproject.org/en/stable/index.html 16 | # https://django-celery-beat.readthedocs.io/en/latest/ 17 | # http://django-celery-results.readthedocs.io/ 18 | # ------------------------------ 19 | 20 | import os 21 | from django.conf import settings 22 | from celery import platforms 23 | from celery import Celery 24 | 25 | # Set the default Django settings module for the 'celery' program. 26 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'application.settings') 27 | 28 | app = Celery("application") 29 | 30 | # Using a string here means the worker doesn't have to serialize 31 | # the configuration object to child processes. 32 | # - namespace='CELERY' means all celery-related configuration keys 33 | # should have a `CELERY_` prefix. 34 | app.config_from_object('django.conf:settings',namespace='CELERY') 35 | 36 | app.autodiscover_tasks(lambda: settings.INSTALLED_APPS) 37 | 38 | platforms.C_FORCE_ROOT = True -------------------------------------------------------------------------------- /backend/application/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for application project. 3 | 4 | It exposes the WSGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/3.2/howto/deployment/wsgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.wsgi import get_wsgi_application 13 | 14 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'application.settings') 15 | 16 | application = get_wsgi_application() 17 | -------------------------------------------------------------------------------- /backend/apps/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/apps/__init__.py -------------------------------------------------------------------------------- /backend/apps/address/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/apps/address/__init__.py -------------------------------------------------------------------------------- /backend/apps/address/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /backend/apps/address/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class AddressConfig(AppConfig): 5 | default_auto_field = 'django.db.models.BigAutoField' 6 | name = 'apps.address' 7 | -------------------------------------------------------------------------------- /backend/apps/address/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/apps/address/migrations/__init__.py -------------------------------------------------------------------------------- /backend/apps/address/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /backend/apps/address/urls.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | """ 4 | @Remark: 地区地址相关的路由文件 5 | """ 6 | from django.urls import path, re_path 7 | from rest_framework import routers 8 | 9 | from apps.address.views import AreaViewSet 10 | 11 | system_url = routers.SimpleRouter() 12 | system_url.register(r'area', AreaViewSet) 13 | 14 | urlpatterns = [ 15 | re_path('area_root/', AreaViewSet.as_view({'get': 'area_root'})), 16 | ] 17 | urlpatterns += system_url.urls 18 | -------------------------------------------------------------------------------- /backend/apps/logins/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/apps/logins/__init__.py -------------------------------------------------------------------------------- /backend/apps/logins/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /backend/apps/logins/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class LoginsConfig(AppConfig): 5 | default_auto_field = 'django.db.models.BigAutoField' 6 | name = 'apps.logins' 7 | -------------------------------------------------------------------------------- /backend/apps/logins/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/apps/logins/migrations/__init__.py -------------------------------------------------------------------------------- /backend/apps/logins/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | # Create your models here. 4 | -------------------------------------------------------------------------------- /backend/apps/logins/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /backend/apps/lycrontab/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/apps/lycrontab/__init__.py -------------------------------------------------------------------------------- /backend/apps/lycrontab/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /backend/apps/lycrontab/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class LycrontabConfig(AppConfig): 5 | default_auto_field = 'django.db.models.BigAutoField' 6 | name = 'apps.lycrontab' 7 | -------------------------------------------------------------------------------- /backend/apps/lycrontab/filters.py: -------------------------------------------------------------------------------- 1 | #!/bin/python 2 | #coding: utf-8 3 | # +------------------------------------------------------------------- 4 | # | system: django-vue-lyadmin 5 | # +------------------------------------------------------------------- 6 | # | Author: lybbn 7 | # +------------------------------------------------------------------- 8 | # | QQ: 1042594286 9 | # +------------------------------------------------------------------- 10 | 11 | # ------------------------------ 12 | # django-filter 过滤 13 | # ------------------------------ 14 | import django_filters 15 | from django_celery_results.models import TaskResult 16 | from django_celery_beat.models import PeriodicTask 17 | 18 | class CeleryPeriodicTaskFilterSet(django_filters.FilterSet): 19 | """ 20 | PeriodicTask 过滤 21 | """ 22 | 23 | name = django_filters.CharFilter(field_name='name', lookup_expr='icontains') 24 | enabled = django_filters.BooleanFilter(field_name='enabled') 25 | task = django_filters.CharFilter(field_name='task', lookup_expr='icontains') 26 | 27 | class Meta: 28 | model = PeriodicTask 29 | fields = ['name', 'enabled','task'] 30 | 31 | class CeleryTaskResultFilterSet(django_filters.FilterSet): 32 | """ 33 | TaskResult过滤 34 | """ 35 | 36 | date_created = django_filters.BaseRangeFilter(field_name="date_created") 37 | 38 | class Meta: 39 | model = TaskResult 40 | fields = ['id','task_id', 'status', 'date_done', 'date_created', 'result', 'task_name','periodic_task_name'] 41 | 42 | -------------------------------------------------------------------------------- /backend/apps/lycrontab/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/apps/lycrontab/migrations/__init__.py -------------------------------------------------------------------------------- /backend/apps/lycrontab/tasks.py: -------------------------------------------------------------------------------- 1 | #!/bin/python 2 | #coding: utf-8 3 | # +------------------------------------------------------------------- 4 | # | system: django-vue-lyadmin 5 | # +------------------------------------------------------------------- 6 | # | Author: lybbn 7 | # +------------------------------------------------------------------- 8 | # | QQ: 1042594286 9 | # +------------------------------------------------------------------- 10 | 11 | # ------------------------------ 12 | # celery 任务文件 13 | # ------------------------------ 14 | 15 | from application.celery import app 16 | 17 | @app.task(bind=True) 18 | def lytask_test(self): 19 | print(self.request) 20 | return "django-vue-lyadmin lycrontab running" -------------------------------------------------------------------------------- /backend/apps/lycrontab/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /backend/apps/lycrontab/urls.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | @Remark: 计划任务的路由文件 4 | """ 5 | from django.urls import path, re_path 6 | from rest_framework import routers 7 | 8 | from apps.lycrontab.views.celery_crontab_schedule import CrontabScheduleModelViewSet 9 | from apps.lycrontab.views.celery_interval_schedule import IntervalScheduleModelViewSet 10 | from apps.lycrontab.views.celery_periodic_task import PeriodicTaskModelViewSet 11 | from apps.lycrontab.views.celery_task_result import CeleryTaskResultViewSet 12 | 13 | system_url = routers.SimpleRouter() 14 | 15 | system_url.register(r'intervalschedule', IntervalScheduleModelViewSet) 16 | system_url.register(r'crontabschedule', CrontabScheduleModelViewSet) 17 | system_url.register(r'periodictask', PeriodicTaskModelViewSet) 18 | system_url.register(r'taskresult', CeleryTaskResultViewSet) 19 | 20 | urlpatterns = [ 21 | re_path('periodictask/enabled/(?P.*?)/',PeriodicTaskModelViewSet.as_view({'put':'taskenabled'}), name='开始/暂停任务'), 22 | path('periodictask/tasklist/',PeriodicTaskModelViewSet.as_view({'get':'tasklist'}), name='获取本地所有tasks文件中的task任务方法'), 23 | 24 | 25 | ] 26 | 27 | urlpatterns += system_url.urls -------------------------------------------------------------------------------- /backend/apps/lycrontab/views/celery_clocked_schedule.py: -------------------------------------------------------------------------------- 1 | #!/bin/python 2 | #coding: utf-8 3 | # +------------------------------------------------------------------- 4 | # | system: django-vue-lyadmin 5 | # +------------------------------------------------------------------- 6 | # | Author: lybbn 7 | # +------------------------------------------------------------------- 8 | # | QQ: 1042594286 9 | # +------------------------------------------------------------------- 10 | 11 | # ------------------------------ 12 | # django_celery_beat ClockedSchedule view 13 | # ------------------------------ 14 | 15 | from django_celery_beat.models import ClockedSchedule 16 | 17 | from utils.serializers import CustomModelSerializer 18 | from utils.viewset import CustomModelViewSet 19 | 20 | class ClockedScheduleSerializer(CustomModelSerializer): 21 | 22 | class Meta: 23 | model = ClockedSchedule 24 | read_only_fields = ["id"] 25 | fields = '__all__' 26 | 27 | 28 | class ClockedScheduleModelViewSet(CustomModelViewSet): 29 | """ 30 | 时钟时间(DateTimeField)运行一次性任务 31 | """ 32 | queryset = ClockedSchedule.objects.all() 33 | serializer_class = ClockedScheduleSerializer -------------------------------------------------------------------------------- /backend/apps/lycrontab/views/celery_crontab_schedule.py: -------------------------------------------------------------------------------- 1 | #!/bin/python 2 | #coding: utf-8 3 | # +------------------------------------------------------------------- 4 | # | system: django-vue-lyadmin 5 | # +------------------------------------------------------------------- 6 | # | Author: lybbn 7 | # +------------------------------------------------------------------- 8 | # | QQ: 1042594286 9 | # +------------------------------------------------------------------- 10 | 11 | # ------------------------------ 12 | # django_celery_beat CrontabSchedule view 13 | # ------------------------------ 14 | 15 | from django_celery_beat.models import CrontabSchedule 16 | 17 | from utils.serializers import CustomModelSerializer 18 | from utils.viewset import CustomModelViewSet 19 | 20 | class CrontabScheduleSerializer(CustomModelSerializer): 21 | 22 | class Meta: 23 | model = CrontabSchedule 24 | read_only_fields = ["id"] 25 | exclude = ('timezone',) 26 | # fields = '__all__' 27 | 28 | 29 | class CrontabScheduleModelViewSet(CustomModelViewSet): 30 | """ 31 | crontab 的周期性任务(同linux的crontab) 32 | 33 | minute="0" 分钟 34 | hour="*" 小时 35 | day_of_week="*" 每周的星期几 36 | day_of_month="10-15" 每月的某一天或间隔 37 | month_of_year="*" 每年的某一个月 38 | """ 39 | queryset = CrontabSchedule.objects.all() 40 | serializer_class = CrontabScheduleSerializer -------------------------------------------------------------------------------- /backend/apps/lycrontab/views/celery_interval_schedule.py: -------------------------------------------------------------------------------- 1 | #!/bin/python 2 | #coding: utf-8 3 | # +------------------------------------------------------------------- 4 | # | system: django-vue-lyadmin 5 | # +------------------------------------------------------------------- 6 | # | Author: lybbn 7 | # +------------------------------------------------------------------- 8 | # | QQ: 1042594286 9 | # +------------------------------------------------------------------- 10 | 11 | # ------------------------------ 12 | # django_celery_beat IntervalSchedule view 13 | # ------------------------------ 14 | 15 | from django_celery_beat.models import IntervalSchedule 16 | 17 | from utils.serializers import CustomModelSerializer 18 | from utils.viewset import CustomModelViewSet 19 | 20 | 21 | class IntervalScheduleSerializer(CustomModelSerializer): 22 | 23 | class Meta: 24 | model = IntervalSchedule 25 | read_only_fields = ["id"] 26 | fields = '__all__' 27 | 28 | 29 | class IntervalScheduleModelViewSet(CustomModelViewSet): 30 | """ 31 | 以特定(固定间隔)时间间隔(例如每 5 秒)运行的计划(每 /月/日/时/分/秒/微秒) 32 | DAYS = 'days' 33 | HOURS = 'hours' 34 | MINUTES = 'minutes' 35 | SECONDS = 'seconds' 36 | MICROSECONDS = 'microseconds' 37 | """ 38 | queryset = IntervalSchedule.objects.all() 39 | serializer_class = IntervalScheduleSerializer 40 | 41 | -------------------------------------------------------------------------------- /backend/apps/lycrontab/views/celery_task_result.py: -------------------------------------------------------------------------------- 1 | #!/bin/python 2 | #coding: utf-8 3 | # +------------------------------------------------------------------- 4 | # | system: django-vue-lyadmin 5 | # +------------------------------------------------------------------- 6 | # | Author: lybbn 7 | # +------------------------------------------------------------------- 8 | # | QQ: 1042594286 9 | # +------------------------------------------------------------------- 10 | 11 | # ------------------------------ 12 | # django_celery_results TaskResult view 13 | # ------------------------------ 14 | 15 | from django_celery_results.models import TaskResult 16 | 17 | from utils.serializers import CustomModelSerializer 18 | from utils.viewset import CustomModelViewSet 19 | 20 | from apps.lycrontab.filters import CeleryTaskResultFilterSet 21 | 22 | 23 | 24 | class CeleryTaskResultSerializer(CustomModelSerializer): 25 | """ 26 | 定时任务结果 序列化器 27 | """ 28 | class Meta: 29 | model = TaskResult 30 | fields = '__all__' 31 | 32 | 33 | class CeleryTaskResultViewSet(CustomModelViewSet): 34 | """ 35 | 定时任务 接口 36 | """ 37 | queryset = TaskResult.objects.all() 38 | serializer_class = CeleryTaskResultSerializer 39 | filter_class = CeleryTaskResultFilterSet -------------------------------------------------------------------------------- /backend/apps/lymessages/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/apps/lymessages/__init__.py -------------------------------------------------------------------------------- /backend/apps/lymessages/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /backend/apps/lymessages/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class LymessagesConfig(AppConfig): 5 | default_auto_field = 'django.db.models.BigAutoField' 6 | name = 'apps.lymessages' 7 | -------------------------------------------------------------------------------- /backend/apps/lymessages/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/apps/lymessages/migrations/__init__.py -------------------------------------------------------------------------------- /backend/apps/lymessages/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /backend/apps/lymessages/urls.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | """ 4 | @Remark: 消息的路由文件 5 | """ 6 | 7 | from django.urls import path, re_path 8 | from rest_framework import routers 9 | 10 | from apps.lymessages.views import MyMessageTemplateViewSet,MyMessageViewSet 11 | 12 | system_url = routers.SimpleRouter() 13 | system_url.register(r'messagetemplate', MyMessageTemplateViewSet) 14 | system_url.register(r'messagenotice', MyMessageViewSet) 15 | 16 | 17 | 18 | urlpatterns = [ 19 | 20 | ] 21 | urlpatterns += system_url.urls -------------------------------------------------------------------------------- /backend/apps/lymonitor/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/apps/lymonitor/__init__.py -------------------------------------------------------------------------------- /backend/apps/lymonitor/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /backend/apps/lymonitor/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class LymonitorConfig(AppConfig): 5 | default_auto_field = 'django.db.models.BigAutoField' 6 | name = 'apps.lymonitor' 7 | -------------------------------------------------------------------------------- /backend/apps/lymonitor/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/apps/lymonitor/migrations/__init__.py -------------------------------------------------------------------------------- /backend/apps/lymonitor/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | from utils.models import CoreModel,BaseModel 3 | # Create your models here. 4 | 5 | # ================================================= # 6 | # ************** 服务端监控信息 model************** # 7 | # ================================================= # 8 | 9 | class MonitorManage(CoreModel): 10 | ip = models.CharField(max_length=50, verbose_name="服务器IP", null=True,blank=True) 11 | name = models.CharField(max_length=50,verbose_name="名称",null=True,blank=True) 12 | os = models.CharField(max_length=50, verbose_name="系统名称", null=True, blank=True)#windows、centos、小写 13 | online = models.BooleanField(default=False,verbose_name="在线状态") 14 | status = models.BooleanField(default=True,verbose_name="监控状态")#True开启 False关闭 15 | days = models.SmallIntegerField(default=30, verbose_name="日志保留天数") 16 | interval = models.SmallIntegerField(default=5, verbose_name="监控日志刷新间隔") 17 | islocal = models.BooleanField(default=False,verbose_name="是否是本机监控") 18 | 19 | class Meta: 20 | db_table = 'tb_monitor' 21 | verbose_name = "服务监控" 22 | verbose_name_plural = verbose_name 23 | -------------------------------------------------------------------------------- /backend/apps/lymonitor/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /backend/apps/lymonitor/urls.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | """ 4 | @Remark: 服务器监控的路由文件 5 | """ 6 | 7 | from django.urls import path, re_path 8 | from rest_framework import routers 9 | 10 | from apps.lymonitor.views import MonitorManageViewSet 11 | 12 | system_url = routers.SimpleRouter() 13 | system_url.register(r'monitor', MonitorManageViewSet) 14 | 15 | 16 | urlpatterns = [ 17 | path('getsysteminfo/',MonitorManageViewSet.as_view({'get':'getsysteminfo'}), name='实时获取本机监控信息'), 18 | 19 | ] 20 | urlpatterns += system_url.urls -------------------------------------------------------------------------------- /backend/apps/lymonitor/views.py: -------------------------------------------------------------------------------- 1 | from rest_framework.views import APIView 2 | from utils.jsonResponse import SuccessResponse,ErrorResponse,DetailResponse 3 | from rest_framework.serializers import ModelSerializer 4 | from rest_framework import serializers 5 | from rest_framework_simplejwt.authentication import JWTAuthentication 6 | from utils.serializers import CustomModelSerializer 7 | from utils.viewset import CustomModelViewSet 8 | from utils.server.system import system 9 | from apps.lymonitor.models import MonitorManage 10 | # Create your views here. 11 | 12 | class MonitorManageSerializer(CustomModelSerializer): 13 | """ 14 | 服务器监控 简单序列化器 15 | """ 16 | 17 | class Meta: 18 | model = MonitorManage 19 | # fields = "__all__" 20 | exclude = ['dept_belong_id', 'modifier', 'creator', 'description'] 21 | read_only_fields = ["id"] 22 | 23 | class MonitorManageViewSet(CustomModelViewSet): 24 | """ 25 | 前端用户服务器监控 26 | get: 27 | 前端用户服务器监控 28 | """ 29 | 30 | queryset = MonitorManage.objects.all().order_by("create_datetime") 31 | serializer_class = MonitorManageSerializer 32 | 33 | def getsysteminfo(self, request): 34 | data = system().GetSystemAllInfo() 35 | return DetailResponse(data=data) 36 | -------------------------------------------------------------------------------- /backend/apps/lyusers/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/apps/lyusers/__init__.py -------------------------------------------------------------------------------- /backend/apps/lyusers/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /backend/apps/lyusers/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class LyusersConfig(AppConfig): 5 | default_auto_field = 'django.db.models.BigAutoField' 6 | name = 'apps.lyusers' 7 | -------------------------------------------------------------------------------- /backend/apps/lyusers/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/apps/lyusers/migrations/__init__.py -------------------------------------------------------------------------------- /backend/apps/lyusers/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | # Create your models here. 4 | -------------------------------------------------------------------------------- /backend/apps/lyusers/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /backend/apps/lyusers/urls.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | """ 4 | @Remark: 用户模块的路由文件 5 | """ 6 | 7 | from django.urls import path, re_path 8 | from rest_framework import routers 9 | 10 | from apps.lyusers.views import UserManageViewSet 11 | 12 | system_url = routers.SimpleRouter() 13 | system_url.register(r'users', UserManageViewSet) 14 | 15 | 16 | 17 | urlpatterns = [ 18 | re_path('users/disableuser/(?P.*?)/',UserManageViewSet.as_view({'put':'disableuser'}), name='后台禁用用户'), 19 | path('users/exportexecl/',UserManageViewSet.as_view({'get':'exportexecl'}), name='后台导出数据'), 20 | ] 21 | urlpatterns += system_url.urls -------------------------------------------------------------------------------- /backend/apps/lywebsocket/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/apps/lywebsocket/__init__.py -------------------------------------------------------------------------------- /backend/apps/lywebsocket/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /backend/apps/lywebsocket/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class LywebsocketConfig(AppConfig): 5 | default_auto_field = 'django.db.models.BigAutoField' 6 | name = 'apps.lywebsocket' 7 | -------------------------------------------------------------------------------- /backend/apps/lywebsocket/migrations/0002_terminalserver_port.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.0.5 on 2022-07-17 17:46 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('lywebsocket', '0001_initial'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='terminalserver', 15 | name='port', 16 | field=models.IntegerField(default=22, help_text='端口号', verbose_name='端口号'), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /backend/apps/lywebsocket/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/apps/lywebsocket/migrations/__init__.py -------------------------------------------------------------------------------- /backend/apps/lywebsocket/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | from utils.models import CoreModel,BaseModel 3 | # Create your models here. 4 | # ================================================= # 5 | # ************** 终端服务器信息 model************** # 6 | # ================================================= # 7 | 8 | class TerminalServer(CoreModel): 9 | TYPE_CHOICES = ( 10 | (0, "密码验证"), 11 | (1, "私钥验证"), 12 | ) 13 | host = models.CharField(max_length=100, verbose_name="服务器IP/域名") 14 | port = models.IntegerField(verbose_name="端口号", default=22,help_text="端口号") 15 | remark = models.CharField(max_length=100,verbose_name="备注",null=True,blank=True) 16 | username = models.CharField(max_length=200, verbose_name="用户名") 17 | password = models.CharField(max_length=200, verbose_name="密码",null=True,blank=True) 18 | pkey = models.CharField(max_length=255, verbose_name="私钥",null=True,blank=True) 19 | pkey_passwd = models.CharField(max_length=255, verbose_name="私钥密码",null=True,blank=True) 20 | type = models.SmallIntegerField(choices=TYPE_CHOICES, verbose_name="验证方式", default=0,help_text="验证方式") 21 | 22 | class Meta: 23 | db_table = 'tb_terminalserver' 24 | verbose_name = "终端服务器列表" 25 | verbose_name_plural = verbose_name 26 | -------------------------------------------------------------------------------- /backend/apps/lywebsocket/routing.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | """ 4 | @Remark: websocket的路由文件 5 | """ 6 | from django.urls import re_path,path 7 | 8 | from . import consumers 9 | 10 | websocket_urlpatterns = [ 11 | re_path(r'^ws/webssh/$', consumers.TerminalConsumer.as_asgi()), 12 | ] -------------------------------------------------------------------------------- /backend/apps/lywebsocket/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /backend/apps/lywebsocket/urls.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | """ 4 | @Remark: 终端服务的路由文件 5 | """ 6 | 7 | from django.urls import path, re_path 8 | from rest_framework import routers 9 | 10 | from apps.lywebsocket.views import TerminalServerViewSet 11 | 12 | system_url = routers.SimpleRouter() 13 | system_url.register(r'terminal', TerminalServerViewSet) 14 | 15 | urlpatterns = [ 16 | ] 17 | urlpatterns += system_url.urls -------------------------------------------------------------------------------- /backend/apps/mall/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/apps/mall/__init__.py -------------------------------------------------------------------------------- /backend/apps/mall/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /backend/apps/mall/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | from django.utils.module_loading import autodiscover_modules 3 | import os 4 | import psutil 5 | 6 | class MallConfig(AppConfig): 7 | default_auto_field = 'django.db.models.BigAutoField' 8 | name = 'apps.mall' 9 | 10 | # # 启动django时自动执行该脚本 11 | # def ready(self): 12 | # if ismainrun(): 13 | # print("商城订单超时自动取消功能正在启动........") 14 | # excutemallordercancle() 15 | # print("商城订单超时自动取消功能已启动") 16 | 17 | 18 | def excutemallordercancle(): 19 | autodiscover_modules('redis_ex_mallorder_callback') 20 | 21 | 22 | def ismainrun(): 23 | """ 24 | 判断是否是django的主程序执行的 25 | """ 26 | p = psutil.Process(os.getpid()) 27 | return (os.environ.get('RUN_MAIN')=='true') or ('--noreload' in p.cmdline()) or ('application.wsgi:application' in p.cmdline()) -------------------------------------------------------------------------------- /backend/apps/mall/migrations/0002_alter_sku_options_alter_skuspecification_options_and_more.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.0.5 on 2022-07-31 22:47 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('mall', '0001_initial'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterModelOptions( 14 | name='sku', 15 | options={'ordering': ['create_datetime'], 'verbose_name': '商品SKU', 'verbose_name_plural': '商品SKU'}, 16 | ), 17 | migrations.AlterModelOptions( 18 | name='skuspecification', 19 | options={'ordering': ['create_datetime'], 'verbose_name': 'SKU规格', 'verbose_name_plural': 'SKU规格'}, 20 | ), 21 | migrations.AlterModelOptions( 22 | name='spuspecification', 23 | options={'ordering': ['create_datetime'], 'verbose_name': '商品SPU规格', 'verbose_name_plural': '商品SPU规格'}, 24 | ), 25 | migrations.AlterModelOptions( 26 | name='spuspecificationoption', 27 | options={'ordering': ['create_datetime'], 'verbose_name': '规格选项', 'verbose_name_plural': '规格选项'}, 28 | ), 29 | ] 30 | -------------------------------------------------------------------------------- /backend/apps/mall/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/apps/mall/migrations/__init__.py -------------------------------------------------------------------------------- /backend/apps/mall/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /backend/apps/mall/urls.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | """ 4 | @Remark: 商城路由文件 5 | """ 6 | from django.urls import path, re_path 7 | from rest_framework import routers 8 | 9 | from apps.mall.views import GoodsCategoryManageViewSet,GoodsCouponManageViewSet,CouponRecordManageViewSet 10 | from apps.mall.views import GoodsSPUViewSet,FinanceOrderInfoViewSet,GoodsOrderManageViewSet 11 | 12 | system_url = routers.SimpleRouter() 13 | system_url.register(r'goodstype', GoodsCategoryManageViewSet) 14 | system_url.register(r'goodscoupon', GoodsCouponManageViewSet) 15 | system_url.register(r'couponrecord', CouponRecordManageViewSet) 16 | system_url.register(r'goodsspu', GoodsSPUViewSet) 17 | system_url.register(r'goodsforderinfo', FinanceOrderInfoViewSet) 18 | system_url.register(r'goodsorder', GoodsOrderManageViewSet,basename='goodsorder') 19 | 20 | 21 | urlpatterns = [ 22 | re_path('goodsspu/islaunched/(?P.*?)/', GoodsSPUViewSet.as_view({'put':'islaunched'}), name='后台根据sku_id上下架商品'), 23 | re_path('goodsspu/editskups/(?P.*?)/', GoodsSPUViewSet.as_view({'put':'editsku_price_stock'}), name='后台根据sku_id上下架商品'), 24 | path('goodsforderinfo/orderstatistics/',FinanceOrderInfoViewSet.as_view({'get':'orderstatistics'}), name='后台商品类订单金额统计'), 25 | path('goodsorder/sendoutgoods/', GoodsOrderManageViewSet.as_view({'post':'sendoutgoods'}), name='后台根据商品订单id发货'), 26 | path('goodsorder/orderstatistics/',GoodsOrderManageViewSet.as_view({'get':'orderstatistics'}), name='后台商品订单金额订单量统计'), 27 | ] 28 | urlpatterns += system_url.urls -------------------------------------------------------------------------------- /backend/apps/oauth/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/apps/oauth/__init__.py -------------------------------------------------------------------------------- /backend/apps/oauth/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /backend/apps/oauth/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class OauthConfig(AppConfig): 5 | default_auto_field = 'django.db.models.BigAutoField' 6 | name = 'apps.oauth' 7 | -------------------------------------------------------------------------------- /backend/apps/oauth/management/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/apps/oauth/management/__init__.py -------------------------------------------------------------------------------- /backend/apps/oauth/management/commands/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/apps/oauth/management/commands/__init__.py -------------------------------------------------------------------------------- /backend/apps/oauth/management/commands/getxcxaccesstoken.py: -------------------------------------------------------------------------------- 1 | from apps.oauth.views import get_wechat_xcx_access_token_url 2 | from django.core.management.base import BaseCommand 3 | import json 4 | from django.core.cache import cache 5 | 6 | """ 7 | 7200秒 2小时(时间可以设置小于7200秒) 8 | 定时获取微信小程序的access_token,放到缓存(redis)中,默认access_token过期时间2小时 9 | """ 10 | class Command(BaseCommand): 11 | def handle(self, *args, **options): 12 | restoken = get_wechat_xcx_access_token_url() 13 | if restoken.status_code == 200: 14 | json_data = json.loads(restoken.content) 15 | if 'errcode' not in json_data: # 如果获取失败返回失败信息 16 | access_token = json_data['access_token'] 17 | expires_in = json_data['expires_in'] 18 | cache.set('xcx_access_token', access_token,7000) 19 | # cache.expire('xcx_access_token', expires_in) 20 | 21 | -------------------------------------------------------------------------------- /backend/apps/oauth/migrations/0002_alter_oauthwxuser_mobilephonenumber.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.0.8 on 2022-10-23 09:54 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('oauth', '0001_initial'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='oauthwxuser', 15 | name='mobilePhoneNumber', 16 | field=models.CharField(default='', max_length=30, verbose_name='微信小程序绑定的手机号码(国外手机号会有区号)'), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /backend/apps/oauth/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/apps/oauth/migrations/__init__.py -------------------------------------------------------------------------------- /backend/apps/oauth/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /backend/apps/platformsettings/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/apps/platformsettings/__init__.py -------------------------------------------------------------------------------- /backend/apps/platformsettings/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /backend/apps/platformsettings/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class PlatformsettingsConfig(AppConfig): 5 | default_auto_field = 'django.db.models.BigAutoField' 6 | name = 'apps.platformsettings' 7 | -------------------------------------------------------------------------------- /backend/apps/platformsettings/migrations/0003_alter_othermanage_type.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.0.8 on 2022-10-23 09:54 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('platformsettings', '0002_lunbotumanage_link_type_alter_lunbotumanage_link_and_more'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='othermanage', 15 | name='type', 16 | field=models.IntegerField(choices=[(1, '正常值'), (2, '富文本'), (3, '图片'), (4, '视频')], default=1, verbose_name='类型'), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /backend/apps/platformsettings/migrations/0004_alter_othermanage_options.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.0.8 on 2022-10-30 11:02 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('platformsettings', '0003_alter_othermanage_type'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterModelOptions( 14 | name='othermanage', 15 | options={'verbose_name': '参数设置', 'verbose_name_plural': '参数设置'}, 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /backend/apps/platformsettings/migrations/0006_alter_systemconfig_form_item_type.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.0.8 on 2022-11-17 15:41 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('platformsettings', '0005_systemconfig'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='systemconfig', 15 | name='form_item_type', 16 | field=models.SmallIntegerField(blank=True, choices=[(0, 'text'), (1, 'datetime'), (2, 'date'), (3, 'textarea'), (4, 'select'), (5, 'checkbox'), (6, 'radio'), (7, 'image'), (8, 'file'), (9, 'switch'), (10, 'number'), (11, 'array'), (12, 'images'), (13, 'time'), (14, 'richtext')], default=0, help_text='表单类型', verbose_name='表单类型'), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /backend/apps/platformsettings/migrations/0007_alter_systemconfig_data_options_and_more.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.1.4 on 2022-12-26 14:08 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('platformsettings', '0006_alter_systemconfig_form_item_type'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='systemconfig', 15 | name='data_options', 16 | field=models.TextField(blank=True, help_text='数据options', null=True, verbose_name='数据options'), 17 | ), 18 | migrations.AlterField( 19 | model_name='systemconfig', 20 | name='rule', 21 | field=models.TextField(blank=True, help_text='校验规则', null=True, verbose_name='校验规则'), 22 | ), 23 | migrations.AlterField( 24 | model_name='systemconfig', 25 | name='setting', 26 | field=models.TextField(blank=True, help_text='配置', null=True, verbose_name='配置'), 27 | ), 28 | migrations.AlterField( 29 | model_name='systemconfig', 30 | name='value', 31 | field=models.TextField(blank=True, help_text='键值', null=True, verbose_name='键值'), 32 | ), 33 | ] 34 | -------------------------------------------------------------------------------- /backend/apps/platformsettings/migrations/0008_alter_systemconfig_form_item_type.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.1.4 on 2022-12-26 14:24 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('platformsettings', '0007_alter_systemconfig_data_options_and_more'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='systemconfig', 15 | name='form_item_type', 16 | field=models.SmallIntegerField(blank=True, choices=[(0, 'text'), (1, 'datetime'), (2, 'date'), (3, 'textarea'), (4, 'select'), (5, 'checkbox'), (6, 'radio'), (7, 'image'), (8, 'file'), (9, 'switch'), (10, 'number'), (11, 'array'), (12, 'images'), (13, 'time'), (14, 'richtext')], default=0, help_text='表单类型', null=True, verbose_name='表单类型'), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /backend/apps/platformsettings/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/apps/platformsettings/migrations/__init__.py -------------------------------------------------------------------------------- /backend/apps/platformsettings/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /backend/apps/platformsettings/urls.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | """ 4 | @Remark: 平台设置的路由文件 5 | """ 6 | 7 | from django.urls import path, re_path 8 | from rest_framework import routers 9 | 10 | from apps.platformsettings.views import LunbotuManageViewSet,OtherManageViewSet,PlatformImagesUploadView,UserLeavingMessageViewSet,SystemConfigViewSet 11 | 12 | system_url = routers.SimpleRouter() 13 | system_url.register(r'other', OtherManageViewSet) 14 | system_url.register(r'lunboimg', LunbotuManageViewSet) 15 | system_url.register(r'userfeeckback', UserLeavingMessageViewSet) 16 | system_url.register(r'sysconfig', SystemConfigViewSet) 17 | 18 | urlpatterns = [ 19 | path('uploadplatformimg/', PlatformImagesUploadView.as_view(), name='后台上传平台设置图片'), 20 | path('sysconfig/save_content/', SystemConfigViewSet.as_view({'put': 'save_content'}), name='保存配置'), 21 | 22 | ] 23 | urlpatterns += system_url.urls -------------------------------------------------------------------------------- /backend/docker_start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # python3 manage.py makemigrations 3 | # python3 manage.py migrate 4 | # python3 manage.py init 5 | daphne -b 0.0.0.0 -p 8000 --proxy-headers application.asgi:application -------------------------------------------------------------------------------- /backend/extra_apps/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/extra_apps/__init__.py -------------------------------------------------------------------------------- /backend/extra_apps/python_alipay_sdk/compat.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | """ 4 | compat.py 5 | ~~~~~~~~~~ 6 | """ 7 | from urllib.parse import quote_plus 8 | from urllib.request import urlopen 9 | from base64 import decodebytes, encodebytes 10 | -------------------------------------------------------------------------------- /backend/extra_apps/python_alipay_sdk/exceptions.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | """ 4 | exceptions.py 5 | ~~~~~~~~~~ 6 | """ 7 | 8 | 9 | class AliPayException(Exception): 10 | def __init__(self, code, message): 11 | self.__code = code 12 | self.__message = message 13 | 14 | def to_unicode(self): 15 | return "AliPayException: code:{}, message:{}".format(self.__code, self.__message) 16 | 17 | def __str__(self): 18 | return self.to_unicode() 19 | 20 | def __repr__(self): 21 | return self.to_unicode() 22 | 23 | 24 | class AliPayValidationError(Exception): 25 | pass 26 | -------------------------------------------------------------------------------- /backend/extra_apps/python_alipay_sdk/loggers.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import logging.config 3 | 4 | logging.config.dictConfig({ 5 | "version": 1, 6 | "disable_existing_loggers": False, 7 | "formatters": { 8 | "standard": { 9 | "format": "%(asctime)s [%(levelname)s] %(name)s: %(message)s" 10 | }, 11 | }, 12 | "handlers": { 13 | "console": { 14 | "level": "DEBUG", 15 | "formatter": "standard", 16 | "class": "logging.StreamHandler", 17 | }, 18 | }, 19 | "loggers": { 20 | "python-alipay-sdk": { 21 | "handlers": ["console"], 22 | "level": "DEBUG", 23 | } 24 | } 25 | }) 26 | logger = logging.getLogger("python-alipay-sdk") 27 | -------------------------------------------------------------------------------- /backend/extra_apps/python_alipay_sdk/utils.py: -------------------------------------------------------------------------------- 1 | """ 2 | alipay/utils.py 3 | ~~~~~~~~~~ 4 | """ 5 | 6 | 7 | class AliPayConfig: 8 | def __init__(self, timeout=15): 9 | self.timeout = timeout 10 | -------------------------------------------------------------------------------- /backend/frontend/download-app/static/images/download_pattern_left.2554488.lllxs2download-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/frontend/download-app/static/images/download_pattern_left.2554488.lllxs2download-app.png -------------------------------------------------------------------------------- /backend/frontend/download-app/static/images/download_pattern_right.2554488.lllxs2download-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/frontend/download-app/static/images/download_pattern_right.2554488.lllxs2download-app.png -------------------------------------------------------------------------------- /backend/frontend/download-app/static/images/favicon.2554488.lllxs2download-app.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/frontend/download-app/static/images/favicon.2554488.lllxs2download-app.ico -------------------------------------------------------------------------------- /backend/frontend/download-app/static/images/icon_android.2554488.lllxs2download-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/frontend/download-app/static/images/icon_android.2554488.lllxs2download-app.png -------------------------------------------------------------------------------- /backend/frontend/download-app/static/images/icon_android_1.2554488.lllxs2download-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/frontend/download-app/static/images/icon_android_1.2554488.lllxs2download-app.png -------------------------------------------------------------------------------- /backend/frontend/download-app/static/images/icon_ios.2554488.lllxs2download-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/frontend/download-app/static/images/icon_ios.2554488.lllxs2download-app.png -------------------------------------------------------------------------------- /backend/frontend/download-app/static/images/icon_ios_1.2554488.lllxs2download-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/frontend/download-app/static/images/icon_ios_1.2554488.lllxs2download-app.png -------------------------------------------------------------------------------- /backend/frontend/download-app/static/images/icon_logo.2554488.lllxs2download-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/frontend/download-app/static/images/icon_logo.2554488.lllxs2download-app.png -------------------------------------------------------------------------------- /backend/frontend/download-app/static/images/tips.2554488.lllxs2download-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/frontend/download-app/static/images/tips.2554488.lllxs2download-app.png -------------------------------------------------------------------------------- /backend/frontend/download-app/static/js/utils.2554488.lllxs2download-app.js: -------------------------------------------------------------------------------- 1 | 2 | function getEnv() { 3 | var _userAgent = window.navigator.userAgent; 4 | if (/MicroMessenger/i.test(_userAgent)) { 5 | return "weixin"; 6 | } else if (/Linux|Android/i.test(_userAgent)) { 7 | return "android"; 8 | } else if (/iPhone/i.test(_userAgent)) { 9 | return "ios"; 10 | } else { 11 | return "unknown"; 12 | } 13 | } 14 | 15 | function setEnvImg(element, env) { 16 | switch (env) { 17 | case "android": 18 | element.src = "images/icon_android_1.2554488.lllxs2download-app.png"; 19 | break; 20 | case "ios": 21 | element.src = "images/icon_ios_1.2554488.lllxs2download-app.png"; 22 | break; 23 | default: 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /backend/frontend/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | django-vue-lyadmin启动成功 5 | 13 | 14 | 15 | 16 | 19 | 20 | -------------------------------------------------------------------------------- /backend/frontend/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/frontend/static/favicon.ico -------------------------------------------------------------------------------- /backend/key/alipay_public_key.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | xxxxxfz1IzKzZbwNyTpP6jzLfChAO8V91skPeapHpinoAe/BG014VH3hDmZaZqjtXIY4pQPtnyjZtUKhzrxxxxxxxxxxqk97ZPD3oOxRPUV7UcMI3Is15K7/zzBSsX4UpE/K3cNcI67wg84iwyJneYvDZO6QPBjKoydkv5Ymzey+14FAVJP2AV7ZZlSQ3QIDAQAB 3 | -----END PUBLIC KEY----- -------------------------------------------------------------------------------- /backend/key/apiclient_cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | xxxxxfz1IzKzZbwNyTpP6jzLfChAO8V91skPeapHpinoAe/BG014VH3hDmZaZqjtXIY4pQPtnyjZtUKhzrxxxxxxxxxxqk97ZPD3oOxRPUV7UcMI3Is15K7/zzBSsX4UpE/K3cNcI67wg84iwyJneYvDZO6QPBjKoydkv5Ymzey+14FAVJP2AV7ZZlSQ3QIDAQAB 3 | -----END PUBLIC KEY----- -------------------------------------------------------------------------------- /backend/key/apiclient_key.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | xxxxxfz1IzKzZbwNyTpP6jzLfChAO8V91skPeapHpinoAe/BG014VH3hDmZaZqjtXIY4pQPtnyjZtUKhzrxxxxxxxxxxqk97ZPD3oOxRPUV7UcMI3Is15K7/zzBSsX4UpE/K3cNcI67wg84iwyJneYvDZO6QPBjKoydkv5Ymzey+14FAVJP2AV7ZZlSQ3QIDAQAB 3 | -----END PUBLIC KEY----- -------------------------------------------------------------------------------- /backend/key/app_private_key.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | xxxxxfz1IzKzZbwNyTpP6jzLfChAO8V91skPeapHpinoAe/BG014VH3hDmZaZqjtXIY4pQPtnyjZtUKhzrxxxxxxxxxxqk97ZPD3oOxRPUV7UcMI3Is15K7/zzBSsX4UpE/K3cNcI67wg84iwyJneYvDZO6QPBjKoydkv5Ymzey+14FAVJP2AV7ZZlSQ3QIDAQAB 3 | -----END PUBLIC KEY----- -------------------------------------------------------------------------------- /backend/key/app_public_key.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | xxxxxfz1IzKzZbwNyTpP6jzLfChAO8V91skPeapHpinoAe/BG014VH3hDmZaZqjtXIY4pQPtnyjZtUKhzrxxxxxxxxxxqk97ZPD3oOxRPUV7UcMI3Is15K7/zzBSsX4UpE/K3cNcI67wg84iwyJneYvDZO6QPBjKoydkv5Ymzey+14FAVJP2AV7ZZlSQ3QIDAQAB 3 | -----END PUBLIC KEY----- -------------------------------------------------------------------------------- /backend/manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | """Django's command-line utility for administrative tasks.""" 3 | import os 4 | import sys 5 | 6 | 7 | def main(): 8 | """Run administrative tasks.""" 9 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'application.settings') 10 | try: 11 | from django.core.management import execute_from_command_line 12 | except ImportError as exc: 13 | raise ImportError( 14 | "Couldn't import Django. Are you sure it's installed and " 15 | "available on your PYTHONPATH environment variable? Did you " 16 | "forget to activate a virtual environment?" 17 | ) from exc 18 | execute_from_command_line(sys.argv) 19 | 20 | 21 | if __name__ == '__main__': 22 | main() 23 | -------------------------------------------------------------------------------- /backend/media/platform/2021-10-27/20211027110807_498.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/media/platform/2021-10-27/20211027110807_498.jpg -------------------------------------------------------------------------------- /backend/media/platform/2022-04-07/20220407120605_298.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/media/platform/2022-04-07/20220407120605_298.png -------------------------------------------------------------------------------- /backend/media/platform/2022-08-01/20220801225845_971.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/media/platform/2022-08-01/20220801225845_971.png -------------------------------------------------------------------------------- /backend/media/platform/2022-08-01/20220801225848_774.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/media/platform/2022-08-01/20220801225848_774.png -------------------------------------------------------------------------------- /backend/media/platform/2022-08-01/20220801225851_499.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/media/platform/2022-08-01/20220801225851_499.png -------------------------------------------------------------------------------- /backend/media/platform/2022-08-01/20220801225947_460.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/media/platform/2022-08-01/20220801225947_460.png -------------------------------------------------------------------------------- /backend/media/platform/2022-08-01/20220801225950_577.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/media/platform/2022-08-01/20220801225950_577.png -------------------------------------------------------------------------------- /backend/media/platform/2022-08-01/20220801225952_984.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/media/platform/2022-08-01/20220801225952_984.png -------------------------------------------------------------------------------- /backend/media/platform/2022-08-01/20220801225955_189.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/media/platform/2022-08-01/20220801225955_189.png -------------------------------------------------------------------------------- /backend/mysystem/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/mysystem/__init__.py -------------------------------------------------------------------------------- /backend/mysystem/admin.py: -------------------------------------------------------------------------------- 1 | # from django.contrib import admin 2 | # from mysystem.models import * 3 | # # Register your models here. 4 | # admin.site.register(Post) 5 | # admin.site.register(Role) 6 | # admin.site.register(Dept) 7 | # admin.site.register(Button) 8 | # admin.site.register(Menu) 9 | # admin.site.register(LoginLog) 10 | # 11 | -------------------------------------------------------------------------------- /backend/mysystem/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class MysystemConfig(AppConfig): 5 | default_auto_field = 'django.db.models.BigAutoField' 6 | name = 'mysystem' 7 | 8 | # 激活signals信号 9 | def ready(self): 10 | import mysystem.signals 11 | -------------------------------------------------------------------------------- /backend/mysystem/management/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/mysystem/management/__init__.py -------------------------------------------------------------------------------- /backend/mysystem/management/commands/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/mysystem/management/commands/__init__.py -------------------------------------------------------------------------------- /backend/mysystem/management/commands/generate_token.py: -------------------------------------------------------------------------------- 1 | from mysystem.models import Users 2 | from rest_framework_simplejwt.serializers import TokenObtainPairSerializer 3 | from django.core.management.base import BaseCommand 4 | 5 | class LyadminGenerateTokenSerializer(TokenObtainPairSerializer): 6 | """ 7 | token序列化器: 8 | 重写djangorestframework-simplejwt的序列化器 9 | """ 10 | 11 | @classmethod 12 | def get_token(cls, user): 13 | refresh = super(LyadminGenerateTokenSerializer,cls).get_token(user) 14 | data = {} 15 | data['identity'] = user.identity 16 | data['userId'] = user.id 17 | data['refresh'] = str(refresh) 18 | data['access'] = str(refresh.access_token) 19 | return data 20 | 21 | class Command(BaseCommand): 22 | """ 23 | 快速生成用户jwt token: 24 | python manage.py generate_token 用户ID 25 | """ 26 | 27 | def add_arguments(self, parser): 28 | parser.add_argument('userid', nargs='*', type=str, ) 29 | 30 | def handle(self, *args, **options): 31 | userid_list = options.get('userid') 32 | if userid_list: 33 | userid = userid_list[0] 34 | user = Users.objects.filter(id=userid).first() 35 | if not user: 36 | print("用户不存在") 37 | return 38 | userinfo = LyadminGenerateTokenSerializer.get_token(user) 39 | print(userinfo) 40 | else: 41 | print(f"请输入要生成token的用户ID如:python manage.py generate_token 用户ID") 42 | -------------------------------------------------------------------------------- /backend/mysystem/management/commands/init.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from django.core.management.base import BaseCommand 4 | 5 | from application import settings 6 | 7 | logger = logging.getLogger(__name__) 8 | 9 | 10 | class Command(BaseCommand): 11 | """ 12 | 项目初始化命令: python manage.py init 13 | """ 14 | 15 | def add_arguments(self, parser): 16 | parser.add_argument('init_name', nargs='*', type=str, ) 17 | parser.add_argument('-y', nargs='*') 18 | parser.add_argument('-Y', nargs='*') 19 | parser.add_argument('-n', nargs='*') 20 | parser.add_argument('-N', nargs='*') 21 | 22 | def handle(self, *args, **options): 23 | is_delete = False 24 | if isinstance(options.get('y'), list) or isinstance(options.get('Y'), list): 25 | is_delete = True 26 | if isinstance(options.get('n'), list) or isinstance(options.get('N'), list): 27 | is_delete = False 28 | print(f"正在准备初始化数据,{'如有初始化数据,将会不做操作跳过' if not is_delete else '初始数据将会先删除后新增'}...") 29 | 30 | for app in settings.INSTALLED_APPS: 31 | 32 | try: 33 | exec(f""" 34 | from {app}.initialize import main 35 | main(is_delete={is_delete}) 36 | """) 37 | except ModuleNotFoundError: 38 | pass 39 | print("初始化数据完成!") 40 | -------------------------------------------------------------------------------- /backend/mysystem/migrations/0002_alter_users_identity_alter_users_mobile.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.0.8 on 2022-10-23 09:54 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('mysystem', '0001_initial'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='users', 15 | name='identity', 16 | field=models.SmallIntegerField(blank=True, choices=[(0, '超级管理员'), (1, '系统管理员'), (2, '前端用户')], default=2, help_text='身份标识', null=True, verbose_name='身份标识'), 17 | ), 18 | migrations.AlterField( 19 | model_name='users', 20 | name='mobile', 21 | field=models.CharField(blank=True, help_text='电话', max_length=30, null=True, verbose_name='电话'), 22 | ), 23 | ] 24 | -------------------------------------------------------------------------------- /backend/mysystem/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/mysystem/migrations/__init__.py -------------------------------------------------------------------------------- /backend/mysystem/signals.py: -------------------------------------------------------------------------------- 1 | from django.db.models.signals import post_save 2 | from django.dispatch import receiver 3 | from django.db import transaction 4 | from mysystem.models import MenuButton,Menu,Button 5 | 6 | CRUD_BUTTON = ['Create','Delete','Update','Retrieve','Search'] 7 | METHOD_CHOICES = [1,3,2,0,0]#(0, "GET"),(1, "POST"),(2, "PUT"),(3, "DELETE") 8 | 9 | #利用django信号机制实现,创建菜单时自动为其添加菜单按钮权限(查询、删除、修改、新增、单例) 10 | @transaction.atomic#事务 11 | @receiver(post_save, sender=Menu) 12 | def auto_create_menu_button_permission(sender, instance=None, created=False, **kwargs): 13 | if created:#新增时 14 | if instance.isautopm:#是否自动创建按钮权限 15 | buttons = Button.objects.all() 16 | intance_list = [] 17 | for i in buttons: 18 | if i.value in CRUD_BUTTON: 19 | obj = MenuButton(menu=instance,name=i.name,value=i.value,method=METHOD_CHOICES[CRUD_BUTTON.index(i.value)]) 20 | intance_list.append(obj) 21 | MenuButton.objects.bulk_create(intance_list) -------------------------------------------------------------------------------- /backend/mysystem/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /backend/mysystem/views/button.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | """ 4 | @Remark: 按钮权限管理 5 | """ 6 | from mysystem.models import Button 7 | from utils.serializers import CustomModelSerializer 8 | from utils.viewset import CustomModelViewSet 9 | 10 | 11 | class ButtonSerializer(CustomModelSerializer): 12 | """ 13 | 按钮权限-序列化器 14 | """ 15 | 16 | class Meta: 17 | model = Button 18 | fields = "__all__" 19 | read_only_fields = ["id"] 20 | 21 | 22 | class ButtonViewSet(CustomModelViewSet): 23 | """ 24 | 按钮权限接口: 25 | """ 26 | queryset = Button.objects.all() 27 | serializer_class = ButtonSerializer 28 | -------------------------------------------------------------------------------- /backend/mysystem/views/menu_button.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | """ 4 | @Remark: 菜单按钮管理 5 | """ 6 | from mysystem.models import MenuButton 7 | from utils.serializers import CustomModelSerializer 8 | from utils.viewset import CustomModelViewSet 9 | 10 | 11 | class MenuButtonSerializer(CustomModelSerializer): 12 | """ 13 | 菜单按钮-序列化器 14 | """ 15 | 16 | class Meta: 17 | model = MenuButton 18 | fields = "__all__" 19 | read_only_fields = ["id"] 20 | 21 | 22 | class MenuButtonViewSet(CustomModelViewSet): 23 | """ 24 | 菜单按钮接口: 25 | """ 26 | queryset = MenuButton.objects.all() 27 | serializer_class = MenuButtonSerializer 28 | filterset_fields = ['menu'] 29 | -------------------------------------------------------------------------------- /backend/requirements.txt: -------------------------------------------------------------------------------- 1 | aliyun-python-sdk-core 2 | asgiref 3 | attrs 4 | autobahn 5 | Automat 6 | charset-normalizer 7 | constantly 8 | coreapi 9 | coreschema 10 | cryptography 11 | daphne 12 | Django==4.1.8 13 | django-comment-migrate 14 | django-cors-headers 15 | django-filter 16 | django-ranged-response 17 | django-redis 18 | django-simple-captcha 19 | djangorestframework 20 | djangorestframework-simplejwt 21 | drf-yasg 22 | hyperlink 23 | idna 24 | incremental 25 | inflection 26 | itypes 27 | Jinja2 28 | jmespath 29 | MarkupSafe 30 | packaging 31 | Pillow 32 | pyasn1 33 | pyasn1-modules 34 | pycparser 35 | pycryptodome 36 | PyJWT 37 | PyMySQL 38 | #mysqlclient 39 | pyOpenSSL 40 | pyparsing 41 | pytz 42 | redis 43 | requests 44 | service-identity 45 | six 46 | sqlparse 47 | txaio 48 | typing-extensions 49 | ua-parser 50 | uritemplate 51 | urllib3 52 | user-agents 53 | xlrd 54 | xlwt 55 | zope.interface 56 | pycryptodomex 57 | jpush 58 | tencentcloud-sdk-python 59 | psutil 60 | channels 61 | channels_redis 62 | paramiko 63 | celery 64 | django-celery-beat 65 | django-celery-results 66 | eventlet -------------------------------------------------------------------------------- /backend/requirements_linux.txt: -------------------------------------------------------------------------------- 1 | aliyun-python-sdk-core 2 | asgiref 3 | attrs 4 | autobahn 5 | Automat 6 | charset-normalizer 7 | constantly 8 | coreapi 9 | coreschema 10 | cryptography 11 | daphne 12 | Django 13 | django-comment-migrate 14 | django-cors-headers 15 | django-filter 16 | django-ranged-response 17 | django-redis 18 | django-simple-captcha 19 | djangorestframework 20 | djangorestframework-simplejwt 21 | drf-yasg 22 | hyperlink 23 | idna 24 | incremental 25 | inflection 26 | itypes 27 | Jinja2 28 | jmespath 29 | MarkupSafe 30 | packaging 31 | Pillow 32 | pyasn1 33 | pyasn1-modules 34 | pycparser 35 | pycryptodome 36 | PyJWT 37 | PyMySQL 38 | #mysqlclient 39 | pyOpenSSL 40 | pyparsing 41 | pytz 42 | redis 43 | requests 44 | service-identity 45 | six 46 | sqlparse 47 | txaio 48 | typing-extensions 49 | ua-parser 50 | uritemplate 51 | urllib3 52 | user-agents 53 | xlrd 54 | xlwt 55 | zope.interface 56 | pycryptodomex 57 | jpush 58 | tencentcloud-sdk-python 59 | psutil 60 | channels 61 | channels_redis 62 | paramiko 63 | celery 64 | django-celery-beat 65 | django-celery-results -------------------------------------------------------------------------------- /backend/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/backend/static/favicon.ico -------------------------------------------------------------------------------- /backend/utils/server/crontab/crontab_windows.py: -------------------------------------------------------------------------------- 1 | #!/bin/python 2 | #coding: utf-8 3 | # +------------------------------------------------------------------- 4 | # | django-vue3-lyadmin 5 | # +------------------------------------------------------------------- 6 | # | Author: lybbn 7 | # +------------------------------------------------------------------- 8 | # | QQ: 1042594286 9 | # +------------------------------------------------------------------- 10 | 11 | # ------------------------------ 12 | # windows计划任务工具封装 13 | # ------------------------------ -------------------------------------------------------------------------------- /backend/utils/uniappsms.py: -------------------------------------------------------------------------------- 1 | #!/bin/python 2 | #coding: utf-8 3 | # +------------------------------------------------------------------- 4 | # | system: django-vue-lyadmin 5 | # +------------------------------------------------------------------- 6 | # | Author: lybbn 7 | # +------------------------------------------------------------------- 8 | # | QQ: 1042594286 9 | # +------------------------------------------------------------------- 10 | 11 | # ------------------------------ 12 | # #unicloud短信云函数url发短信api 13 | # ------------------------------ 14 | # 官网文档地址:https://uniapp.dcloud.net.cn/uniCloud/send-sms.html 15 | # ------------------------------ 16 | 17 | import requests 18 | import json 19 | 20 | class UniCloudSms(object): 21 | 22 | def __init__(self): 23 | self.single_send_url = "https://XXXXXXX.bspapp.com/http/lybbnunisms"#要修改的短信url 24 | 25 | def send_sms(self, code, mobile,expminute): 26 | # 需要传递的参数 27 | parmas = { 28 | "mobile": mobile, 29 | "code": code, #验证码 30 | "expminute":expminute//60 #把秒转换成分钟 31 | } 32 | contenttype = "application/json" 33 | headers = {'Content-Type': contenttype} 34 | response = requests.post(self.single_send_url, data=json.dumps(parmas),headers = headers) 35 | # print(response.text) 36 | re_dict = json.loads(response.text) 37 | return re_dict 38 | 39 | 40 | if __name__ == "__main__": 41 | unicloudsms = UniCloudSms() 42 | unicloudsms.send_sms("2021", "手机号码",300) -------------------------------------------------------------------------------- /backend/utils/yunpian.py: -------------------------------------------------------------------------------- 1 | #!/bin/python 2 | #coding: utf-8 3 | # +------------------------------------------------------------------- 4 | # | system: django-vue-lyadmin 5 | # +------------------------------------------------------------------- 6 | # | Author: lybbn 7 | # +------------------------------------------------------------------- 8 | # | QQ: 1042594286 9 | # +------------------------------------------------------------------- 10 | 11 | # ------------------------------ 12 | # 云片网发短信api 13 | # ------------------------------ 14 | # 官网文档地址:https://www.yunpian.com/dev-doc 15 | # ------------------------------ 16 | 17 | import requests 18 | import json 19 | 20 | 21 | class YunPian(object): 22 | 23 | def __init__(self, api_key): 24 | self.api_key = api_key 25 | self.single_send_url = "https://sms.yunpian.com/v2/sms/single_send.json" 26 | 27 | def send_sms(self, code, mobile): 28 | # 需要传递的参数 29 | parmas = { 30 | "apikey": self.api_key, 31 | "mobile": mobile, 32 | "text": "【老眼帮】您的验证码是{code}。如非本人操作,请忽略本短信".format(code=code)#该模板需要与申请的一致 33 | } 34 | 35 | response = requests.post(self.single_send_url, data=parmas) 36 | re_dict = json.loads(response.text) 37 | return re_dict 38 | 39 | 40 | if __name__ == "__main__": 41 | # 例如:8111127a9701975c734b8aee81ee3521 42 | yun_pian = YunPian("3e87d1xxxxxx7d4bxxxx1608f7c6da23exxxxx1") 43 | yun_pian.send_sms("2021", "手机号码") -------------------------------------------------------------------------------- /django-vue-lyadmin mini精简版.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/django-vue-lyadmin mini精简版.zip -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | services: 3 | django: 4 | build: 5 | context: . 6 | dockerfile: ./docker_env/django/Dockerfile 7 | container_name: django 8 | working_dir: /backend 9 | ports: 10 | - "8000:8000" 11 | expose: 12 | - "8000" 13 | restart: always 14 | volumes: 15 | - ./backend:/backend 16 | - ./docker_env/django/logs:/var/log -------------------------------------------------------------------------------- /docker_env/.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | logs 3 | /mysql/data 4 | /mysql/logs 5 | /nginx/logs 6 | /django/logs 7 | /redis/data -------------------------------------------------------------------------------- /docker_env/django/Dockerfile: -------------------------------------------------------------------------------- 1 | # 从仓库拉取 带有 python Linux 环境 2 | FROM registry.cn-beijing.aliyuncs.com/django-vue-lyadmin/dvlyadmin-python3.11:1.3 3 | # 设置环境变量 4 | ENV PATH /usr/local/python3/bin:$PATH 5 | RUN mkdir /backend 6 | # 工作目录切换到backend目录下 7 | WORKDIR /backend 8 | COPY ./backend/ . 9 | RUN /bin/bash -c 'source ~/.bashrc && python3 -m pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/' 10 | CMD /bin/bash -c "source ~/.bashrc && /backend/docker_start.sh" -------------------------------------------------------------------------------- /docker_env/nginx/my.conf: -------------------------------------------------------------------------------- 1 | server { 2 | listen 8080; 3 | server_name localhost; 4 | client_max_body_size 100M; 5 | location / { 6 | proxy_set_header Host $http_host; 7 | proxy_set_header X-Real-IP $remote_addr; 8 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 9 | proxy_set_header X-Forwarded-Proto https; 10 | root /usr/share/nginx/html; 11 | index index.html index.php index.htm; 12 | } 13 | 14 | location /api/ { 15 | proxy_set_header Host $http_host; 16 | proxy_set_header X-Real-IP $remote_addr; 17 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 18 | proxy_set_header X-Forwarded-Proto $scheme; 19 | rewrite ^/api/(.*)$ /$1 break; #重写 20 | proxy_pass http://10.10.10.11:8000/; # 设置代理服务器的协议和地址 21 | } 22 | } -------------------------------------------------------------------------------- /frontend/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | dist.zip 5 | 6 | # local env files 7 | .env.local 8 | .env.*.local 9 | 10 | # Log files 11 | npm-debug.log* 12 | yarn-debug.log* 13 | yarn-error.log* 14 | 15 | # Editor directories and files 16 | .idea 17 | .vscode 18 | *.suo 19 | *.ntvs* 20 | *.njsproj 21 | *.sln 22 | *.sw? 23 | -------------------------------------------------------------------------------- /frontend/README.md: -------------------------------------------------------------------------------- 1 | # django-vue-lyadmin frontend 前端框架 2 | 3 | #### slogon 4 | 5 | 做一个专业前端能用的框架,后台人员也能面向配置的、能改得动的CRUD 6 | 7 | #### 介绍 8 | 9 | django-vue-lyadmin 是一套前后端分离的前端后台管理框架,是适配 django-vue-lyadmin 的 python django 后台管理项目的专属框架,基于原生 vue3 elmentuiplus 开发,灵活自定义,可发挥空间大 10 | 11 | #### 软件架构 12 | 13 | 14 | ``` 15 | 1、VUE3 16 | 2、富文本编辑器 tinymce 17 | 3、ElementPlus 18 | ``` 19 | 20 | #### 安装教程 21 | 22 | 23 | ``` 24 | cd frontend 25 | npm install --registry=https://registry.npmmirror.com 26 | 27 | 注释:如果安装过程有如下报错则运行:npm cache clear --force 28 | npm ERR! Cannot read properties of null (reading 'pickAlgorithm') 29 | ``` 30 | 31 | 32 | #### 使用说明 33 | 34 | 调试开发直接运行: 35 | 36 | ``` 37 | npm start 38 | ``` 39 | 40 | 41 | #### 打包 42 | 43 | 44 | ``` 45 | npm run build 46 | ``` 47 | 48 | 49 | 打包后静态文件在 dist 目录中 50 | -------------------------------------------------------------------------------- /frontend/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset' 4 | ], 5 | plugins: ["@vue/babel-plugin-jsx"] 6 | } 7 | -------------------------------------------------------------------------------- /frontend/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend/public/favicon.ico -------------------------------------------------------------------------------- /frontend/public/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend/public/static/favicon.ico -------------------------------------------------------------------------------- /frontend/public/static/tinymce/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tinymce", 3 | "description": "Web based JavaScript HTML WYSIWYG editor control.", 4 | "license": "LGPL-2.1", 5 | "keywords": [ 6 | "wysiwyg", 7 | "tinymce", 8 | "richtext", 9 | "javascript", 10 | "html", 11 | "text", 12 | "rich editor", 13 | "rich text editor", 14 | "rte", 15 | "rich text", 16 | "contenteditable", 17 | "editing" 18 | ], 19 | "homepage": "https://www.tiny.cloud/", 20 | "ignore": [ 21 | "README.md", 22 | "composer.json", 23 | "package.json", 24 | ".npmignore", 25 | "CHANGELOG.md" 26 | ] 27 | } -------------------------------------------------------------------------------- /frontend/public/static/tinymce/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tinymce/tinymce", 3 | "version": "5.10.2", 4 | "description": "Web based JavaScript HTML WYSIWYG editor control.", 5 | "license": [ 6 | "LGPL-2.1-only" 7 | ], 8 | "keywords": [ 9 | "wysiwyg", 10 | "tinymce", 11 | "richtext", 12 | "javascript", 13 | "html", 14 | "text", 15 | "rich editor", 16 | "rich text editor", 17 | "rte", 18 | "rich text", 19 | "contenteditable", 20 | "editing" 21 | ], 22 | "homepage": "https://www.tiny.cloud/", 23 | "type": "component", 24 | "extra": { 25 | "component": { 26 | "scripts": [ 27 | "tinymce.js", 28 | "plugins/*/plugin.js", 29 | "themes/*/theme.js", 30 | "themes/*/icons.js" 31 | ], 32 | "files": [ 33 | "tinymce.min.js", 34 | "plugins/*/plugin.min.js", 35 | "themes/*/theme.min.js", 36 | "skins/**", 37 | "icons/*/icons.min.js" 38 | ] 39 | } 40 | }, 41 | "archive": { 42 | "exclude": [ 43 | "README.md", 44 | "bower.js", 45 | "package.json", 46 | ".npmignore", 47 | "CHANGELOG.md" 48 | ] 49 | } 50 | } -------------------------------------------------------------------------------- /frontend/public/static/tinymce/icons/default/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "default" icons for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/icons/default') 5 | // ES2015: 6 | // import 'tinymce/icons/default' 7 | require('./icons.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/advlist/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "advlist" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/advlist') 5 | // ES2015: 6 | // import 'tinymce/plugins/advlist' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/anchor/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "anchor" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/anchor') 5 | // ES2015: 6 | // import 'tinymce/plugins/anchor' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/autolink/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "autolink" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/autolink') 5 | // ES2015: 6 | // import 'tinymce/plugins/autolink' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/autoresize/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "autoresize" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/autoresize') 5 | // ES2015: 6 | // import 'tinymce/plugins/autoresize' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/autosave/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "autosave" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/autosave') 5 | // ES2015: 6 | // import 'tinymce/plugins/autosave' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/bbcode/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "bbcode" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/bbcode') 5 | // ES2015: 6 | // import 'tinymce/plugins/bbcode' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/charmap/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "charmap" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/charmap') 5 | // ES2015: 6 | // import 'tinymce/plugins/charmap' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/code/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "code" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/code') 5 | // ES2015: 6 | // import 'tinymce/plugins/code' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/code/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.2 (2021-11-17) 8 | */ 9 | !function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("code",function(e){var t,o;function n(){return o.execCommand("mceCodeEditor")}return(t=e).addCommand("mceCodeEditor",function(){var n,e;e=(n=t).getContent({source_view:!0}),n.windowManager.open({title:"Source Code",size:"large",body:{type:"panel",items:[{type:"textarea",name:"code"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{code:e},onSubmit:function(e){var t=n,o=e.getData().code;t.focus(),t.undoManager.transact(function(){t.setContent(o)}),t.selection.setCursorLocation(),t.nodeChanged(),e.close()}})}),(o=e).ui.registry.addButton("code",{icon:"sourcecode",tooltip:"Source code",onAction:n}),o.ui.registry.addMenuItem("code",{icon:"sourcecode",text:"Source code",onAction:n}),{}})}(); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/codesample/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "codesample" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/codesample') 5 | // ES2015: 6 | // import 'tinymce/plugins/codesample' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/colorpicker/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "colorpicker" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/colorpicker') 5 | // ES2015: 6 | // import 'tinymce/plugins/colorpicker' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/colorpicker/plugin.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.2 (2021-11-17) 8 | */ 9 | (function () { 10 | 'use strict'; 11 | 12 | var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); 13 | 14 | function Plugin () { 15 | global.add('colorpicker', function () { 16 | }); 17 | } 18 | 19 | Plugin(); 20 | 21 | }()); 22 | -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/colorpicker/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.2 (2021-11-17) 8 | */ 9 | !function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("colorpicker",function(){})}(); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/contextmenu/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "contextmenu" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/contextmenu') 5 | // ES2015: 6 | // import 'tinymce/plugins/contextmenu' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/contextmenu/plugin.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.2 (2021-11-17) 8 | */ 9 | (function () { 10 | 'use strict'; 11 | 12 | var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); 13 | 14 | function Plugin () { 15 | global.add('contextmenu', function () { 16 | }); 17 | } 18 | 19 | Plugin(); 20 | 21 | }()); 22 | -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/contextmenu/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.2 (2021-11-17) 8 | */ 9 | !function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("contextmenu",function(){})}(); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/directionality/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "directionality" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/directionality') 5 | // ES2015: 6 | // import 'tinymce/plugins/directionality' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/emoticons/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "emoticons" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/emoticons') 5 | // ES2015: 6 | // import 'tinymce/plugins/emoticons' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/fullpage/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "fullpage" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/fullpage') 5 | // ES2015: 6 | // import 'tinymce/plugins/fullpage' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/fullscreen/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "fullscreen" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/fullscreen') 5 | // ES2015: 6 | // import 'tinymce/plugins/fullscreen' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/help/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "help" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/help') 5 | // ES2015: 6 | // import 'tinymce/plugins/help' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/hr/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "hr" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/hr') 5 | // ES2015: 6 | // import 'tinymce/plugins/hr' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/hr/plugin.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.2 (2021-11-17) 8 | */ 9 | (function () { 10 | 'use strict'; 11 | 12 | var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); 13 | 14 | var register$1 = function (editor) { 15 | editor.addCommand('InsertHorizontalRule', function () { 16 | editor.execCommand('mceInsertContent', false, '
'); 17 | }); 18 | }; 19 | 20 | var register = function (editor) { 21 | var onAction = function () { 22 | return editor.execCommand('InsertHorizontalRule'); 23 | }; 24 | editor.ui.registry.addButton('hr', { 25 | icon: 'horizontal-rule', 26 | tooltip: 'Horizontal line', 27 | onAction: onAction 28 | }); 29 | editor.ui.registry.addMenuItem('hr', { 30 | icon: 'horizontal-rule', 31 | text: 'Horizontal line', 32 | onAction: onAction 33 | }); 34 | }; 35 | 36 | function Plugin () { 37 | global.add('hr', function (editor) { 38 | register$1(editor); 39 | register(editor); 40 | }); 41 | } 42 | 43 | Plugin(); 44 | 45 | }()); 46 | -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/hr/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.2 (2021-11-17) 8 | */ 9 | !function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("hr",function(n){var o,t;function e(){return t.execCommand("InsertHorizontalRule")}(o=n).addCommand("InsertHorizontalRule",function(){o.execCommand("mceInsertContent",!1,"
")}),(t=n).ui.registry.addButton("hr",{icon:"horizontal-rule",tooltip:"Horizontal line",onAction:e}),t.ui.registry.addMenuItem("hr",{icon:"horizontal-rule",text:"Horizontal line",onAction:e})})}(); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/image/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "image" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/image') 5 | // ES2015: 6 | // import 'tinymce/plugins/image' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/imagetools/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "imagetools" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/imagetools') 5 | // ES2015: 6 | // import 'tinymce/plugins/imagetools' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/importcss/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "importcss" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/importcss') 5 | // ES2015: 6 | // import 'tinymce/plugins/importcss' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/insertdatetime/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "insertdatetime" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/insertdatetime') 5 | // ES2015: 6 | // import 'tinymce/plugins/insertdatetime' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/legacyoutput/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "legacyoutput" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/legacyoutput') 5 | // ES2015: 6 | // import 'tinymce/plugins/legacyoutput' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/link/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "link" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/link') 5 | // ES2015: 6 | // import 'tinymce/plugins/link' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/lists/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "lists" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/lists') 5 | // ES2015: 6 | // import 'tinymce/plugins/lists' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/media/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "media" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/media') 5 | // ES2015: 6 | // import 'tinymce/plugins/media' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/nonbreaking/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "nonbreaking" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/nonbreaking') 5 | // ES2015: 6 | // import 'tinymce/plugins/nonbreaking' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/nonbreaking/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.2 (2021-11-17) 8 | */ 9 | !function(){"use strict";function o(n,e){for(var a="",o=0;o'+o(" ",e)+"":o(" ",e);n.undoManager.transact(function(){return n.insertContent(a)})}var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=tinymce.util.Tools.resolve("tinymce.util.VK");n.add("nonbreaking",function(n){var e,a,o,t,i;function r(){return a.execCommand("mceNonBreaking")}(e=n).addCommand("mceNonBreaking",function(){s(e,1)}),(a=n).ui.registry.addButton("nonbreaking",{icon:"non-breaking",tooltip:"Nonbreaking space",onAction:r}),a.ui.registry.addMenuItem("nonbreaking",{icon:"non-breaking",text:"Nonbreaking space",onAction:r}),0<(i="boolean"==typeof(t=(o=n).getParam("nonbreaking_force_tab",0))?!0===t?3:0:t)&&o.on("keydown",function(n){n.keyCode!==c.TAB||n.isDefaultPrevented()||n.shiftKey||(n.preventDefault(),n.stopImmediatePropagation(),s(o,i))})})}(); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/noneditable/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "noneditable" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/noneditable') 5 | // ES2015: 6 | // import 'tinymce/plugins/noneditable' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/pagebreak/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "pagebreak" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/pagebreak') 5 | // ES2015: 6 | // import 'tinymce/plugins/pagebreak' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/paste/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "paste" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/paste') 5 | // ES2015: 6 | // import 'tinymce/plugins/paste' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/preview/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "preview" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/preview') 5 | // ES2015: 6 | // import 'tinymce/plugins/preview' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/print/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "print" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/print') 5 | // ES2015: 6 | // import 'tinymce/plugins/print' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/print/plugin.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.2 (2021-11-17) 8 | */ 9 | (function () { 10 | 'use strict'; 11 | 12 | var global$1 = tinymce.util.Tools.resolve('tinymce.PluginManager'); 13 | 14 | var global = tinymce.util.Tools.resolve('tinymce.Env'); 15 | 16 | var register$1 = function (editor) { 17 | editor.addCommand('mcePrint', function () { 18 | if (global.browser.isIE()) { 19 | editor.getDoc().execCommand('print', false, null); 20 | } else { 21 | editor.getWin().print(); 22 | } 23 | }); 24 | }; 25 | 26 | var register = function (editor) { 27 | var onAction = function () { 28 | return editor.execCommand('mcePrint'); 29 | }; 30 | editor.ui.registry.addButton('print', { 31 | icon: 'print', 32 | tooltip: 'Print', 33 | onAction: onAction 34 | }); 35 | editor.ui.registry.addMenuItem('print', { 36 | text: 'Print...', 37 | icon: 'print', 38 | onAction: onAction 39 | }); 40 | }; 41 | 42 | function Plugin () { 43 | global$1.add('print', function (editor) { 44 | register$1(editor); 45 | register(editor); 46 | editor.addShortcut('Meta+P', '', 'mcePrint'); 47 | }); 48 | } 49 | 50 | Plugin(); 51 | 52 | }()); 53 | -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/print/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.2 (2021-11-17) 8 | */ 9 | !function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),r=tinymce.util.Tools.resolve("tinymce.Env");n.add("print",function(n){var t,i;function e(){return i.execCommand("mcePrint")}(t=n).addCommand("mcePrint",function(){r.browser.isIE()?t.getDoc().execCommand("print",!1,null):t.getWin().print()}),(i=n).ui.registry.addButton("print",{icon:"print",tooltip:"Print",onAction:e}),i.ui.registry.addMenuItem("print",{text:"Print...",icon:"print",onAction:e}),n.addShortcut("Meta+P","","mcePrint")})}(); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/quickbars/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "quickbars" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/quickbars') 5 | // ES2015: 6 | // import 'tinymce/plugins/quickbars' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/save/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "save" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/save') 5 | // ES2015: 6 | // import 'tinymce/plugins/save' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/searchreplace/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "searchreplace" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/searchreplace') 5 | // ES2015: 6 | // import 'tinymce/plugins/searchreplace' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/spellchecker/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "spellchecker" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/spellchecker') 5 | // ES2015: 6 | // import 'tinymce/plugins/spellchecker' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/tabfocus/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "tabfocus" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/tabfocus') 5 | // ES2015: 6 | // import 'tinymce/plugins/tabfocus' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/table/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "table" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/table') 5 | // ES2015: 6 | // import 'tinymce/plugins/table' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/template/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "template" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/template') 5 | // ES2015: 6 | // import 'tinymce/plugins/template' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/textcolor/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "textcolor" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/textcolor') 5 | // ES2015: 6 | // import 'tinymce/plugins/textcolor' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/textcolor/plugin.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.2 (2021-11-17) 8 | */ 9 | (function () { 10 | 'use strict'; 11 | 12 | var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); 13 | 14 | function Plugin () { 15 | global.add('textcolor', function () { 16 | }); 17 | } 18 | 19 | Plugin(); 20 | 21 | }()); 22 | -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/textcolor/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.2 (2021-11-17) 8 | */ 9 | !function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("textcolor",function(){})}(); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/textpattern/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "textpattern" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/textpattern') 5 | // ES2015: 6 | // import 'tinymce/plugins/textpattern' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/toc/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "toc" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/toc') 5 | // ES2015: 6 | // import 'tinymce/plugins/toc' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/visualblocks/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "visualblocks" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/visualblocks') 5 | // ES2015: 6 | // import 'tinymce/plugins/visualblocks' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/visualblocks/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.2 (2021-11-17) 8 | */ 9 | !function(){"use strict";function f(t,o,e){var n,i;t.dom.toggleClass(t.getBody(),"mce-visualblocks"),e.set(!e.get()),n=t,i=e.get(),n.fire("VisualBlocks",{state:i})}function g(e,n){return function(o){function t(t){return o.setActive(t.state)}return o.setActive(n.get()),e.on("VisualBlocks",t),function(){return e.off("VisualBlocks",t)}}}tinymce.util.Tools.resolve("tinymce.PluginManager").add("visualblocks",function(t,o){var e,n,i,s,c,u,l,a=(e=!1,{get:function(){return e},set:function(t){e=t}});function r(){return s.execCommand("mceVisualBlocks")}i=a,(n=t).addCommand("mceVisualBlocks",function(){f(n,0,i)}),(s=t).ui.registry.addToggleButton("visualblocks",{icon:"visualblocks",tooltip:"Show blocks",onAction:r,onSetup:g(s,c=a)}),s.ui.registry.addToggleMenuItem("visualblocks",{text:"Show blocks",icon:"visualblocks",onAction:r,onSetup:g(s,c)}),l=a,(u=t).on("PreviewFormats AfterPreviewFormats",function(t){l.get()&&u.dom.toggleClass(u.getBody(),"mce-visualblocks","afterpreviewformats"===t.type)}),u.on("init",function(){u.getParam("visualblocks_default_state",!1,"boolean")&&f(u,0,l)})})}(); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/visualchars/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "visualchars" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/visualchars') 5 | // ES2015: 6 | // import 'tinymce/plugins/visualchars' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/plugins/wordcount/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "wordcount" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/wordcount') 5 | // ES2015: 6 | // import 'tinymce/plugins/wordcount' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/skins/content/dark/content.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | body{background-color:#2f3742;color:#dfe0e4;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}a{color:#4099ff}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#6d737b}figure{display:table;margin:1rem auto}figure figcaption{color:#8a8f97;display:block;margin-top:.25rem;text-align:center}hr{border-color:#6d737b;border-style:solid;border-width:1px 0 0 0}code{background-color:#6d737b;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #6d737b;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #6d737b;margin-right:1.5rem;padding-right:1rem} 8 | -------------------------------------------------------------------------------- /frontend/public/static/tinymce/skins/content/default/content.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#ccc}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem} 8 | -------------------------------------------------------------------------------- /frontend/public/static/tinymce/skins/content/document/content.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | @media screen{html{background:#f4f4f4;min-height:100%}}body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif}@media screen{body{background-color:#fff;box-shadow:0 0 4px rgba(0,0,0,.15);box-sizing:border-box;margin:1rem auto 0;max-width:820px;min-height:calc(100vh - 1rem);padding:4rem 6rem 6rem 6rem}}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#ccc}figure figcaption{color:#999;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem} 8 | -------------------------------------------------------------------------------- /frontend/public/static/tinymce/skins/content/writer/content.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem auto;max-width:900px}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#ccc}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem} 8 | -------------------------------------------------------------------------------- /frontend/public/static/tinymce/skins/ui/oxide-dark/content.mobile.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | .tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection { 8 | /* Note: this file is used inside the content, so isn't part of theming */ 9 | background-color: green; 10 | display: inline-block; 11 | opacity: 0.5; 12 | position: absolute; 13 | } 14 | body { 15 | -webkit-text-size-adjust: none; 16 | } 17 | body img { 18 | /* this is related to the content margin */ 19 | max-width: 96vw; 20 | } 21 | body table img { 22 | max-width: 95%; 23 | } 24 | body { 25 | font-family: sans-serif; 26 | } 27 | table { 28 | border-collapse: collapse; 29 | } 30 | -------------------------------------------------------------------------------- /frontend/public/static/tinymce/skins/ui/oxide-dark/content.mobile.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | .tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse} 8 | -------------------------------------------------------------------------------- /frontend/public/static/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend/public/static/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff -------------------------------------------------------------------------------- /frontend/public/static/tinymce/skins/ui/oxide-dark/skin.shadowdom.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | body.tox-dialog__disable-scroll { 8 | overflow: hidden; 9 | } 10 | .tox-fullscreen { 11 | border: 0; 12 | height: 100%; 13 | margin: 0; 14 | overflow: hidden; 15 | -ms-scroll-chaining: none; 16 | overscroll-behavior: none; 17 | padding: 0; 18 | touch-action: pinch-zoom; 19 | width: 100%; 20 | } 21 | .tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle { 22 | display: none; 23 | } 24 | .tox.tox-tinymce.tox-fullscreen, 25 | .tox-shadowhost.tox-fullscreen { 26 | left: 0; 27 | position: fixed; 28 | top: 0; 29 | z-index: 1200; 30 | } 31 | .tox.tox-tinymce.tox-fullscreen { 32 | background-color: transparent; 33 | } 34 | .tox-fullscreen .tox.tox-tinymce-aux, 35 | .tox-fullscreen ~ .tox.tox-tinymce-aux { 36 | z-index: 1201; 37 | } 38 | -------------------------------------------------------------------------------- /frontend/public/static/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | body.tox-dialog__disable-scroll{overflow:hidden}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201} 8 | -------------------------------------------------------------------------------- /frontend/public/static/tinymce/skins/ui/oxide/content.mobile.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | .tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection { 8 | /* Note: this file is used inside the content, so isn't part of theming */ 9 | background-color: green; 10 | display: inline-block; 11 | opacity: 0.5; 12 | position: absolute; 13 | } 14 | body { 15 | -webkit-text-size-adjust: none; 16 | } 17 | body img { 18 | /* this is related to the content margin */ 19 | max-width: 96vw; 20 | } 21 | body table img { 22 | max-width: 95%; 23 | } 24 | body { 25 | font-family: sans-serif; 26 | } 27 | table { 28 | border-collapse: collapse; 29 | } 30 | -------------------------------------------------------------------------------- /frontend/public/static/tinymce/skins/ui/oxide/content.mobile.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | .tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse} 8 | -------------------------------------------------------------------------------- /frontend/public/static/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend/public/static/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff -------------------------------------------------------------------------------- /frontend/public/static/tinymce/skins/ui/oxide/skin.shadowdom.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | body.tox-dialog__disable-scroll { 8 | overflow: hidden; 9 | } 10 | .tox-fullscreen { 11 | border: 0; 12 | height: 100%; 13 | margin: 0; 14 | overflow: hidden; 15 | -ms-scroll-chaining: none; 16 | overscroll-behavior: none; 17 | padding: 0; 18 | touch-action: pinch-zoom; 19 | width: 100%; 20 | } 21 | .tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle { 22 | display: none; 23 | } 24 | .tox.tox-tinymce.tox-fullscreen, 25 | .tox-shadowhost.tox-fullscreen { 26 | left: 0; 27 | position: fixed; 28 | top: 0; 29 | z-index: 1200; 30 | } 31 | .tox.tox-tinymce.tox-fullscreen { 32 | background-color: transparent; 33 | } 34 | .tox-fullscreen .tox.tox-tinymce-aux, 35 | .tox-fullscreen ~ .tox.tox-tinymce-aux { 36 | z-index: 1201; 37 | } 38 | -------------------------------------------------------------------------------- /frontend/public/static/tinymce/skins/ui/oxide/skin.shadowdom.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | body.tox-dialog__disable-scroll{overflow:hidden}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201} 8 | -------------------------------------------------------------------------------- /frontend/public/static/tinymce/themes/mobile/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "mobile" theme for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/themes/mobile') 5 | // ES2015: 6 | // import 'tinymce/themes/mobile' 7 | require('./theme.js'); -------------------------------------------------------------------------------- /frontend/public/static/tinymce/themes/silver/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "silver" theme for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/themes/silver') 5 | // ES2015: 6 | // import 'tinymce/themes/silver' 7 | require('./theme.js'); -------------------------------------------------------------------------------- /frontend/src/api/date.js: -------------------------------------------------------------------------------- 1 | // date.js 2 | export function formatDate(date, fmt) { 3 | if (/(y+)/.test(fmt)) { 4 | fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)); 5 | } 6 | let o = { 7 | 'M+': date.getMonth() + 1, 8 | 'd+': date.getDate(), 9 | 'h+': date.getHours(), 10 | 'm+': date.getMinutes(), 11 | 's+': date.getSeconds() 12 | }; 13 | for (let k in o) { 14 | if (new RegExp(`(${k})`).test(fmt)) { 15 | let str = o[k] + ''; 16 | fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str)); 17 | } 18 | } 19 | return fmt; 20 | } 21 | 22 | function padLeftZero(str) { 23 | return ('00' + str).substr(str.length); 24 | } 25 | 26 | export function str2Date(dateStr, separator) { 27 | if (!separator) { 28 | separator = "-"; 29 | } 30 | let dateArr = dateStr.split(separator); 31 | let year = parseInt(dateArr[0]); 32 | let month; 33 | //处理月份为04这样的情况 34 | if (dateArr[1].indexOf("0") == 0) { 35 | month = parseInt(dateArr[1].substring(1)); 36 | } else { 37 | month = parseInt(dateArr[1]); 38 | } 39 | let day = parseInt(dateArr[2]); 40 | let date = new Date(year, month - 1, day); 41 | return date; 42 | } -------------------------------------------------------------------------------- /frontend/src/api/url.js: -------------------------------------------------------------------------------- 1 | import config from "@/config" 2 | // let _url; 3 | // let _domain 4 | // if (process.env.NODE_ENV == "development") { 5 | // _domain = "127.0.0.1:8000" 6 | // //本地开发 7 | // _url = "http://"+_domain+"/api/"; //测试地址/ 8 | // } else { 9 | // _domain = "django-vue3-lyadmin.lybbn.cn" 10 | // _url = "https://"+_domain+"/api/"; //线上地址 11 | // } 12 | export const domain = config.API_DOMAIN; 13 | export const url = config.API_URL; 14 | -------------------------------------------------------------------------------- /frontend/src/assets/img/007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend/src/assets/img/007.png -------------------------------------------------------------------------------- /frontend/src/assets/img/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend/src/assets/img/01.png -------------------------------------------------------------------------------- /frontend/src/assets/img/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend/src/assets/img/02.png -------------------------------------------------------------------------------- /frontend/src/assets/img/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend/src/assets/img/03.png -------------------------------------------------------------------------------- /frontend/src/assets/img/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend/src/assets/img/04.png -------------------------------------------------------------------------------- /frontend/src/assets/img/05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend/src/assets/img/05.png -------------------------------------------------------------------------------- /frontend/src/assets/img/06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend/src/assets/img/06.png -------------------------------------------------------------------------------- /frontend/src/assets/img/088.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend/src/assets/img/088.png -------------------------------------------------------------------------------- /frontend/src/assets/img/098.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend/src/assets/img/098.png -------------------------------------------------------------------------------- /frontend/src/assets/img/099.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend/src/assets/img/099.png -------------------------------------------------------------------------------- /frontend/src/assets/img/100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend/src/assets/img/100.png -------------------------------------------------------------------------------- /frontend/src/assets/img/188.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend/src/assets/img/188.png -------------------------------------------------------------------------------- /frontend/src/assets/img/alipay.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend/src/assets/img/alipay.jpg -------------------------------------------------------------------------------- /frontend/src/assets/img/alired.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend/src/assets/img/alired.jpg -------------------------------------------------------------------------------- /frontend/src/assets/img/avatar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend/src/assets/img/avatar.jpg -------------------------------------------------------------------------------- /frontend/src/assets/img/avatar02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend/src/assets/img/avatar02.jpg -------------------------------------------------------------------------------- /frontend/src/assets/img/bgiphonehen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend/src/assets/img/bgiphonehen.png -------------------------------------------------------------------------------- /frontend/src/assets/img/bgiphonejian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend/src/assets/img/bgiphonejian.png -------------------------------------------------------------------------------- /frontend/src/assets/img/cronexpress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend/src/assets/img/cronexpress.png -------------------------------------------------------------------------------- /frontend/src/assets/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend/src/assets/img/logo.png -------------------------------------------------------------------------------- /frontend/src/assets/img/qq.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend/src/assets/img/qq.jpg -------------------------------------------------------------------------------- /frontend/src/assets/img/show.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend/src/assets/img/show.png -------------------------------------------------------------------------------- /frontend/src/assets/img/sq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend/src/assets/img/sq.png -------------------------------------------------------------------------------- /frontend/src/assets/img/task01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend/src/assets/img/task01.png -------------------------------------------------------------------------------- /frontend/src/assets/img/task02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend/src/assets/img/task02.png -------------------------------------------------------------------------------- /frontend/src/assets/img/wechat.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend/src/assets/img/wechat.jpg -------------------------------------------------------------------------------- /frontend/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend/src/assets/logo.png -------------------------------------------------------------------------------- /frontend/src/components/analysis/barEchart.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 47 | 48 | -------------------------------------------------------------------------------- /frontend/src/components/analysis/echartsInstall.js: -------------------------------------------------------------------------------- 1 | ////全部引入 2 | // import * as echarts from 'echarts'; 3 | 4 | // 引入 echarts 核心模块,核心模块提供了 echarts 使用必须要的接口。 5 | import * as echarts from "echarts/core"; 6 | 7 | // 8 | /** 引入柱状图and折线图图表,图表后缀都为 Chart */ 9 | import { BarChart, LineChart } from "echarts/charts"; 10 | 11 | // 引入提示框,标题,直角坐标系,数据集,内置数据转换器组件,组件后缀都为 Component 12 | import { 13 | LegendComponent, 14 | ToolboxComponent, 15 | TitleComponent, 16 | TooltipComponent, 17 | GridComponent, 18 | DatasetComponent, 19 | TransformComponent, 20 | } from "echarts/components"; 21 | 22 | // 标签自动布局,全局过渡动画等特性 23 | import { LabelLayout, UniversalTransition } from "echarts/features"; 24 | 25 | // 引入 Canvas 渲染器,注意引入 CanvasRenderer 或者 SVGRenderer 是必须的一步 26 | import { CanvasRenderer } from "echarts/renderers"; 27 | 28 | // 注册必须的组件 29 | echarts.use([ 30 | LegendComponent, 31 | ToolboxComponent, 32 | TitleComponent, 33 | TooltipComponent, 34 | GridComponent, 35 | DatasetComponent, 36 | TransformComponent, 37 | BarChart, 38 | LabelLayout, 39 | UniversalTransition, 40 | CanvasRenderer, 41 | LineChart, 42 | ]); 43 | 44 | // 导出 45 | export default echarts; -------------------------------------------------------------------------------- /frontend/src/components/dict/crudTemplateData.js: -------------------------------------------------------------------------------- 1 | /** 2 | * lycrud需要经常用到的数据对象/数组 3 | */ 4 | export default { 5 | // 启用 true/ 禁用 false 6 | STATUS_BOOL:[{ label: '启用', value: true }, { label: '禁用', value: false }], 7 | // 启用 1/ 禁用 0 8 | STATUS_NUMBER:[{ label: '启用', value: 1 }, { label: '禁用', value: 0 }], 9 | // 是 1/ 否 0 10 | WHETHER_NUMBER:[{ label: '是', value: 1 }, { label: '否', value: 0 }], 11 | // 是 true/ 否 false 12 | WHETHER_BOOL:[{ label: '是', value: true }, { label: '否', value: false }], 13 | } -------------------------------------------------------------------------------- /frontend/src/components/render/render.vue: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /frontend/src/config/index.js: -------------------------------------------------------------------------------- 1 | //API DOMAIN 2 | const API_DOMAIN = process.env.NODE_ENV === 'development' ? "127.0.0.1:8000" : "django-vue3-lyadmin.lybbn.cn" 3 | //版本号 4 | const APP_VER = require('../../package.json').version 5 | //lyadmin系统配置 6 | module.exports = { 7 | 8 | //APP版本 9 | APP_VER : APP_VER, 10 | 11 | //API DOMAIN 12 | API_DOMAIN : API_DOMAIN, 13 | 14 | //接口地址 15 | API_URL : process.env.NODE_ENV === 'development' ? "http://"+ API_DOMAIN +"/api/" : "https://"+ API_DOMAIN +"/api/", 16 | 17 | //标题 18 | APP_TITLE : "django-vue-lyadmin后台管理系统", 19 | 20 | //是否开启多标签 21 | ISMULTITABS: true, 22 | 23 | //语言 简体中文 zh-cn、 英文 en(此功能只是示例) 24 | LANG: 'zh-cn', 25 | 26 | // elementplus 组件大小: small、default、large 27 | ELEMENT_SIZE: 'default', 28 | 29 | // elementplus 组件 zIndex 30 | ELEMENT_ZINDEX: 3000, 31 | 32 | // elementplus button组件 autoInsertSpace 是否自动在两个中文字符之间插入空格 33 | ELEMENT_BUTTON: false, 34 | 35 | //左侧菜单默认宽度 默认 185 36 | MENU_WIDTH: 185, 37 | 38 | // 左侧菜单和顶部导航颜色 默认 #3C444D 39 | MENU_HEADER_COLOR:'#3C444D', 40 | 41 | //主题颜色 默认 #409EFF 42 | COLOR: '#409EFF', 43 | 44 | //默认主题 'dark' 暗黑、'light' 正常 45 | THEME: 'light', 46 | 47 | //登录信息数据存储方式 localStorage、sessionStorage 48 | STORAGE_METHOD: 'localStorage', 49 | 50 | //请求超时 51 | TIMEOUT: 10000, 52 | 53 | } -------------------------------------------------------------------------------- /frontend/src/locales/index.js: -------------------------------------------------------------------------------- 1 | import { createI18n } from 'vue-i18n' 2 | import el_zh_cn from 'element-plus/dist/locale/zh-cn.mjs' 3 | import el_en from 'element-plus/dist/locale/en.mjs' 4 | 5 | import zh_cn from './lang/zh-cn.js' 6 | import en from './lang/en.js' 7 | 8 | //得到默认使用的语言 9 | const getDefaultLang = () => { 10 | //用户指定了默认语言时,使用用户指定的 11 | if (localStorage.getItem('language') != null) { 12 | return localStorage.getItem('language'); 13 | } else { 14 | //用户未指定时,根据游览器选择: 15 | if (navigator.language == 'zh-CN') { 16 | return 'zh-cn'; 17 | } else if (navigator.language == 'en') { 18 | return 'en'; 19 | } else { 20 | return 'zh-cn'; 21 | } 22 | } 23 | } 24 | 25 | const messages = { 26 | 'zh-cn': { 27 | el: el_zh_cn, 28 | ...zh_cn 29 | }, 30 | 'en': { 31 | el: el_en, 32 | ...en 33 | } 34 | } 35 | 36 | const i18n = createI18n({ 37 | legacy:false, 38 | locale: getDefaultLang(), 39 | fallbackLocale: 'zh-cn',// 设置备用语言 40 | globalInjection: true, 41 | messages, 42 | }) 43 | 44 | export default i18n; -------------------------------------------------------------------------------- /frontend/src/locales/lang/en.js: -------------------------------------------------------------------------------- 1 | export default { 2 | login: { 3 | loginInTitle: 'User Login', 4 | loginAccount: 'Please input Account', 5 | loginPWD: 'Please input Password', 6 | code: 'Captcha', 7 | rememberMe: 'Remember me', 8 | AccountError: 'Please input a Right Account', 9 | PWError: 'Please input a password', 10 | codeError: 'Please input a Captcha', 11 | login: 'Login', 12 | } 13 | } -------------------------------------------------------------------------------- /frontend/src/locales/lang/zh-cn.js: -------------------------------------------------------------------------------- 1 | export default { 2 | login: { 3 | loginInTitle: '用户登录', 4 | loginAccount: '请输入账号', 5 | loginPWD: '请输入密码', 6 | code: '验证码', 7 | rememberMe: '记住密码', 8 | AccountError: '请输入用户名', 9 | PWError: '请输入密码', 10 | codeError: '请输入验证码', 11 | login: '登录', 12 | 13 | } 14 | } -------------------------------------------------------------------------------- /frontend/src/mixins/mixins.js: -------------------------------------------------------------------------------- 1 | import {getTableHeight} from "@/utils/util"; 2 | export const lyMixins = { 3 | 4 | data() { 5 | return { 6 | tableHeight:500, 7 | } 8 | }, 9 | methods:{ 10 | // 计算搜索栏的高度 11 | listenResize() { 12 | this.$nextTick(() => { 13 | this.getTheTableHeight() 14 | }) 15 | }, 16 | getTheTableHeight(){ 17 | let orderstaticHeight = 0 18 | if(this.$refs.orderStatic && this.$refs.orderStatic !==undefined){ 19 | orderstaticHeight = this.$refs.orderStatic.offsetHeight 20 | } 21 | orderstaticHeight = this.isFull?orderstaticHeight - 110:orderstaticHeight 22 | this.tableHeight = getTableHeight(this.$refs.tableSelect.offsetHeight+orderstaticHeight) 23 | } 24 | }, 25 | mounted() { 26 | // 监听页面宽度变化搜索框的高度 27 | window.addEventListener('resize', this.listenResize); 28 | this.$nextTick(() => { 29 | this.getTheTableHeight() 30 | }) 31 | }, 32 | unmounted() { 33 | // 页面销毁,去掉监听事件 34 | window.removeEventListener("resize", this.listenResize); 35 | }, 36 | } -------------------------------------------------------------------------------- /frontend/src/store/index.js: -------------------------------------------------------------------------------- 1 | import { createPinia } from 'pinia' 2 | 3 | const store = createPinia() 4 | 5 | export default store 6 | 7 | -------------------------------------------------------------------------------- /frontend/src/store/keepAlive.js: -------------------------------------------------------------------------------- 1 | import { defineStore } from 'pinia' 2 | 3 | export const useKeepAliveStore = defineStore('keepAlive', { 4 | state:() => { 5 | return { 6 | keepAliveRoute:['server'],//希望缓存的页面name,如['server'] 7 | } 8 | }, 9 | getters:{ 10 | 11 | }, 12 | actions: { 13 | }, 14 | }) -------------------------------------------------------------------------------- /frontend/src/utils/color.js: -------------------------------------------------------------------------------- 1 | export default { 2 | //hex颜色转rgb颜色 3 | HexToRgb(str) { 4 | str = str.replace("#", "") 5 | var hxs = str.match(/../g) 6 | for (var i = 0; i < 3; i++) hxs[i] = parseInt(hxs[i], 16) 7 | return hxs 8 | }, 9 | //rgb颜色转hex颜色 10 | RgbToHex(a, b, c) { 11 | var hexs = [a.toString(16), b.toString(16), c.toString(16)] 12 | for (var i = 0; i < 3; i++) { 13 | if (hexs[i].length == 1) hexs[i] = "0" + hexs[i] 14 | } 15 | return "#" + hexs.join(""); 16 | }, 17 | //加深 18 | darken(color, level) { 19 | var rgbc = this.HexToRgb(color) 20 | for (var i = 0; i < 3; i++) rgbc[i] = Math.floor(rgbc[i] * (1 - level)) 21 | return this.RgbToHex(rgbc[0], rgbc[1], rgbc[2]) 22 | }, 23 | //变淡 24 | lighten(color, level) { 25 | var rgbc = this.HexToRgb(color) 26 | for (var i = 0; i < 3; i++) rgbc[i] = Math.floor((255 - rgbc[i]) * level + rgbc[i]) 27 | return this.RgbToHex(rgbc[0], rgbc[1], rgbc[2]) 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /frontend/src/views/lyterminal.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 29 | -------------------------------------------------------------------------------- /frontend/src/views/monitorManage/crontab/components/language/index.js: -------------------------------------------------------------------------------- 1 | import en from './en' 2 | import cn from './cn' 3 | import pt from './pt_br' 4 | 5 | export default { 6 | en, 7 | cn, 8 | pt 9 | } -------------------------------------------------------------------------------- /frontend_vite/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | dist.zip 5 | 6 | # local env files 7 | .env.local 8 | .env.*.local 9 | 10 | # Log files 11 | npm-debug.log* 12 | yarn-debug.log* 13 | yarn-error.log* 14 | 15 | # Editor directories and files 16 | .idea 17 | .vscode 18 | *.suo 19 | *.ntvs* 20 | *.njsproj 21 | *.sln 22 | *.sw? 23 | -------------------------------------------------------------------------------- /frontend_vite/README.md: -------------------------------------------------------------------------------- 1 | # django-vue-lyadmin frontend 前端框架 2 | 3 | #### slogon 4 | 5 | 做一个专业前端能用的框架,后台人员也能面向配置的、能改得动的CRUD 6 | 7 | #### 介绍 8 | 9 | django-vue-lyadmin 是一套前后端分离的前端后台管理框架,是适配 django-vue-lyadmin 的 python django 后台管理项目的专属框架,基于原生 vue3 elmentuiplus 开发,灵活自定义,可发挥空间大 10 | 11 | #### 软件架构 12 | 13 | 14 | ``` 15 | 1、VUE3 16 | 2、富文本编辑器 tinymce 17 | 3、ElementPlus 18 | ``` 19 | 20 | #### 安装教程 21 | 22 | 23 | ``` 24 | cd frontend 25 | npm install --registry=https://registry.npmmirror.com 26 | 27 | 注释:如果安装过程有如下报错则运行:npm cache clear --force 28 | npm ERR! Cannot read properties of null (reading 'pickAlgorithm') 29 | ``` 30 | 31 | 32 | #### 使用说明 33 | 34 | 调试开发直接运行: 35 | 36 | ``` 37 | npm start 38 | ``` 39 | 40 | 41 | #### 打包 42 | 43 | 44 | ``` 45 | npm run build 46 | ``` 47 | 48 | 49 | 打包后静态文件在 dist 目录中 50 | -------------------------------------------------------------------------------- /frontend_vite/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset' 4 | ], 5 | plugins: ["@vue/babel-plugin-jsx"] 6 | } 7 | -------------------------------------------------------------------------------- /frontend_vite/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend_vite/public/favicon.ico -------------------------------------------------------------------------------- /frontend_vite/public/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend_vite/public/static/favicon.ico -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tinymce", 3 | "description": "Web based JavaScript HTML WYSIWYG editor control.", 4 | "license": "LGPL-2.1", 5 | "keywords": [ 6 | "wysiwyg", 7 | "tinymce", 8 | "richtext", 9 | "javascript", 10 | "html", 11 | "text", 12 | "rich editor", 13 | "rich text editor", 14 | "rte", 15 | "rich text", 16 | "contenteditable", 17 | "editing" 18 | ], 19 | "homepage": "https://www.tiny.cloud/", 20 | "ignore": [ 21 | "README.md", 22 | "composer.json", 23 | "package.json", 24 | ".npmignore", 25 | "CHANGELOG.md" 26 | ] 27 | } -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tinymce/tinymce", 3 | "version": "5.10.2", 4 | "description": "Web based JavaScript HTML WYSIWYG editor control.", 5 | "license": [ 6 | "LGPL-2.1-only" 7 | ], 8 | "keywords": [ 9 | "wysiwyg", 10 | "tinymce", 11 | "richtext", 12 | "javascript", 13 | "html", 14 | "text", 15 | "rich editor", 16 | "rich text editor", 17 | "rte", 18 | "rich text", 19 | "contenteditable", 20 | "editing" 21 | ], 22 | "homepage": "https://www.tiny.cloud/", 23 | "type": "component", 24 | "extra": { 25 | "component": { 26 | "scripts": [ 27 | "tinymce.js", 28 | "plugins/*/plugin.js", 29 | "themes/*/theme.js", 30 | "themes/*/icons.js" 31 | ], 32 | "files": [ 33 | "tinymce.min.js", 34 | "plugins/*/plugin.min.js", 35 | "themes/*/theme.min.js", 36 | "skins/**", 37 | "icons/*/icons.min.js" 38 | ] 39 | } 40 | }, 41 | "archive": { 42 | "exclude": [ 43 | "README.md", 44 | "bower.js", 45 | "package.json", 46 | ".npmignore", 47 | "CHANGELOG.md" 48 | ] 49 | } 50 | } -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/icons/default/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "default" icons for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/icons/default') 5 | // ES2015: 6 | // import 'tinymce/icons/default' 7 | require('./icons.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/advlist/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "advlist" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/advlist') 5 | // ES2015: 6 | // import 'tinymce/plugins/advlist' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/anchor/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "anchor" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/anchor') 5 | // ES2015: 6 | // import 'tinymce/plugins/anchor' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/autolink/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "autolink" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/autolink') 5 | // ES2015: 6 | // import 'tinymce/plugins/autolink' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/autoresize/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "autoresize" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/autoresize') 5 | // ES2015: 6 | // import 'tinymce/plugins/autoresize' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/autosave/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "autosave" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/autosave') 5 | // ES2015: 6 | // import 'tinymce/plugins/autosave' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/bbcode/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "bbcode" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/bbcode') 5 | // ES2015: 6 | // import 'tinymce/plugins/bbcode' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/charmap/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "charmap" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/charmap') 5 | // ES2015: 6 | // import 'tinymce/plugins/charmap' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/code/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "code" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/code') 5 | // ES2015: 6 | // import 'tinymce/plugins/code' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/code/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.2 (2021-11-17) 8 | */ 9 | !function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("code",function(e){var t,o;function n(){return o.execCommand("mceCodeEditor")}return(t=e).addCommand("mceCodeEditor",function(){var n,e;e=(n=t).getContent({source_view:!0}),n.windowManager.open({title:"Source Code",size:"large",body:{type:"panel",items:[{type:"textarea",name:"code"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{code:e},onSubmit:function(e){var t=n,o=e.getData().code;t.focus(),t.undoManager.transact(function(){t.setContent(o)}),t.selection.setCursorLocation(),t.nodeChanged(),e.close()}})}),(o=e).ui.registry.addButton("code",{icon:"sourcecode",tooltip:"Source code",onAction:n}),o.ui.registry.addMenuItem("code",{icon:"sourcecode",text:"Source code",onAction:n}),{}})}(); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/codesample/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "codesample" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/codesample') 5 | // ES2015: 6 | // import 'tinymce/plugins/codesample' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/colorpicker/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "colorpicker" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/colorpicker') 5 | // ES2015: 6 | // import 'tinymce/plugins/colorpicker' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/colorpicker/plugin.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.2 (2021-11-17) 8 | */ 9 | (function () { 10 | 'use strict'; 11 | 12 | var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); 13 | 14 | function Plugin () { 15 | global.add('colorpicker', function () { 16 | }); 17 | } 18 | 19 | Plugin(); 20 | 21 | }()); 22 | -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/colorpicker/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.2 (2021-11-17) 8 | */ 9 | !function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("colorpicker",function(){})}(); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/contextmenu/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "contextmenu" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/contextmenu') 5 | // ES2015: 6 | // import 'tinymce/plugins/contextmenu' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/contextmenu/plugin.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.2 (2021-11-17) 8 | */ 9 | (function () { 10 | 'use strict'; 11 | 12 | var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); 13 | 14 | function Plugin () { 15 | global.add('contextmenu', function () { 16 | }); 17 | } 18 | 19 | Plugin(); 20 | 21 | }()); 22 | -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/contextmenu/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.2 (2021-11-17) 8 | */ 9 | !function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("contextmenu",function(){})}(); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/directionality/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "directionality" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/directionality') 5 | // ES2015: 6 | // import 'tinymce/plugins/directionality' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/emoticons/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "emoticons" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/emoticons') 5 | // ES2015: 6 | // import 'tinymce/plugins/emoticons' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/fullpage/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "fullpage" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/fullpage') 5 | // ES2015: 6 | // import 'tinymce/plugins/fullpage' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/fullscreen/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "fullscreen" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/fullscreen') 5 | // ES2015: 6 | // import 'tinymce/plugins/fullscreen' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/help/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "help" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/help') 5 | // ES2015: 6 | // import 'tinymce/plugins/help' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/hr/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "hr" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/hr') 5 | // ES2015: 6 | // import 'tinymce/plugins/hr' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/hr/plugin.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.2 (2021-11-17) 8 | */ 9 | (function () { 10 | 'use strict'; 11 | 12 | var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); 13 | 14 | var register$1 = function (editor) { 15 | editor.addCommand('InsertHorizontalRule', function () { 16 | editor.execCommand('mceInsertContent', false, '
'); 17 | }); 18 | }; 19 | 20 | var register = function (editor) { 21 | var onAction = function () { 22 | return editor.execCommand('InsertHorizontalRule'); 23 | }; 24 | editor.ui.registry.addButton('hr', { 25 | icon: 'horizontal-rule', 26 | tooltip: 'Horizontal line', 27 | onAction: onAction 28 | }); 29 | editor.ui.registry.addMenuItem('hr', { 30 | icon: 'horizontal-rule', 31 | text: 'Horizontal line', 32 | onAction: onAction 33 | }); 34 | }; 35 | 36 | function Plugin () { 37 | global.add('hr', function (editor) { 38 | register$1(editor); 39 | register(editor); 40 | }); 41 | } 42 | 43 | Plugin(); 44 | 45 | }()); 46 | -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/hr/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.2 (2021-11-17) 8 | */ 9 | !function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("hr",function(n){var o,t;function e(){return t.execCommand("InsertHorizontalRule")}(o=n).addCommand("InsertHorizontalRule",function(){o.execCommand("mceInsertContent",!1,"
")}),(t=n).ui.registry.addButton("hr",{icon:"horizontal-rule",tooltip:"Horizontal line",onAction:e}),t.ui.registry.addMenuItem("hr",{icon:"horizontal-rule",text:"Horizontal line",onAction:e})})}(); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/image/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "image" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/image') 5 | // ES2015: 6 | // import 'tinymce/plugins/image' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/imagetools/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "imagetools" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/imagetools') 5 | // ES2015: 6 | // import 'tinymce/plugins/imagetools' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/importcss/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "importcss" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/importcss') 5 | // ES2015: 6 | // import 'tinymce/plugins/importcss' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/insertdatetime/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "insertdatetime" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/insertdatetime') 5 | // ES2015: 6 | // import 'tinymce/plugins/insertdatetime' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/legacyoutput/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "legacyoutput" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/legacyoutput') 5 | // ES2015: 6 | // import 'tinymce/plugins/legacyoutput' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/link/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "link" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/link') 5 | // ES2015: 6 | // import 'tinymce/plugins/link' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/lists/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "lists" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/lists') 5 | // ES2015: 6 | // import 'tinymce/plugins/lists' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/media/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "media" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/media') 5 | // ES2015: 6 | // import 'tinymce/plugins/media' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/nonbreaking/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "nonbreaking" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/nonbreaking') 5 | // ES2015: 6 | // import 'tinymce/plugins/nonbreaking' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/nonbreaking/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.2 (2021-11-17) 8 | */ 9 | !function(){"use strict";function o(n,e){for(var a="",o=0;o'+o(" ",e)+"":o(" ",e);n.undoManager.transact(function(){return n.insertContent(a)})}var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=tinymce.util.Tools.resolve("tinymce.util.VK");n.add("nonbreaking",function(n){var e,a,o,t,i;function r(){return a.execCommand("mceNonBreaking")}(e=n).addCommand("mceNonBreaking",function(){s(e,1)}),(a=n).ui.registry.addButton("nonbreaking",{icon:"non-breaking",tooltip:"Nonbreaking space",onAction:r}),a.ui.registry.addMenuItem("nonbreaking",{icon:"non-breaking",text:"Nonbreaking space",onAction:r}),0<(i="boolean"==typeof(t=(o=n).getParam("nonbreaking_force_tab",0))?!0===t?3:0:t)&&o.on("keydown",function(n){n.keyCode!==c.TAB||n.isDefaultPrevented()||n.shiftKey||(n.preventDefault(),n.stopImmediatePropagation(),s(o,i))})})}(); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/noneditable/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "noneditable" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/noneditable') 5 | // ES2015: 6 | // import 'tinymce/plugins/noneditable' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/pagebreak/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "pagebreak" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/pagebreak') 5 | // ES2015: 6 | // import 'tinymce/plugins/pagebreak' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/paste/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "paste" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/paste') 5 | // ES2015: 6 | // import 'tinymce/plugins/paste' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/preview/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "preview" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/preview') 5 | // ES2015: 6 | // import 'tinymce/plugins/preview' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/print/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "print" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/print') 5 | // ES2015: 6 | // import 'tinymce/plugins/print' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/print/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.2 (2021-11-17) 8 | */ 9 | !function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),r=tinymce.util.Tools.resolve("tinymce.Env");n.add("print",function(n){var t,i;function e(){return i.execCommand("mcePrint")}(t=n).addCommand("mcePrint",function(){r.browser.isIE()?t.getDoc().execCommand("print",!1,null):t.getWin().print()}),(i=n).ui.registry.addButton("print",{icon:"print",tooltip:"Print",onAction:e}),i.ui.registry.addMenuItem("print",{text:"Print...",icon:"print",onAction:e}),n.addShortcut("Meta+P","","mcePrint")})}(); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/quickbars/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "quickbars" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/quickbars') 5 | // ES2015: 6 | // import 'tinymce/plugins/quickbars' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/save/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "save" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/save') 5 | // ES2015: 6 | // import 'tinymce/plugins/save' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/searchreplace/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "searchreplace" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/searchreplace') 5 | // ES2015: 6 | // import 'tinymce/plugins/searchreplace' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/spellchecker/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "spellchecker" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/spellchecker') 5 | // ES2015: 6 | // import 'tinymce/plugins/spellchecker' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/tabfocus/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "tabfocus" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/tabfocus') 5 | // ES2015: 6 | // import 'tinymce/plugins/tabfocus' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/table/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "table" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/table') 5 | // ES2015: 6 | // import 'tinymce/plugins/table' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/template/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "template" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/template') 5 | // ES2015: 6 | // import 'tinymce/plugins/template' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/textcolor/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "textcolor" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/textcolor') 5 | // ES2015: 6 | // import 'tinymce/plugins/textcolor' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/textcolor/plugin.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.2 (2021-11-17) 8 | */ 9 | (function () { 10 | 'use strict'; 11 | 12 | var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); 13 | 14 | function Plugin () { 15 | global.add('textcolor', function () { 16 | }); 17 | } 18 | 19 | Plugin(); 20 | 21 | }()); 22 | -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/textcolor/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.2 (2021-11-17) 8 | */ 9 | !function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("textcolor",function(){})}(); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/textpattern/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "textpattern" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/textpattern') 5 | // ES2015: 6 | // import 'tinymce/plugins/textpattern' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/toc/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "toc" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/toc') 5 | // ES2015: 6 | // import 'tinymce/plugins/toc' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/visualblocks/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "visualblocks" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/visualblocks') 5 | // ES2015: 6 | // import 'tinymce/plugins/visualblocks' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/visualblocks/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.2 (2021-11-17) 8 | */ 9 | !function(){"use strict";function f(t,o,e){var n,i;t.dom.toggleClass(t.getBody(),"mce-visualblocks"),e.set(!e.get()),n=t,i=e.get(),n.fire("VisualBlocks",{state:i})}function g(e,n){return function(o){function t(t){return o.setActive(t.state)}return o.setActive(n.get()),e.on("VisualBlocks",t),function(){return e.off("VisualBlocks",t)}}}tinymce.util.Tools.resolve("tinymce.PluginManager").add("visualblocks",function(t,o){var e,n,i,s,c,u,l,a=(e=!1,{get:function(){return e},set:function(t){e=t}});function r(){return s.execCommand("mceVisualBlocks")}i=a,(n=t).addCommand("mceVisualBlocks",function(){f(n,0,i)}),(s=t).ui.registry.addToggleButton("visualblocks",{icon:"visualblocks",tooltip:"Show blocks",onAction:r,onSetup:g(s,c=a)}),s.ui.registry.addToggleMenuItem("visualblocks",{text:"Show blocks",icon:"visualblocks",onAction:r,onSetup:g(s,c)}),l=a,(u=t).on("PreviewFormats AfterPreviewFormats",function(t){l.get()&&u.dom.toggleClass(u.getBody(),"mce-visualblocks","afterpreviewformats"===t.type)}),u.on("init",function(){u.getParam("visualblocks_default_state",!1,"boolean")&&f(u,0,l)})})}(); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/visualchars/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "visualchars" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/visualchars') 5 | // ES2015: 6 | // import 'tinymce/plugins/visualchars' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/plugins/wordcount/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "wordcount" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/wordcount') 5 | // ES2015: 6 | // import 'tinymce/plugins/wordcount' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/skins/content/dark/content.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | body{background-color:#2f3742;color:#dfe0e4;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}a{color:#4099ff}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#6d737b}figure{display:table;margin:1rem auto}figure figcaption{color:#8a8f97;display:block;margin-top:.25rem;text-align:center}hr{border-color:#6d737b;border-style:solid;border-width:1px 0 0 0}code{background-color:#6d737b;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #6d737b;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #6d737b;margin-right:1.5rem;padding-right:1rem} 8 | -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/skins/content/default/content.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#ccc}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem} 8 | -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/skins/content/document/content.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | @media screen{html{background:#f4f4f4;min-height:100%}}body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif}@media screen{body{background-color:#fff;box-shadow:0 0 4px rgba(0,0,0,.15);box-sizing:border-box;margin:1rem auto 0;max-width:820px;min-height:calc(100vh - 1rem);padding:4rem 6rem 6rem 6rem}}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#ccc}figure figcaption{color:#999;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem} 8 | -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/skins/content/writer/content.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem auto;max-width:900px}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#ccc}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem} 8 | -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/skins/ui/oxide-dark/content.mobile.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | .tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection { 8 | /* Note: this file is used inside the content, so isn't part of theming */ 9 | background-color: green; 10 | display: inline-block; 11 | opacity: 0.5; 12 | position: absolute; 13 | } 14 | body { 15 | -webkit-text-size-adjust: none; 16 | } 17 | body img { 18 | /* this is related to the content margin */ 19 | max-width: 96vw; 20 | } 21 | body table img { 22 | max-width: 95%; 23 | } 24 | body { 25 | font-family: sans-serif; 26 | } 27 | table { 28 | border-collapse: collapse; 29 | } 30 | -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/skins/ui/oxide-dark/content.mobile.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | .tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse} 8 | -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend_vite/public/static/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/skins/ui/oxide-dark/skin.shadowdom.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | body.tox-dialog__disable-scroll { 8 | overflow: hidden; 9 | } 10 | .tox-fullscreen { 11 | border: 0; 12 | height: 100%; 13 | margin: 0; 14 | overflow: hidden; 15 | -ms-scroll-chaining: none; 16 | overscroll-behavior: none; 17 | padding: 0; 18 | touch-action: pinch-zoom; 19 | width: 100%; 20 | } 21 | .tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle { 22 | display: none; 23 | } 24 | .tox.tox-tinymce.tox-fullscreen, 25 | .tox-shadowhost.tox-fullscreen { 26 | left: 0; 27 | position: fixed; 28 | top: 0; 29 | z-index: 1200; 30 | } 31 | .tox.tox-tinymce.tox-fullscreen { 32 | background-color: transparent; 33 | } 34 | .tox-fullscreen .tox.tox-tinymce-aux, 35 | .tox-fullscreen ~ .tox.tox-tinymce-aux { 36 | z-index: 1201; 37 | } 38 | -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | body.tox-dialog__disable-scroll{overflow:hidden}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201} 8 | -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/skins/ui/oxide/content.mobile.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | .tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection { 8 | /* Note: this file is used inside the content, so isn't part of theming */ 9 | background-color: green; 10 | display: inline-block; 11 | opacity: 0.5; 12 | position: absolute; 13 | } 14 | body { 15 | -webkit-text-size-adjust: none; 16 | } 17 | body img { 18 | /* this is related to the content margin */ 19 | max-width: 96vw; 20 | } 21 | body table img { 22 | max-width: 95%; 23 | } 24 | body { 25 | font-family: sans-serif; 26 | } 27 | table { 28 | border-collapse: collapse; 29 | } 30 | -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/skins/ui/oxide/content.mobile.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | .tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse} 8 | -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend_vite/public/static/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/skins/ui/oxide/skin.shadowdom.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | body.tox-dialog__disable-scroll { 8 | overflow: hidden; 9 | } 10 | .tox-fullscreen { 11 | border: 0; 12 | height: 100%; 13 | margin: 0; 14 | overflow: hidden; 15 | -ms-scroll-chaining: none; 16 | overscroll-behavior: none; 17 | padding: 0; 18 | touch-action: pinch-zoom; 19 | width: 100%; 20 | } 21 | .tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle { 22 | display: none; 23 | } 24 | .tox.tox-tinymce.tox-fullscreen, 25 | .tox-shadowhost.tox-fullscreen { 26 | left: 0; 27 | position: fixed; 28 | top: 0; 29 | z-index: 1200; 30 | } 31 | .tox.tox-tinymce.tox-fullscreen { 32 | background-color: transparent; 33 | } 34 | .tox-fullscreen .tox.tox-tinymce-aux, 35 | .tox-fullscreen ~ .tox.tox-tinymce-aux { 36 | z-index: 1201; 37 | } 38 | -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/skins/ui/oxide/skin.shadowdom.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | */ 7 | body.tox-dialog__disable-scroll{overflow:hidden}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201} 8 | -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/themes/mobile/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "mobile" theme for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/themes/mobile') 5 | // ES2015: 6 | // import 'tinymce/themes/mobile' 7 | require('./theme.js'); -------------------------------------------------------------------------------- /frontend_vite/public/static/tinymce/themes/silver/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "silver" theme for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/themes/silver') 5 | // ES2015: 6 | // import 'tinymce/themes/silver' 7 | require('./theme.js'); -------------------------------------------------------------------------------- /frontend_vite/src/api/date.js: -------------------------------------------------------------------------------- 1 | // date.js 2 | export function formatDate(date, fmt) { 3 | if (/(y+)/.test(fmt)) { 4 | fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)); 5 | } 6 | let o = { 7 | 'M+': date.getMonth() + 1, 8 | 'd+': date.getDate(), 9 | 'h+': date.getHours(), 10 | 'm+': date.getMinutes(), 11 | 's+': date.getSeconds() 12 | }; 13 | for (let k in o) { 14 | if (new RegExp(`(${k})`).test(fmt)) { 15 | let str = o[k] + ''; 16 | fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str)); 17 | } 18 | } 19 | return fmt; 20 | } 21 | 22 | function padLeftZero(str) { 23 | return ('00' + str).substr(str.length); 24 | } 25 | 26 | export function str2Date(dateStr, separator) { 27 | if (!separator) { 28 | separator = "-"; 29 | } 30 | let dateArr = dateStr.split(separator); 31 | let year = parseInt(dateArr[0]); 32 | let month; 33 | //处理月份为04这样的情况 34 | if (dateArr[1].indexOf("0") == 0) { 35 | month = parseInt(dateArr[1].substring(1)); 36 | } else { 37 | month = parseInt(dateArr[1]); 38 | } 39 | let day = parseInt(dateArr[2]); 40 | let date = new Date(year, month - 1, day); 41 | return date; 42 | } -------------------------------------------------------------------------------- /frontend_vite/src/api/url.js: -------------------------------------------------------------------------------- 1 | import config from "@/config" 2 | // let _url; 3 | // let _domain 4 | // if (process.env.NODE_ENV == "development") { 5 | // _domain = "127.0.0.1:8000" 6 | // //本地开发 7 | // _url = "http://"+_domain+"/api/"; //测试地址/ 8 | // } else { 9 | // _domain = "django-vue3-lyadmin.lybbn.cn" 10 | // _url = "https://"+_domain+"/api/"; //线上地址 11 | // } 12 | export const domain = config.API_DOMAIN; 13 | export const url = config.API_URL; 14 | -------------------------------------------------------------------------------- /frontend_vite/src/assets/img/alipay.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend_vite/src/assets/img/alipay.jpg -------------------------------------------------------------------------------- /frontend_vite/src/assets/img/alired.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend_vite/src/assets/img/alired.jpg -------------------------------------------------------------------------------- /frontend_vite/src/assets/img/avatar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend_vite/src/assets/img/avatar.jpg -------------------------------------------------------------------------------- /frontend_vite/src/assets/img/avatar02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend_vite/src/assets/img/avatar02.jpg -------------------------------------------------------------------------------- /frontend_vite/src/assets/img/bgiphonehen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend_vite/src/assets/img/bgiphonehen.png -------------------------------------------------------------------------------- /frontend_vite/src/assets/img/bgiphonejian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend_vite/src/assets/img/bgiphonejian.png -------------------------------------------------------------------------------- /frontend_vite/src/assets/img/cronexpress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend_vite/src/assets/img/cronexpress.png -------------------------------------------------------------------------------- /frontend_vite/src/assets/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend_vite/src/assets/img/logo.png -------------------------------------------------------------------------------- /frontend_vite/src/assets/img/qq.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend_vite/src/assets/img/qq.jpg -------------------------------------------------------------------------------- /frontend_vite/src/assets/img/show.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend_vite/src/assets/img/show.png -------------------------------------------------------------------------------- /frontend_vite/src/assets/img/sq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend_vite/src/assets/img/sq.png -------------------------------------------------------------------------------- /frontend_vite/src/assets/img/task01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend_vite/src/assets/img/task01.png -------------------------------------------------------------------------------- /frontend_vite/src/assets/img/task02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend_vite/src/assets/img/task02.png -------------------------------------------------------------------------------- /frontend_vite/src/assets/img/wechat.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend_vite/src/assets/img/wechat.jpg -------------------------------------------------------------------------------- /frontend_vite/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lybbn/django-vue-lyadmin/379703223e0b833a992d1ece7a8e2b20a91301ee/frontend_vite/src/assets/logo.png -------------------------------------------------------------------------------- /frontend_vite/src/components/analysis/barEchart.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 47 | 48 | -------------------------------------------------------------------------------- /frontend_vite/src/components/analysis/echartsInstall.js: -------------------------------------------------------------------------------- 1 | ////全部引入 2 | // import * as echarts from 'echarts'; 3 | 4 | // 引入 echarts 核心模块,核心模块提供了 echarts 使用必须要的接口。 5 | import * as echarts from "echarts/core"; 6 | 7 | // 8 | /** 引入柱状图and折线图图表,图表后缀都为 Chart */ 9 | import { BarChart, LineChart } from "echarts/charts"; 10 | 11 | // 引入提示框,标题,直角坐标系,数据集,内置数据转换器组件,组件后缀都为 Component 12 | import { 13 | LegendComponent, 14 | ToolboxComponent, 15 | TitleComponent, 16 | TooltipComponent, 17 | GridComponent, 18 | DatasetComponent, 19 | TransformComponent, 20 | } from "echarts/components"; 21 | 22 | // 标签自动布局,全局过渡动画等特性 23 | import { LabelLayout, UniversalTransition } from "echarts/features"; 24 | 25 | // 引入 Canvas 渲染器,注意引入 CanvasRenderer 或者 SVGRenderer 是必须的一步 26 | import { CanvasRenderer } from "echarts/renderers"; 27 | 28 | // 注册必须的组件 29 | echarts.use([ 30 | LegendComponent, 31 | ToolboxComponent, 32 | TitleComponent, 33 | TooltipComponent, 34 | GridComponent, 35 | DatasetComponent, 36 | TransformComponent, 37 | BarChart, 38 | LabelLayout, 39 | UniversalTransition, 40 | CanvasRenderer, 41 | LineChart, 42 | ]); 43 | 44 | // 导出 45 | export default echarts; -------------------------------------------------------------------------------- /frontend_vite/src/components/dict/crudTemplateData.js: -------------------------------------------------------------------------------- 1 | /** 2 | * lycrud需要经常用到的数据对象/数组 3 | */ 4 | export default { 5 | // 启用 true/ 禁用 false 6 | STATUS_BOOL:[{ label: '启用', value: true }, { label: '禁用', value: false }], 7 | // 启用 1/ 禁用 0 8 | STATUS_NUMBER:[{ label: '启用', value: 1 }, { label: '禁用', value: 0 }], 9 | // 是 1/ 否 0 10 | WHETHER_NUMBER:[{ label: '是', value: 1 }, { label: '否', value: 0 }], 11 | // 是 true/ 否 false 12 | WHETHER_BOOL:[{ label: '是', value: true }, { label: '否', value: false }], 13 | } -------------------------------------------------------------------------------- /frontend_vite/src/components/render/render.vue: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /frontend_vite/src/config/index.js: -------------------------------------------------------------------------------- 1 | import pkg from '../../package.json' 2 | //API DOMAIN 3 | const API_DOMAIN = process.env.NODE_ENV === 'development' ? "127.0.0.1:8000" : "django-vue3-lyadmin.lybbn.cn" 4 | //版本号 5 | const APP_VER = pkg.version 6 | //lyadmin系统配置 7 | export default { 8 | 9 | //APP版本 10 | APP_VER : APP_VER, 11 | 12 | //API DOMAIN 13 | API_DOMAIN : API_DOMAIN, 14 | 15 | //接口地址 16 | API_URL : process.env.NODE_ENV === 'development' ? "http://"+ API_DOMAIN +"/api/" : "https://"+ API_DOMAIN +"/api/", 17 | 18 | //标题 19 | APP_TITLE : "django-vue-lyadmin后台管理系统", 20 | 21 | //是否开启多标签 22 | ISMULTITABS: true, 23 | 24 | //语言 简体中文 zh-cn、 英文 en(此功能只是示例) 25 | LANG: 'zh-cn', 26 | 27 | // elementplus 组件大小: small、default、large 28 | ELEMENT_SIZE: 'default', 29 | 30 | // elementplus 组件 zIndex 31 | ELEMENT_ZINDEX: 3000, 32 | 33 | // elementplus button组件 autoInsertSpace 是否自动在两个中文字符之间插入空格 34 | ELEMENT_BUTTON: false, 35 | 36 | //左侧菜单默认宽度 默认 185 37 | MENU_WIDTH: 200, 38 | 39 | // 左侧菜单和顶部导航颜色 默认 #3C444D 40 | MENU_HEADER_COLOR:'#3C444D', 41 | 42 | //主题颜色 默认 #409EFF 43 | COLOR: '#409EFF', 44 | 45 | //默认主题 'dark' 暗黑、'light' 正常 46 | THEME: 'light', 47 | 48 | //登录信息数据存储方式 localStorage、sessionStorage 49 | STORAGE_METHOD: 'localStorage', 50 | 51 | //请求超时 52 | TIMEOUT: 10000, 53 | 54 | } -------------------------------------------------------------------------------- /frontend_vite/src/locales/index.js: -------------------------------------------------------------------------------- 1 | import { createI18n } from 'vue-i18n' 2 | import el_zh_cn from 'element-plus/dist/locale/zh-cn.mjs' 3 | import el_en from 'element-plus/dist/locale/en.mjs' 4 | 5 | import zh_cn from './lang/zh-cn.js' 6 | import en from './lang/en.js' 7 | 8 | //得到默认使用的语言 9 | const getDefaultLang = () => { 10 | //用户指定了默认语言时,使用用户指定的 11 | if (localStorage.getItem('language') != null) { 12 | return localStorage.getItem('language'); 13 | } else { 14 | //用户未指定时,根据游览器选择: 15 | if (navigator.language == 'zh-CN') { 16 | return 'zh-cn'; 17 | } else if (navigator.language == 'en') { 18 | return 'en'; 19 | } else { 20 | return 'zh-cn'; 21 | } 22 | } 23 | } 24 | 25 | const messages = { 26 | 'zh-cn': { 27 | el: el_zh_cn, 28 | ...zh_cn 29 | }, 30 | 'en': { 31 | el: el_en, 32 | ...en 33 | } 34 | } 35 | 36 | const i18n = createI18n({ 37 | legacy:false, 38 | locale: getDefaultLang(), 39 | fallbackLocale: 'zh-cn',// 设置备用语言 40 | globalInjection: true, 41 | messages, 42 | }) 43 | 44 | export default i18n; -------------------------------------------------------------------------------- /frontend_vite/src/locales/lang/en.js: -------------------------------------------------------------------------------- 1 | export default { 2 | login: { 3 | loginInTitle: 'User Login', 4 | loginAccount: 'Please input Account', 5 | loginPWD: 'Please input Password', 6 | code: 'Captcha', 7 | rememberMe: 'Remember me', 8 | AccountError: 'Please input a Right Account', 9 | PWError: 'Please input a password', 10 | codeError: 'Please input a Captcha', 11 | login: 'Login', 12 | } 13 | } -------------------------------------------------------------------------------- /frontend_vite/src/locales/lang/zh-cn.js: -------------------------------------------------------------------------------- 1 | export default { 2 | login: { 3 | loginInTitle: '用户登录', 4 | loginAccount: '请输入账号', 5 | loginPWD: '请输入密码', 6 | code: '验证码', 7 | rememberMe: '记住密码', 8 | AccountError: '请输入用户名', 9 | PWError: '请输入密码', 10 | codeError: '请输入验证码', 11 | login: '登录', 12 | 13 | } 14 | } -------------------------------------------------------------------------------- /frontend_vite/src/mixins/mixins.js: -------------------------------------------------------------------------------- 1 | import {getTableHeight} from "@/utils/util"; 2 | export const lyMixins = { 3 | 4 | data() { 5 | return { 6 | tableHeight:500, 7 | } 8 | }, 9 | methods:{ 10 | // 计算搜索栏的高度 11 | listenResize() { 12 | this.$nextTick(() => { 13 | this.getTheTableHeight() 14 | }) 15 | }, 16 | getTheTableHeight(){ 17 | let orderstaticHeight = 0 18 | if(this.$refs.orderStatic && this.$refs.orderStatic !==undefined){ 19 | orderstaticHeight = this.$refs.orderStatic.offsetHeight 20 | } 21 | orderstaticHeight = this.isFull?orderstaticHeight - 110:orderstaticHeight 22 | this.tableHeight = getTableHeight(this.$refs.tableSelect.offsetHeight+orderstaticHeight) 23 | } 24 | }, 25 | mounted() { 26 | // 监听页面宽度变化搜索框的高度 27 | window.addEventListener('resize', this.listenResize); 28 | this.$nextTick(() => { 29 | this.getTheTableHeight() 30 | }) 31 | }, 32 | unmounted() { 33 | // 页面销毁,去掉监听事件 34 | window.removeEventListener("resize", this.listenResize); 35 | }, 36 | } -------------------------------------------------------------------------------- /frontend_vite/src/store/index.js: -------------------------------------------------------------------------------- 1 | import { createPinia } from 'pinia' 2 | 3 | const store = createPinia() 4 | 5 | export default store 6 | 7 | -------------------------------------------------------------------------------- /frontend_vite/src/store/keepAlive.js: -------------------------------------------------------------------------------- 1 | import { defineStore } from 'pinia' 2 | 3 | export const useKeepAliveStore = defineStore('keepAlive', { 4 | state:() => { 5 | return { 6 | keepAliveRoute:['server'],//希望缓存的页面name,如['server'] 7 | } 8 | }, 9 | getters:{ 10 | 11 | }, 12 | actions: { 13 | }, 14 | }) -------------------------------------------------------------------------------- /frontend_vite/src/utils/color.js: -------------------------------------------------------------------------------- 1 | export default { 2 | //hex颜色转rgb颜色 3 | HexToRgb(str) { 4 | str = str.replace("#", "") 5 | var hxs = str.match(/../g) 6 | for (var i = 0; i < 3; i++) hxs[i] = parseInt(hxs[i], 16) 7 | return hxs 8 | }, 9 | //rgb颜色转hex颜色 10 | RgbToHex(a, b, c) { 11 | var hexs = [a.toString(16), b.toString(16), c.toString(16)] 12 | for (var i = 0; i < 3; i++) { 13 | if (hexs[i].length == 1) hexs[i] = "0" + hexs[i] 14 | } 15 | return "#" + hexs.join(""); 16 | }, 17 | //加深 18 | darken(color, level) { 19 | var rgbc = this.HexToRgb(color) 20 | for (var i = 0; i < 3; i++) rgbc[i] = Math.floor(rgbc[i] * (1 - level)) 21 | return this.RgbToHex(rgbc[0], rgbc[1], rgbc[2]) 22 | }, 23 | //变淡 24 | lighten(color, level) { 25 | var rgbc = this.HexToRgb(color) 26 | for (var i = 0; i < 3; i++) rgbc[i] = Math.floor((255 - rgbc[i]) * level + rgbc[i]) 27 | return this.RgbToHex(rgbc[0], rgbc[1], rgbc[2]) 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /frontend_vite/src/views/lyterminal.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 29 | -------------------------------------------------------------------------------- /frontend_vite/src/views/monitorManage/crontab/components/language/index.js: -------------------------------------------------------------------------------- 1 | import en from './en' 2 | import cn from './cn' 3 | import pt from './pt_br' 4 | 5 | export default { 6 | en, 7 | cn, 8 | pt 9 | } --------------------------------------------------------------------------------