├── .github └── workflows │ ├── generatemo.yml │ ├── release.yml │ └── updatepot.yml ├── .gitignore ├── ISSUE_TEMPLATE.md ├── LICENSE ├── README.md ├── ajax ├── clearGrid.php ├── createalert.php ├── dragGrid.php ├── dropdownMonth.php ├── dropdownStatus.php ├── dropdownType.php ├── dropdownUpdateDisplaydata.php ├── editGrid.php ├── fuzzysearch.php ├── index.php ├── lateralmenu.php ├── launchURL.php ├── loadWidgets.php ├── loadscripts.php ├── map.php ├── refreshWidget.php ├── saveGrid.php ├── showalert.php ├── state_load.php ├── state_save.php └── updateTranslationFields.php ├── front ├── alert.form.php ├── config.form.php ├── config.php ├── configtranslation.form.php ├── customswidget.form.php ├── customswidget.php ├── groupprofile.form.php ├── htmleditor.form.php ├── index.php ├── menu.php ├── preference.form.php ├── preferenceuserblacklist.form.php ├── profileauthorizedwidget.form.php ├── stockwidget.form.php └── stockwidget.php ├── hook.php ├── inc ├── autoload.php ├── barchart.class.php ├── chart.class.php ├── color.class.php ├── config.class.php ├── configtranslation.class.php ├── customswidget.class.php ├── dashboard.class.php ├── datatable.class.php ├── funnelchart.class.php ├── groupprofile.class.php ├── hbarchart.class.php ├── helper.class.php ├── html.class.php ├── htmleditor.class.php ├── index.php ├── itilalert.class.php ├── linechart.class.php ├── menu.class.php ├── module.class.php ├── piechart.class.php ├── preference.class.php ├── preferenceuserblacklist.class.php ├── profile.class.php ├── profileauthorizedwidget.class.php ├── radarchart.class.php ├── servicecatalog.class.php ├── stockticket.class.php ├── stockticketindicator.class.php ├── stockwidget.class.php ├── userwidget.class.php ├── vbarchart.class.php ├── widget.class.php └── widgetlist.class.php ├── index.php ├── install ├── index.php ├── sql │ ├── empty-1.0.0.sql │ ├── empty-1.6.0.sql │ ├── empty-1.6.2.sql │ ├── empty-1.6.4.sql │ ├── empty-1.7.2.sql │ ├── empty-1.7.5.sql │ ├── empty-2.0.0.sql │ ├── empty-2.1.2.sql │ ├── update-1.0.1.sql │ ├── update-1.0.2.sql │ ├── update-1.0.5.sql │ ├── update-1.2.1.sql │ ├── update-1.3.3.sql │ ├── update-1.5.0.sql │ ├── update-1.5.1.sql │ ├── update-1.6.2.sql │ ├── update-1.6.3.sql │ ├── update-1.7.0.sql │ ├── update-1.7.2.sql │ ├── update-1.7.5.sql │ ├── update-1.7.7.sql │ ├── update-1.7.8.sql │ ├── update-1.7.9.sql │ ├── update-1.8.2.sql │ ├── update-2.0.0.sql │ ├── update-2.0.5.sql │ ├── update-2.0.9.sql │ └── update-2.1.2.sql └── update_133_150.php ├── locales ├── cs_CZ.mo ├── cs_CZ.po ├── de_DE.mo ├── de_DE.po ├── en_GB.mo ├── en_GB.po ├── en_US.mo ├── en_US.po ├── es_EC.mo ├── es_EC.po ├── es_ES.mo ├── es_ES.po ├── fi_FI.mo ├── fi_FI.po ├── fr_CA.mo ├── fr_CA.po ├── fr_FR.mo ├── fr_FR.po ├── glpi.pot ├── he_IL.mo ├── he_IL.po ├── id_ID.mo ├── id_ID.po ├── it_IT.mo ├── it_IT.po ├── lv_LV.mo ├── lv_LV.po ├── pt_BR.mo ├── pt_BR.po ├── pt_PT.mo ├── pt_PT.po ├── ru_RU.mo ├── ru_RU.po ├── sv_SE.mo ├── sv_SE.po ├── zh_CN.mo ├── zh_CN.po ├── zh_TW.mo └── zh_TW.po ├── mydashboard.png ├── mydashboard.xml ├── public ├── css │ ├── bootstrap4.css │ ├── hideinfo.css │ ├── info.css │ ├── jquery.newsTicker.css │ ├── mydashboard.css.php │ ├── mydashboard.scss │ ├── style_bootstrap_main.css │ ├── style_bootstrap_new.css │ └── style_bootstrap_ticket.css ├── lib │ ├── circles │ │ └── circles.min.js │ ├── countUp-jquery.js │ ├── countUp.min.js │ ├── datatables │ │ ├── Buttons-2.2.3 │ │ │ ├── css │ │ │ │ ├── buttons.bootstrap.css │ │ │ │ ├── buttons.bootstrap.min.css │ │ │ │ ├── buttons.bootstrap4.css │ │ │ │ ├── buttons.bootstrap4.min.css │ │ │ │ ├── buttons.bootstrap5.css │ │ │ │ ├── buttons.bootstrap5.min.css │ │ │ │ ├── buttons.bulma.css │ │ │ │ ├── buttons.bulma.min.css │ │ │ │ ├── buttons.dataTables.css │ │ │ │ ├── buttons.dataTables.min.css │ │ │ │ ├── buttons.foundation.css │ │ │ │ ├── buttons.foundation.min.css │ │ │ │ ├── buttons.jqueryui.css │ │ │ │ ├── buttons.jqueryui.min.css │ │ │ │ ├── buttons.semanticui.css │ │ │ │ ├── buttons.semanticui.min.css │ │ │ │ ├── common.scss │ │ │ │ └── mixins.scss │ │ │ └── js │ │ │ │ ├── buttons.bootstrap.js │ │ │ │ ├── buttons.bootstrap.min.js │ │ │ │ ├── buttons.bootstrap4.js │ │ │ │ ├── buttons.bootstrap4.min.js │ │ │ │ ├── buttons.bootstrap5.js │ │ │ │ ├── buttons.bootstrap5.min.js │ │ │ │ ├── buttons.bulma.js │ │ │ │ ├── buttons.bulma.min.js │ │ │ │ ├── buttons.colVis.js │ │ │ │ ├── buttons.colVis.min.js │ │ │ │ ├── buttons.dataTables.js │ │ │ │ ├── buttons.dataTables.min.js │ │ │ │ ├── buttons.foundation.js │ │ │ │ ├── buttons.foundation.min.js │ │ │ │ ├── buttons.html5.js │ │ │ │ ├── buttons.html5.min.js │ │ │ │ ├── buttons.jqueryui.js │ │ │ │ ├── buttons.jqueryui.min.js │ │ │ │ ├── buttons.print.js │ │ │ │ ├── buttons.print.min.js │ │ │ │ ├── buttons.semanticui.js │ │ │ │ ├── buttons.semanticui.min.js │ │ │ │ ├── dataTables.buttons.js │ │ │ │ └── dataTables.buttons.min.js │ │ ├── ColReorder-1.5.6 │ │ │ ├── css │ │ │ │ ├── colReorder.bootstrap.css │ │ │ │ ├── colReorder.bootstrap.min.css │ │ │ │ ├── colReorder.bootstrap4.css │ │ │ │ ├── colReorder.bootstrap4.min.css │ │ │ │ ├── colReorder.bootstrap5.css │ │ │ │ ├── colReorder.bootstrap5.min.css │ │ │ │ ├── colReorder.bulma.css │ │ │ │ ├── colReorder.bulma.min.css │ │ │ │ ├── colReorder.dataTables.css │ │ │ │ ├── colReorder.dataTables.min.css │ │ │ │ ├── colReorder.foundation.css │ │ │ │ ├── colReorder.foundation.min.css │ │ │ │ ├── colReorder.jqueryui.css │ │ │ │ ├── colReorder.jqueryui.min.css │ │ │ │ ├── colReorder.semanticui.css │ │ │ │ └── colReorder.semanticui.min.css │ │ │ └── js │ │ │ │ ├── colReorder.bootstrap.js │ │ │ │ ├── colReorder.bootstrap.min.js │ │ │ │ ├── colReorder.bootstrap4.js │ │ │ │ ├── colReorder.bootstrap4.min.js │ │ │ │ ├── colReorder.bootstrap5.js │ │ │ │ ├── colReorder.bootstrap5.min.js │ │ │ │ ├── colReorder.bulma.js │ │ │ │ ├── colReorder.bulma.min.js │ │ │ │ ├── colReorder.dataTables.js │ │ │ │ ├── colReorder.dataTables.min.js │ │ │ │ ├── colReorder.foundation.js │ │ │ │ ├── colReorder.foundation.min.js │ │ │ │ ├── colReorder.jqueryui.js │ │ │ │ ├── colReorder.jqueryui.min.js │ │ │ │ ├── colReorder.semanticui.js │ │ │ │ ├── colReorder.semanticui.min.js │ │ │ │ ├── dataTables.colReorder.js │ │ │ │ └── dataTables.colReorder.min.js │ │ ├── DataTables-1.12.1 │ │ │ ├── css │ │ │ │ ├── dataTables.bootstrap.css │ │ │ │ ├── dataTables.bootstrap.min.css │ │ │ │ ├── dataTables.bootstrap4.css │ │ │ │ ├── dataTables.bootstrap4.min.css │ │ │ │ ├── dataTables.bootstrap5.css │ │ │ │ ├── dataTables.bootstrap5.min.css │ │ │ │ ├── dataTables.bulma.css │ │ │ │ ├── dataTables.bulma.min.css │ │ │ │ ├── dataTables.dataTables.css │ │ │ │ ├── dataTables.dataTables.min.css │ │ │ │ ├── dataTables.foundation.css │ │ │ │ ├── dataTables.foundation.min.css │ │ │ │ ├── dataTables.jqueryui.css │ │ │ │ ├── dataTables.jqueryui.min.css │ │ │ │ ├── dataTables.semanticui.css │ │ │ │ ├── dataTables.semanticui.min.css │ │ │ │ ├── jquery.dataTables.css │ │ │ │ └── jquery.dataTables.min.css │ │ │ ├── images │ │ │ │ ├── sort_asc.png │ │ │ │ ├── sort_asc_disabled.png │ │ │ │ ├── sort_both.png │ │ │ │ ├── sort_desc.png │ │ │ │ └── sort_desc_disabled.png │ │ │ └── js │ │ │ │ ├── dataTables.bootstrap.js │ │ │ │ ├── dataTables.bootstrap.min.js │ │ │ │ ├── dataTables.bootstrap4.js │ │ │ │ ├── dataTables.bootstrap4.min.js │ │ │ │ ├── dataTables.bootstrap5.js │ │ │ │ ├── dataTables.bootstrap5.min.js │ │ │ │ ├── dataTables.bulma.js │ │ │ │ ├── dataTables.bulma.min.js │ │ │ │ ├── dataTables.dataTables.js │ │ │ │ ├── dataTables.dataTables.min.js │ │ │ │ ├── dataTables.foundation.js │ │ │ │ ├── dataTables.foundation.min.js │ │ │ │ ├── dataTables.jqueryui.js │ │ │ │ ├── dataTables.jqueryui.min.js │ │ │ │ ├── dataTables.semanticui.js │ │ │ │ ├── dataTables.semanticui.min.js │ │ │ │ ├── jquery.dataTables.js │ │ │ │ └── jquery.dataTables.min.js │ │ ├── JSZip-2.5.0 │ │ │ ├── jszip.js │ │ │ └── jszip.min.js │ │ ├── Responsive-2.3.0 │ │ │ ├── css │ │ │ │ ├── responsive.bootstrap.css │ │ │ │ ├── responsive.bootstrap.min.css │ │ │ │ ├── responsive.bootstrap4.css │ │ │ │ ├── responsive.bootstrap4.min.css │ │ │ │ ├── responsive.bootstrap5.css │ │ │ │ ├── responsive.bootstrap5.min.css │ │ │ │ ├── responsive.bulma.css │ │ │ │ ├── responsive.bulma.min.css │ │ │ │ ├── responsive.dataTables.css │ │ │ │ ├── responsive.dataTables.min.css │ │ │ │ ├── responsive.foundation.css │ │ │ │ ├── responsive.foundation.min.css │ │ │ │ ├── responsive.jqueryui.css │ │ │ │ ├── responsive.jqueryui.min.css │ │ │ │ ├── responsive.semanticui.css │ │ │ │ └── responsive.semanticui.min.css │ │ │ └── js │ │ │ │ ├── dataTables.responsive.js │ │ │ │ ├── dataTables.responsive.min.js │ │ │ │ ├── responsive.bootstrap.js │ │ │ │ ├── responsive.bootstrap.min.js │ │ │ │ ├── responsive.bootstrap4.js │ │ │ │ ├── responsive.bootstrap4.min.js │ │ │ │ ├── responsive.bootstrap5.js │ │ │ │ ├── responsive.bootstrap5.min.js │ │ │ │ ├── responsive.bulma.js │ │ │ │ ├── responsive.bulma.min.js │ │ │ │ ├── responsive.dataTables.js │ │ │ │ ├── responsive.dataTables.min.js │ │ │ │ ├── responsive.foundation.js │ │ │ │ ├── responsive.foundation.min.js │ │ │ │ ├── responsive.jqueryui.js │ │ │ │ ├── responsive.jqueryui.min.js │ │ │ │ ├── responsive.semanticui.js │ │ │ │ └── responsive.semanticui.min.js │ │ ├── Select-1.4.0 │ │ │ ├── css │ │ │ │ ├── select.bootstrap.css │ │ │ │ ├── select.bootstrap.min.css │ │ │ │ ├── select.bootstrap4.css │ │ │ │ ├── select.bootstrap4.min.css │ │ │ │ ├── select.bootstrap5.css │ │ │ │ ├── select.bootstrap5.min.css │ │ │ │ ├── select.bulma.css │ │ │ │ ├── select.bulma.min.css │ │ │ │ ├── select.dataTables.css │ │ │ │ ├── select.dataTables.min.css │ │ │ │ ├── select.foundation.css │ │ │ │ ├── select.foundation.min.css │ │ │ │ ├── select.jqueryui.css │ │ │ │ ├── select.jqueryui.min.css │ │ │ │ ├── select.semanticui.css │ │ │ │ └── select.semanticui.min.css │ │ │ └── js │ │ │ │ ├── dataTables.select.js │ │ │ │ ├── dataTables.select.min.js │ │ │ │ ├── select.bootstrap.js │ │ │ │ ├── select.bootstrap.min.js │ │ │ │ ├── select.bootstrap4.js │ │ │ │ ├── select.bootstrap4.min.js │ │ │ │ ├── select.bootstrap5.js │ │ │ │ ├── select.bootstrap5.min.js │ │ │ │ ├── select.bulma.js │ │ │ │ ├── select.bulma.min.js │ │ │ │ ├── select.dataTables.js │ │ │ │ ├── select.dataTables.min.js │ │ │ │ ├── select.foundation.js │ │ │ │ ├── select.foundation.min.js │ │ │ │ ├── select.jqueryui.js │ │ │ │ ├── select.jqueryui.min.js │ │ │ │ ├── select.semanticui.js │ │ │ │ └── select.semanticui.min.js │ │ ├── datatables.css │ │ ├── datatables.js │ │ ├── datatables.min.css │ │ ├── datatables.min.js │ │ └── pdfmake-0.1.36 │ │ │ ├── pdfmake.js │ │ │ ├── pdfmake.min.js │ │ │ └── vfs_fonts.js │ ├── echarts │ │ ├── echarts.js │ │ └── theme │ │ │ ├── azul.js │ │ │ ├── bee-inspired.js │ │ │ ├── blue.js │ │ │ ├── caravan.js │ │ │ ├── carp.js │ │ │ ├── cool.js │ │ │ ├── dark-blue.js │ │ │ ├── dark-bold.js │ │ │ ├── dark-digerati.js │ │ │ ├── dark-fresh-cut.js │ │ │ ├── dark-mushroom.js │ │ │ ├── dark.js │ │ │ ├── eduardo.js │ │ │ ├── forest.js │ │ │ ├── fresh-cut.js │ │ │ ├── fruit.js │ │ │ ├── gray.js │ │ │ ├── green.js │ │ │ ├── helianthus.js │ │ │ ├── infographic.js │ │ │ ├── inspired.js │ │ │ ├── jazz.js │ │ │ ├── london.js │ │ │ ├── macarons.js │ │ │ ├── macarons2.js │ │ │ ├── mint.js │ │ │ ├── red-velvet.js │ │ │ ├── red.js │ │ │ ├── roma.js │ │ │ ├── royal.js │ │ │ ├── sakura.js │ │ │ ├── shine.js │ │ │ ├── tech-blue.js │ │ │ ├── tool │ │ │ ├── option │ │ │ │ ├── area.js │ │ │ │ ├── bar.js │ │ │ │ ├── graph.js │ │ │ │ ├── map.js │ │ │ │ ├── pie.js │ │ │ │ └── scatter.js │ │ │ ├── thumb.html │ │ │ └── thumb.js │ │ │ └── vintage.js │ ├── fileSaver.min.js │ ├── fuze.js │ ├── fuzzysearch.js.php │ ├── gridstack │ │ ├── css │ │ │ └── gridstack-extra.css │ │ └── js │ │ │ └── gridstack-all.js │ ├── html2canvas.min.js │ ├── jquery-advanced-news-ticker │ │ ├── jquery.newsTicker.js │ │ └── jquery.newsTicker.min.js │ ├── jquery-fullscreen-plugin │ │ ├── .gitignore │ │ ├── .travis.yml │ │ ├── LICENSE.txt │ │ ├── README.md │ │ ├── build.xml │ │ ├── demo │ │ │ ├── iframe.html │ │ │ └── index.html │ │ ├── externs │ │ │ ├── jquery.fullscreen.js │ │ │ └── jquery.js │ │ ├── fullscreen.jquery.json │ │ ├── jquery.fullscreen-min.js │ │ ├── jquery.fullscreen.js │ │ └── lib │ │ │ └── compiler.jar │ ├── jquery-ui │ │ ├── images │ │ │ ├── ui-icons_444444_256x240.png │ │ │ ├── ui-icons_555555_256x240.png │ │ │ ├── ui-icons_777620_256x240.png │ │ │ ├── ui-icons_777777_256x240.png │ │ │ ├── ui-icons_cc0000_256x240.png │ │ │ └── ui-icons_ffffff_256x240.png │ │ ├── jquery-ui.css │ │ ├── jquery-ui.js │ │ ├── jquery-ui.min.css │ │ └── jquery-ui.min.js │ └── jspdf.umd.js ├── pics │ ├── bg_divider.png │ ├── spinner.gif │ └── spotlight-poi-dotless2_hdpi.png └── scripts │ ├── clean_stock_tickets.php │ ├── insert_stock_ticketindicators.php │ ├── insert_stock_tickets.php │ ├── mydashboard.js │ ├── mydashboard_load_scripts.js.php │ ├── replace_central.js.php │ ├── run.bat │ └── run.php ├── reports ├── alert.class.php ├── change.class.php ├── contract.class.php ├── event.class.php ├── index.php ├── knowbaseitem.class.php ├── planning.class.php ├── problem.class.php ├── project.class.php ├── projecttask.class.php ├── reminder.class.php ├── reports_bar.class.php ├── reports_custom.class.php ├── reports_funnel.class.php ├── reports_line.class.php ├── reports_map.class.php ├── reports_pie.class.php ├── reports_table.class.php ├── rssfeed.class.php └── ticket.class.php ├── screenshots └── mydashboard.png ├── setup.php └── tools ├── extract_template.sh ├── update_mo.pl └── update_po.pl /.github/workflows/generatemo.yml: -------------------------------------------------------------------------------- 1 | name: Generate MO 2 | on: 3 | push: 4 | branches: [ master ] 5 | paths: 6 | - '**.po' 7 | env: 8 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 9 | jobs: 10 | run: 11 | 12 | name: Generate mo 13 | runs-on: ubuntu-latest 14 | steps: 15 | - name: Checkout repo 16 | uses: actions/checkout@v4 17 | 18 | - name: Setup Perl environment 19 | # You may pin to the exact commit or the version. 20 | # uses: shogo82148/actions-setup-perl@8d2e3d59a9516b785ed32169d48a4888eaa9b514 21 | uses: shogo82148/actions-setup-perl@v1.20.1 22 | - name: msgfmt 23 | # You may pin to the exact commit or the version. 24 | # uses: whtsky/msgfmt-action@6b2181f051b002182d01a1e1f1aff216230c5a4d 25 | uses: whtsky/msgfmt-action@20190305 26 | - name: Generate mo 27 | run: perl tools/update_mo.pl; 28 | 29 | - name: Commit changes 30 | uses: EndBug/add-and-commit@v9 31 | with: 32 | 33 | message: "Generate mo" 34 | - name: Push changes 35 | 36 | uses: actions-go/push@master 37 | 38 | -------------------------------------------------------------------------------- /.github/workflows/updatepot.yml: -------------------------------------------------------------------------------- 1 | name: Update POT 2 | on: 3 | push: 4 | branches: [ master ] 5 | paths-ignore: 6 | - 'locales/**' 7 | 8 | env: 9 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 10 | jobs: 11 | run: 12 | 13 | name: Update POT 14 | 15 | runs-on: ubuntu-latest 16 | steps: 17 | - name: Checkout repo 18 | uses: actions/checkout@v4 19 | 20 | - name: install xgettext 21 | 22 | run: sudo apt-get install gettext; 23 | - name: Update POT 24 | run: sh tools/extract_template.sh; 25 | 26 | 27 | - name: Commit changes 28 | uses: EndBug/add-and-commit@v9 29 | with: 30 | message: "Update POT" 31 | - name: Push changes 32 | 33 | uses: actions-go/push@master 34 | 35 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | -------------------------------------------------------------------------------- /ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | Dear GLPi user. 2 | 3 | For bug reports, you can open an issue here, provide us : 4 | - The version of the plugin. 5 | - The version of your GLPI. 6 | - The steps to reproduce your issue. 7 | 8 | Delete this text to submit your issue. 9 | 10 | The Plugin team. 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # mydashboard 2 | Plugin mydashboard for GLPI 3 | 4 | ![Plugin mydashboard](https://raw.githubusercontent.com/InfotelGLPI/mydashboard/master/screenshots/mydashboard.png "Plugin mydashboard") 5 | 6 | Ce plugin est sur Transifex - Aidez-nous à le traduire : https://www.transifex.com/infotelGLPI/GLPI_mydashboard/ 7 | 8 | This plugin is on Transifex - Help us to translate : https://www.transifex.com/infotelGLPI/GLPI_mydashboard/ 9 | 10 | WIKI : https://github.com/InfotelGLPI/mydashboard/wiki 11 | 12 | Vous pouvez proposer de nouveaux widgets : 13 | http://blogglpi.infotel.com/liste-des-widgets-proposes/ 14 | 15 | L'article du blog Infotel : 16 | http://blogglpi.infotel.com/une-nouvelle-version-du-plugin-mydashboard-est-en-cours-de-finalisation/ 17 | http://blogglpi.infotel.com/une-creation-infotel-le-plugin-my-dashboard/ 18 | -------------------------------------------------------------------------------- /ajax/clearGrid.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | include("../../../inc/includes.php"); 28 | 29 | Session::checkLoginUser(); 30 | 31 | $dashboard = new PluginMydashboardDashboard(); 32 | 33 | $profile = (isset($_SESSION['glpiactiveprofile']['id'])) ? $_SESSION['glpiactiveprofile']['id'] : -1; 34 | 35 | $options = ["users_id" => Session::getLoginUserID(), "profiles_id" => $profile]; 36 | $id = PluginMydashboardDashboard::checkIfPreferenceExists($options); 37 | if ($id) { 38 | $input['id'] = $id; 39 | $dashboard->delete($input); 40 | $msg_clear = __('Grid cleared', 'mydashboard'); 41 | } 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /ajax/dragGrid.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | include("../../../inc/includes.php"); 28 | 29 | Session::checkLoginUser(); 30 | 31 | if (isset($_POST['drag_mode'])) { 32 | $pref = new PluginMydashboardPreference(); 33 | $input['drag_mode'] = $_POST['drag_mode']; 34 | $input['id'] = Session::getLoginUserID(); 35 | $pref->update($input); 36 | } 37 | -------------------------------------------------------------------------------- /ajax/dropdownMonth.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | if (strpos($_SERVER['PHP_SELF'], "dropdownMonth.php")) { 28 | include("../../../inc/includes.php"); 29 | header("Content-Type: text/html; charset=UTF-8"); 30 | Html::header_nocache(); 31 | } 32 | 33 | Session::checkCentralAccess(); 34 | 35 | // Make a select box 36 | if (isset($_POST["value"])) { 37 | if($_POST['value']== "MONTH"){ 38 | $form = ""; 39 | $form .= "

"; 40 | // $form .= ""; 41 | $form .= __('Month', 'mydashboard'); 42 | $form .= " "; 43 | $form .= PluginMydashboardHelper::monthDropdown("month_year", (isset($opt['month_year']) ? $opt['month_year'] : 0)); 44 | // $form .= ""; 45 | 46 | 47 | echo $form; 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /ajax/dropdownStatus.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | if (strpos($_SERVER['PHP_SELF'], "dropdownStatus.php")) { 28 | include("../../../inc/includes.php"); 29 | header("Content-Type: text/html; charset=UTF-8"); 30 | Html::header_nocache(); 31 | } 32 | 33 | Session::checkCentralAccess(); 34 | 35 | // Make a select box 36 | if (isset($_POST["itemtype"])) { 37 | $dbu = new DbUtils(); 38 | $state = new State(); 39 | $states = []; 40 | $field = 'is_visible_'.strtolower($_POST["itemtype"]); 41 | $condition = [$field => 1] 42 | + $dbu->getEntitiesRestrictCriteria('glpi_states', 'entities_id', $_SESSION['glpiactive_entity'], true); 43 | $allstates = $state->find($condition); 44 | foreach ($allstates as $k => $v) { 45 | $states[$v['id']] = $v['name']; 46 | } 47 | Dropdown::showFromArray('states', $states, ['multiple' => true]); 48 | } 49 | -------------------------------------------------------------------------------- /ajax/dropdownType.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | if (strpos($_SERVER['PHP_SELF'], "dropdownType.php")) { 28 | include ("../../../inc/includes.php"); 29 | header("Content-Type: text/html; charset=UTF-8"); 30 | Html::header_nocache(); 31 | } 32 | 33 | Session::checkCentralAccess(); 34 | 35 | // Make a select box 36 | if (isset($_POST["itemtype"])) { 37 | 38 | $itemtypeclass = $_POST["itemtype"]."Type"; 39 | if ($item = getItemForItemtype($itemtypeclass)) { 40 | $types = []; 41 | $alltypes = $item->find(); 42 | foreach ($alltypes as $k => $v) { 43 | $types[$v['id']] = $v['name']; 44 | } 45 | Dropdown::showFromArray('types', $types, ['multiple' => true]); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /ajax/editGrid.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | include("../../../inc/includes.php"); 28 | 29 | Session::checkLoginUser(); 30 | 31 | if (isset($_POST['edit_mode'])) { 32 | $pref = new PluginMydashboardPreference(); 33 | $input['edit_mode'] = $_POST['edit_mode']; 34 | $input['id'] = Session::getLoginUserID(); 35 | $pref->update($input); 36 | } 37 | -------------------------------------------------------------------------------- /ajax/fuzzysearch.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | $AJAX_INCLUDE = 1; 28 | include ('../../../inc/includes.php'); 29 | header("Content-Type: text/html; charset=UTF-8"); 30 | Html::header_nocache(); 31 | 32 | Session::checkLoginUser(); 33 | 34 | echo PluginMydashboardWidgetlist::fuzzySearch($_REQUEST['action']); 35 | -------------------------------------------------------------------------------- /ajax/index.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | -------------------------------------------------------------------------------- /ajax/lateralmenu.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | include('../../../inc/includes.php'); 28 | //header('Content-Type: application/json; charset=UTF-8'); 29 | Html::header_nocache(); 30 | 31 | Session::checkLoginUser(); 32 | 33 | header("Content-Type: text/html; charset=UTF-8"); 34 | 35 | $menu = new PluginMydashboardMenu(); 36 | $rand = mt_rand(); 37 | 38 | $selected_profile = (isset($_SESSION['glpiactiveprofile']['id'])) ? $_SESSION['glpiactiveprofile']['id'] : -1; 39 | $predefined_grid = 0; 40 | 41 | if (isset($_SESSION['plugin_mydashboard_profiles_id'])) { 42 | $selected_profile = $_SESSION['plugin_mydashboard_profiles_id']; 43 | } 44 | if (isset($_SESSION['plugin_mydashboard_predefined_grid'])) { 45 | $predefined_grid = $_SESSION['plugin_mydashboard_predefined_grid']; 46 | } 47 | 48 | $edit = PluginMydashboardPreference::checkEditMode(Session::getLoginUserID()); 49 | 50 | $menu->displayEditMode($rand, $edit, $selected_profile, $predefined_grid); 51 | 52 | -------------------------------------------------------------------------------- /ajax/loadWidgets.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | include("../../../inc/includes.php"); 28 | 29 | Session::checkLoginUser(); 30 | ini_set("memory_limit", "-1"); 31 | if (!isset($_SESSION["glpi_plugin_mydashboard_allwidgets"]) 32 | || count($_SESSION["glpi_plugin_mydashboard_allwidgets"]) < 1) { 33 | $widgets = PluginMydashboardWidget::getWidgetList(true); 34 | foreach ($widgets as $k => $val) { 35 | $_SESSION["glpi_plugin_mydashboard_allwidgets"][$k] = PluginMydashboardWidget::getWidget($k, $widgets, []); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /ajax/refreshWidget.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | include("../../../inc/includes.php"); 28 | 29 | Session::checkLoginUser(); 30 | 31 | $widgets = PluginMydashboardWidget::getWidgetList(); 32 | 33 | if (isset($_POST['gsid']) && isset($_POST['id'])) { 34 | $gsid = $_POST['gsid']; 35 | $opt = []; 36 | if (isset($_POST['params']) && is_array($_POST['params'])) { 37 | $opt = $_POST['params']; 38 | } 39 | $widget = PluginMydashboardWidget::getWidget($gsid, $widgets, $opt); 40 | echo $widget; 41 | } else { 42 | $gsid = $_POST['gsid']; 43 | $data = []; 44 | if (isset($widgets[$gsid])) { 45 | $opt = []; 46 | $widget = PluginMydashboardWidget::getWidget($gsid, $widgets, $opt); 47 | $data = ["id" => $widgets[$gsid]["id"], "widget" => $widget]; 48 | } 49 | 50 | echo json_encode($data); 51 | } 52 | -------------------------------------------------------------------------------- /ajax/showalert.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | 28 | use Glpi\Exception\Http\NotFoundHttpException; 29 | 30 | include('../../../inc/includes.php'); 31 | 32 | header("Content-Type: text/html; charset=UTF-8"); 33 | Html::header_nocache(); 34 | 35 | Session::checkLoginUser(); 36 | 37 | if (!isset($_GET['id'])) { 38 | throw new NotFoundHttpException(); 39 | } 40 | 41 | PluginMydashboardAlert::displayTickerDescription($_GET['id']); 42 | 43 | 44 | -------------------------------------------------------------------------------- /ajax/updateTranslationFields.php: -------------------------------------------------------------------------------- 1 | . 25 | -------------------------------------------------------------------------- 26 | */ 27 | 28 | $AJAX_INCLUDE = 1; 29 | include("../../../inc/includes.php"); 30 | 31 | header("Content-Type: text/html; charset=UTF-8"); 32 | Html::header_nocache(); 33 | 34 | Session::checkRight("plugin_mydashboard_config", UPDATE); 35 | 36 | if (isset($_POST['itemtype']) && isset($_POST['language'])) { 37 | $item = new $_POST['itemtype']; 38 | $item->getFromDB($_POST['items_id']); 39 | if ($item->getType() == "PluginMydashboardConfig") { 40 | PluginMydashboardConfigTranslation::dropdownFields($item, $_POST['language']); 41 | } else { 42 | PluginMydashboardConfigTranslation::dropdownFields($item, $_POST['language']); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /front/alert.form.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | include('../../../inc/includes.php'); 28 | 29 | $alert = new PluginMydashboardAlert(); 30 | 31 | if (isset($_POST['update'])) { 32 | if (isset($_POST['id'])) { 33 | if ($_POST['id'] == -1) { 34 | unset($_POST['id']); 35 | $alert->add($_POST); 36 | } else { 37 | $alert->update($_POST); 38 | } 39 | } 40 | } else if (isset($_POST['delete'])) { 41 | if (isset($_POST['id'])) { 42 | $alert->delete($_POST, true); 43 | } 44 | } 45 | Html::back(); 46 | 47 | -------------------------------------------------------------------------------- /front/config.form.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | use Glpi\Exception\Http\AccessDeniedHttpException; 28 | 29 | include('../../../inc/includes.php'); 30 | 31 | Session::checkLoginUser(); 32 | 33 | Html::header(PluginMydashboardMenu::getTypeName(2), '', "tools", "pluginmydashboardmenu",'PluginMydashboardConfig'); 34 | 35 | if (!isset($_GET["id"])) { 36 | $_GET["id"] = "1"; 37 | } 38 | if (Plugin::isPluginActive("mydashboard")) { 39 | 40 | $config = new PluginMydashboardConfig(); 41 | 42 | if (isset($_POST["reconstructBacklog"])) { 43 | ini_set("max_execution_time", "0"); 44 | ini_set("memory_limit", "-1"); 45 | fillTableMydashboardStocktickets(); 46 | fillTableMydashboardStockticketsGroup(); 47 | Html::back(); 48 | 49 | } else if (isset($_POST["reconstructIndicators"])) { 50 | ini_set("max_execution_time", "0"); 51 | ini_set("memory_limit", "-1"); 52 | $record = new PluginMydashboardStockTicketIndicator(); 53 | $record->cronMydashboardInfotelUpdateStockTicketIndicator("all"); 54 | Html::back(); 55 | 56 | } else if (isset($_POST['update'])) { 57 | 58 | $config->update($_POST); 59 | } 60 | 61 | $config->display($_GET); 62 | 63 | } else { 64 | throw new AccessDeniedHttpException(); 65 | } 66 | 67 | Html::footer(); 68 | -------------------------------------------------------------------------------- /front/config.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | use Glpi\Exception\Http\AccessDeniedHttpException; 28 | 29 | include('../../../inc/includes.php'); 30 | 31 | global $CFG_GLPI; 32 | 33 | if (Plugin::isPluginActive("mydashboard")) { 34 | if (Session::haveRight("plugin_mydashboard_config", UPDATE)) { 35 | 36 | Html::redirect(PLUGIN_MYDASHBOARD_WEBDIR. "/front/config.form.php"); 37 | 38 | } else { 39 | throw new AccessDeniedHttpException(); 40 | } 41 | 42 | } else { 43 | Html::header(__('Setup'), '', "config", "plugin"); 44 | echo "
"; 45 | echo "" . __('Please activate the plugin', 'mydashboard') . "
"; 46 | Html::footer(); 47 | 48 | } 49 | -------------------------------------------------------------------------------- /front/configtranslation.form.php: -------------------------------------------------------------------------------- 1 | . 25 | -------------------------------------------------------------------------- 26 | */ 27 | 28 | include('../../../inc/includes.php'); 29 | 30 | $translation = new PluginMydashboardConfigTranslation(); 31 | if (isset($_POST['add'])) { 32 | $translation->add($_POST); 33 | } else if (isset($_POST['update'])) { 34 | $translation->update($_POST); 35 | } else if (isset($_POST['purge'])) { 36 | $translation->delete($_POST, 1); 37 | } 38 | Html::back(); 39 | -------------------------------------------------------------------------------- /front/customswidget.form.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | include ('../../../inc/includes.php'); 28 | 29 | $dropdown = new PluginMydashboardCustomswidget(); 30 | include (GLPI_ROOT . "/front/dropdown.common.form.php"); 31 | -------------------------------------------------------------------------------- /front/customswidget.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | include ('../../../inc/includes.php'); 28 | 29 | $dropdown = new PluginMydashboardCustomswidget(); 30 | include (GLPI_ROOT . "/front/dropdown.common.php"); 31 | -------------------------------------------------------------------------------- /front/htmleditor.form.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | include ('../../../inc/includes.php'); 28 | 29 | $customsWidget = new PluginMydashboardCustomswidget(); 30 | 31 | if(isset($_POST['update'])){ 32 | //decode html marks 33 | $_POST["content"] = html_entity_decode($_POST["content"]); 34 | $customsWidget->update($_POST); 35 | 36 | Html::back(); 37 | } 38 | -------------------------------------------------------------------------------- /front/index.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | -------------------------------------------------------------------------------- /front/preference.form.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | include('../../../inc/includes.php'); 28 | 29 | Session::checkLoginUser(); 30 | 31 | //Save user preferences 32 | if (isset ($_POST['update'])) { 33 | $pref = new PluginMydashboardPreference(); 34 | $pref->check(-1, UPDATE, $_POST); 35 | if(isset($_POST["prefered_group"])){ 36 | $_POST["prefered_group"] = json_encode($_POST["prefered_group"]); 37 | }else{ 38 | $_POST["prefered_group"] = "[]"; 39 | } 40 | 41 | if(isset($_POST["requester_prefered_group"])){ 42 | $_POST["requester_prefered_group"] = json_encode($_POST["requester_prefered_group"]); 43 | }else{ 44 | $_POST["requester_prefered_group"] = "[]"; 45 | } 46 | 47 | $pref->update($_POST); 48 | Html::back(); 49 | } 50 | -------------------------------------------------------------------------------- /front/preferenceuserblacklist.form.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | include('../../../inc/includes.php'); 28 | 29 | Session::checkLoginUser(); 30 | 31 | $pub = new PluginMydashboardPreferenceUserBlacklist(); 32 | 33 | $pub->save($_POST); 34 | 35 | Html::back(); 36 | -------------------------------------------------------------------------------- /front/profileauthorizedwidget.form.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | include('../../../inc/includes.php'); 28 | 29 | Session::checkLoginUser(); 30 | 31 | $paw = new PluginMydashboardProfileAuthorizedWidget(); 32 | 33 | $paw->save($_POST); 34 | 35 | Html::back(); 36 | -------------------------------------------------------------------------------- /front/stockwidget.form.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | use Glpi\Exception\Http\AccessDeniedHttpException; 28 | 29 | include('../../../inc/includes.php'); 30 | 31 | Session::checkLoginUser(); 32 | 33 | if (Plugin::isPluginActive("mydashboard")) { 34 | 35 | $config = new PluginMydashboardStockWidget(); 36 | 37 | if (isset($_POST["add"])) { 38 | 39 | $config->check(-1, CREATE, $_POST); 40 | $newID = $config->add($_POST); 41 | if ($_SESSION['glpibackcreated']) { 42 | Html::redirect($config->getFormURL() . "?id=" . $newID); 43 | } 44 | Html::back(); 45 | 46 | } else if (isset($_POST["purge"])) { 47 | 48 | $config->check($_POST['id'], PURGE); 49 | $config->delete($_POST, 1); 50 | $config->redirectToList(); 51 | 52 | } else if (isset($_POST["update"])) { 53 | 54 | $config->check($_POST['id'], UPDATE); 55 | $config->update($_POST); 56 | Html::back(); 57 | 58 | } else { 59 | 60 | $config->checkGlobal(READ); 61 | 62 | Html::header(PluginMydashboardMenu::getTypeName(2), '', "tools", "pluginmydashboardmenu",'pluginmydashboardstockwidget'); 63 | 64 | $config->display($_GET); 65 | 66 | Html::footer(); 67 | } 68 | } else { 69 | throw new AccessDeniedHttpException(); 70 | } 71 | 72 | Html::footer(); 73 | -------------------------------------------------------------------------------- /front/stockwidget.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | use Glpi\Exception\Http\AccessDeniedHttpException; 28 | 29 | include('../../../inc/includes.php'); 30 | 31 | Session::checkLoginUser(); 32 | 33 | Html::header(PluginMydashboardMenu::getTypeName(2), '', "tools", "pluginmydashboardmenu",'pluginmydashboardstockwidget'); 34 | 35 | if (Plugin::isPluginActive("mydashboard")) { 36 | 37 | $config = new PluginMydashboardStockWidget(); 38 | $config->checkGlobal(READ); 39 | 40 | if ($config->canView()) { 41 | 42 | Search::show("PluginMydashboardStockWidget"); 43 | 44 | } else { 45 | throw new AccessDeniedHttpException(); 46 | } 47 | } else { 48 | throw new AccessDeniedHttpException(); 49 | } 50 | 51 | Html::footer(); 52 | -------------------------------------------------------------------------------- /inc/color.class.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | /** 28 | * Class PluginMydashboardColor 29 | */ 30 | class PluginMydashboardColor { 31 | 32 | function getColors () { 33 | 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /inc/hbarchart.class.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | class PluginMydashboardHBarChart extends PluginMydashboardBarChart { 28 | 29 | /** 30 | * PluginMydashboardHBarChart constructor. 31 | */ 32 | function __construct() { 33 | parent::__construct(); 34 | $this->setOption('bars', ['show' => true, 'horizontal' => true]); 35 | $this->setOrientation("h"); 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /inc/html.class.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | /** 28 | * This widget class is meant to display some html in a widget 29 | */ 30 | class PluginMydashboardHtml extends PluginMydashboardModule 31 | { 32 | static $rightname = "plugin_mydashboard"; 33 | 34 | /** 35 | * PluginMydashboardHtml constructor. 36 | */ 37 | function __construct($titleVisibility = true) { 38 | $this->setWidgetType("html"); 39 | $this->toggleOnlyHTML(); 40 | 41 | $this->titleVisibility = $titleVisibility; 42 | } 43 | 44 | /** 45 | * @param int $nb 46 | * @return translated 47 | */ 48 | static function getTypeName($nb = 0) { 49 | 50 | return __('Dashboard', 'mydashboard'); 51 | } 52 | 53 | /** 54 | * @return string 55 | */ 56 | public function getJSonDatas() { 57 | return json_encode($this->getWidgetHtmlContent()); 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /inc/index.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | -------------------------------------------------------------------------------- /inc/linechart.class.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | /** 28 | * This widget class is meant to display data as a linechart 29 | */ 30 | class PluginMydashboardLineChart extends PluginMydashboardChart { 31 | 32 | 33 | } 34 | -------------------------------------------------------------------------------- /inc/radarchart.class.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | /** 28 | * This widget class is meant to display data in a radar (spiderweb) chart 29 | */ 30 | class PluginMydashboardRadarChart extends PluginMydashboardLineChart { 31 | 32 | } 33 | -------------------------------------------------------------------------------- /inc/vbarchart.class.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | /** 28 | * Every Vertical Bars charts classes must inherit of this class 29 | * It sets basical parameters to display an vertical bar chart with Flotr2 30 | */ 31 | class PluginMydashboardVBarChart extends PluginMydashboardBarChart 32 | { 33 | 34 | /** 35 | * PluginMydashboardVBarChart constructor. 36 | */ 37 | function __construct() { 38 | parent::__construct(); 39 | $this->setOption('bars', ['show' => true, 'horizontal' => false]); 40 | $this->setOrientation("v"); 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | -------------------------------------------------------------------------------- /install/index.php: -------------------------------------------------------------------------------- 1 | . 24 | -------------------------------------------------------------------------- 25 | */ 26 | 27 | -------------------------------------------------------------------------------- /install/sql/update-1.0.1.sql: -------------------------------------------------------------------------------- 1 | -- 2 | -- Structure de la table 'glpi_plugin_mydashboard_profileauthorizedwidget' 3 | -- gestion des droits pour le plugin 4 | -- 5 | DROP TABLE IF EXISTS `glpi_plugin_mydashboard_profileauthorizedwidgets`; 6 | CREATE TABLE `glpi_plugin_mydashboard_profileauthorizedwidgets` ( 7 | `id` int unsigned NOT NULL AUTO_INCREMENT, -- id du profil 8 | `profiles_id` int unsigned NOT NULL DEFAULT '0' 9 | COMMENT 'RELATION to glpi_profiles (id)', -- lien avec profiles de glpi 10 | `widgets_id` int unsigned NOT NULL DEFAULT '0' 11 | COMMENT 'RELATION to glpi_mydashboard_widgets (id)', 12 | PRIMARY KEY (`id`) 13 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC; 14 | -------------------------------------------------------------------------------- /install/sql/update-1.0.2.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS `glpi_plugin_mydashboard_alerts`; 2 | CREATE TABLE `glpi_plugin_mydashboard_alerts` ( 3 | `id` int unsigned NOT NULL AUTO_INCREMENT, 4 | `reminders_id` int unsigned NOT NULL, 5 | `impact` tinyint NOT NULL, 6 | PRIMARY KEY (`id`) 7 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC; 8 | -------------------------------------------------------------------------------- /install/sql/update-1.0.5.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS glpi_plugin_mydashboard_stocktickets; 2 | 3 | CREATE TABLE IF NOT EXISTS glpi_plugin_mydashboard_stocktickets ( 4 | id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, 5 | date DATE NOT NULL, 6 | nbstocktickets INT UNSIGNED NOT NULL, 7 | entities_id INT UNSIGNED NOT NULL 8 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC; 9 | -------------------------------------------------------------------------------- /install/sql/update-1.2.1.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `glpi_plugin_mydashboard_alerts` 2 | ADD `is_public` tinyint NOT NULL 3 | AFTER `impact`; 4 | -------------------------------------------------------------------------------- /install/sql/update-1.3.3.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `glpi_plugin_mydashboard_alerts` 2 | ADD `type` tinyint NOT NULL 3 | AFTER `impact`; 4 | -------------------------------------------------------------------------------- /install/sql/update-1.5.0.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE `glpi_plugin_mydashboard_dashboards` ( 2 | `id` int unsigned NOT NULL AUTO_INCREMENT, 3 | `users_id` int unsigned NOT NULL default '0', 4 | `grid` longtext COLLATE utf8mb4_unicode_ci DEFAULT NULL, 5 | `profiles_id` int unsigned NOT NULL DEFAULT '0', 6 | PRIMARY KEY (`id`) 7 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC; 8 | 9 | ALTER TABLE `glpi_plugin_mydashboard_preferences` 10 | ADD `prefered_group` int unsigned NOT NULL DEFAULT '0'; 11 | 12 | ALTER TABLE `glpi_plugin_mydashboard_preferences` 13 | ADD `prefered_entity` int unsigned NOT NULL DEFAULT '0'; 14 | 15 | ALTER TABLE `glpi_plugin_mydashboard_preferences` 16 | ADD `edit_mode` tinyint NOT NULL DEFAULT '0'; 17 | 18 | CREATE TABLE `glpi_plugin_mydashboard_problemalerts` ( 19 | `id` int unsigned NOT NULL AUTO_INCREMENT, 20 | `reminders_id` int unsigned NOT NULL default '0', 21 | `problems_id` int unsigned NOT NULL default '0', 22 | PRIMARY KEY (`id`) 23 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC; 24 | 25 | ALTER TABLE `glpi_plugin_mydashboard_userwidgets` ADD `profiles_id` int unsigned NOT NULL default '0' AFTER `users_id`; 26 | -------------------------------------------------------------------------------- /install/sql/update-1.5.1.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `glpi_plugin_mydashboard_configs` 2 | ADD `replace_central` int unsigned NOT NULL DEFAULT '0'; 3 | ALTER TABLE `glpi_plugin_mydashboard_configs` 4 | ADD `google_api_key` VARCHAR(255) DEFAULT NULL; 5 | ALTER TABLE `glpi_plugin_mydashboard_preferences` 6 | ADD `drag_mode` tinyint NOT NULL DEFAULT '0'; 7 | -------------------------------------------------------------------------------- /install/sql/update-1.6.2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `glpi_plugin_mydashboard_configs` ADD `impact_1` VARCHAR(200) DEFAULT '#228b22' NOT NULL; 2 | ALTER TABLE `glpi_plugin_mydashboard_configs` ADD `impact_2` VARCHAR(200) DEFAULT '#fff03a' NOT NULL; 3 | ALTER TABLE `glpi_plugin_mydashboard_configs` ADD `impact_3` VARCHAR(200) DEFAULT '#ffa500' NOT NULL; 4 | ALTER TABLE `glpi_plugin_mydashboard_configs` ADD `impact_4` VARCHAR(200) DEFAULT '#cd5c5c' NOT NULL; 5 | ALTER TABLE `glpi_plugin_mydashboard_configs` ADD `impact_5` VARCHAR(200) DEFAULT '#8b0000' NOT NULL; -------------------------------------------------------------------------------- /install/sql/update-1.6.3.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `glpi_plugin_mydashboard_dashboards` ADD `grid_statesave` LONGTEXT NULL DEFAULT NULL; 2 | ALTER TABLE `glpi_plugin_mydashboard_configs` ADD `levelCat` int unsigned NOT NULL DEFAULT '2'; 3 | 4 | CREATE TABLE `glpi_plugin_mydashboard_groupprofiles` ( 5 | `id` int unsigned NOT NULL AUTO_INCREMENT, 6 | `groups_id` int unsigned NOT NULL default '0', 7 | `profiles_id` int unsigned NOT NULL DEFAULT '0', 8 | PRIMARY KEY (`id`) 9 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC; 10 | -------------------------------------------------------------------------------- /install/sql/update-1.7.0.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE `glpi_plugin_mydashboard_stockwidgets` ( 2 | `id` int unsigned NOT NULL AUTO_INCREMENT, 3 | `entities_id` int unsigned NOT NULL DEFAULT '0', 4 | `is_recursive` tinyint NOT NULL DEFAULT '0', 5 | `name` VARCHAR(255) NOT NULL, 6 | `states` longtext COLLATE utf8mb4_unicode_ci DEFAULT NULL, 7 | `itemtype` VARCHAR(100) COLLATE utf8mb4_unicode_ci NOT NULL 8 | COMMENT 'see .class.php file', 9 | `icon` VARCHAR(255) NOT NULL, 10 | `types` longtext COLLATE utf8mb4_unicode_ci DEFAULT NULL, 11 | `alarm_threshold` int unsigned NOT NULL DEFAULT '5', 12 | PRIMARY KEY (`id`), 13 | KEY `name` (`name`), 14 | KEY `entities_id` (`entities_id`) 15 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC; 16 | -------------------------------------------------------------------------------- /install/sql/update-1.7.2.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE `glpi_plugin_mydashboard_customswidgets` ( 2 | `id` int unsigned NOT NULL AUTO_INCREMENT, 3 | `name` varchar(255) NOT NULL, 4 | `comment` text COLLATE utf8mb4_unicode_ci default NULL, 5 | `content` text NOT NULL, 6 | PRIMARY KEY (`id`) 7 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC; 8 | -------------------------------------------------------------------------------- /install/sql/update-1.7.5.sql: -------------------------------------------------------------------------------- 1 | -- DROP TABLE IF EXISTS glpi_plugin_mydashboard_stocktickets_group; 2 | -- 3 | -- CREATE TABLE IF NOT EXISTS glpi_plugin_mydashboard_stocktickets_group ( 4 | -- id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, 5 | -- groups_id INT, 6 | -- date DATE NOT NULL, 7 | -- nbstocktickets INT UNSIGNED NOT NULL, 8 | -- entities_id INT UNSIGNED NOT NULL 9 | -- ) 10 | -- ENGINE = InnoDB 11 | -- DEFAULT CHARSET = latin1; 12 | ALTER TABLE `glpi_plugin_mydashboard_preferences` CHANGE `prefered_group` `prefered_group` VARCHAR(255) NOT NULL DEFAULT '[]'; 13 | ALTER TABLE `glpi_plugin_mydashboard_preferences` ADD `requester_prefered_group` VARCHAR(255) NOT NULL DEFAULT '[]'; 14 | ALTER TABLE `glpi_plugin_mydashboard_groupprofiles` CHANGE `groups_id` `groups_id` VARCHAR(255) NOT NULL DEFAULT '[]'; 15 | ALTER TABLE `glpi_plugin_mydashboard_stocktickets` ADD `groups_id` int unsigned NOT NULL DEFAULT '0' AFTER `entities_id`; 16 | -------------------------------------------------------------------------------- /install/sql/update-1.7.7.sql: -------------------------------------------------------------------------------- 1 | RENAME TABLE `glpi_plugin_mydashboard_problemalerts` TO `glpi_plugin_mydashboard_itilalerts`; 2 | ALTER TABLE `glpi_plugin_mydashboard_itilalerts` ADD `itemtype` VARCHAR(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'see .class.php file'; 3 | ALTER TABLE `glpi_plugin_mydashboard_itilalerts` CHANGE `problems_id` `items_id` int unsigned NOT NULL default '0'; 4 | UPDATE `glpi_plugin_mydashboard_itilalerts` SET `itemtype` = 'Problem'; 5 | -------------------------------------------------------------------------------- /install/sql/update-1.7.8.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `glpi_plugin_mydashboard_configs` ADD `title_alerts_widget` VARCHAR(255) COLLATE utf8mb4_unicode_ci; 2 | ALTER TABLE `glpi_plugin_mydashboard_configs` ADD `title_maintenances_widget` VARCHAR(255) COLLATE utf8mb4_unicode_ci; 3 | ALTER TABLE `glpi_plugin_mydashboard_configs` ADD `title_informations_widget` VARCHAR(255) COLLATE utf8mb4_unicode_ci; 4 | ALTER TABLE `glpi_plugin_mydashboard_preferences` ADD `color_palette` int unsigned NOT NULL DEFAULT '1'; 5 | ALTER TABLE `glpi_plugin_mydashboard_alerts` ADD `itilcategories_id` int unsigned NOT NULL DEFAULT '0'; 6 | 7 | CREATE TABLE `glpi_plugin_mydashboard_configtranslations` 8 | ( 9 | `id` int unsigned NOT NULL AUTO_INCREMENT, 10 | `items_id` int unsigned NOT NULL DEFAULT '0', 11 | `itemtype` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL, 12 | `language` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT NULL, 13 | `field` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL, 14 | `value` text COLLATE utf8mb4_unicode_ci DEFAULT NULL, 15 | PRIMARY KEY (`id`) 16 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC; 17 | -------------------------------------------------------------------------------- /install/sql/update-1.7.9.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS glpi_plugin_mydashboard_stockticketindicators; 2 | 3 | CREATE TABLE IF NOT EXISTS glpi_plugin_mydashboard_stockticketindicators ( 4 | id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, 5 | year INT UNSIGNED NOT NULL, 6 | week INT UNSIGNED NOT NULL, 7 | nbTickets INT UNSIGNED NOT NULL, 8 | indicator_id INT UNSIGNED NOT NULL, 9 | groups_id INT UNSIGNED NOT NULL, 10 | entities_id INT UNSIGNED NOT NULL 11 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC; 12 | -------------------------------------------------------------------------------- /install/sql/update-1.8.2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `glpi_plugin_mydashboard_preferences` 2 | ADD `prefered_type` int unsigned NOT NULL DEFAULT '0'; 3 | -------------------------------------------------------------------------------- /install/sql/update-2.0.0.sql: -------------------------------------------------------------------------------- 1 | UPDATE `glpi_plugin_mydashboard_profileauthorizedwidgets` SET `widgets_id` = '0' WHERE `widgets_id` = '-1'; 2 | UPDATE `glpi_plugin_mydashboard_stocktickets` SET `groups_id` = '0' WHERE `groups_id` = '-1'; 3 | UPDATE `glpi_plugin_mydashboard_alerts` SET `itilcategories_id` = '0' WHERE `itilcategories_id` = '-1'; 4 | ALTER TABLE `glpi_plugin_mydashboard_profileauthorizedwidgets` CHANGE `widgets_id` `widgets_id` INT unsigned NOT NULL DEFAULT '0' COMMENT 'RELATION to glpi_mydashboard_widgets (id)'; 5 | ALTER TABLE `glpi_plugin_mydashboard_stocktickets` CHANGE `groups_id` `groups_id` INT unsigned NOT NULL DEFAULT '0'; 6 | ALTER TABLE `glpi_plugin_mydashboard_userwidgets` DROP CONSTRAINT `glpi_plugin_mydashboard_userwidgets_ibfk_1`; 7 | -------------------------------------------------------------------------------- /install/sql/update-2.0.5.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `glpi_plugin_mydashboard_preferences` CHANGE `color_palette` `color_palette` VARCHAR(50) NOT NULL DEFAULT ''; 2 | -------------------------------------------------------------------------------- /install/sql/update-2.0.9.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `glpi_plugin_mydashboard_stockticketindicators` CHANGE `groups_id` `groups_id` INT UNSIGNED NOT NULL DEFAULT 0; 2 | -------------------------------------------------------------------------------- /install/sql/update-2.1.2.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE `glpi_plugin_mydashboard_configs` DROP `display_plugin_widget`; 2 | ALTER TABLE `glpi_plugin_mydashboard_configs` DROP `google_api_key`; 3 | ALTER TABLE `glpi_plugin_mydashboard_preferences` ADD `prefered_category` INT unsigned NOT NULL DEFAULT '0'; 4 | -------------------------------------------------------------------------------- /locales/cs_CZ.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InfotelGLPI/mydashboard/a100dec7e18eb33d1ab1d316ede3cc76e462f243/locales/cs_CZ.mo -------------------------------------------------------------------------------- /locales/de_DE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InfotelGLPI/mydashboard/a100dec7e18eb33d1ab1d316ede3cc76e462f243/locales/de_DE.mo -------------------------------------------------------------------------------- /locales/en_GB.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InfotelGLPI/mydashboard/a100dec7e18eb33d1ab1d316ede3cc76e462f243/locales/en_GB.mo -------------------------------------------------------------------------------- /locales/en_US.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InfotelGLPI/mydashboard/a100dec7e18eb33d1ab1d316ede3cc76e462f243/locales/en_US.mo -------------------------------------------------------------------------------- /locales/es_EC.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InfotelGLPI/mydashboard/a100dec7e18eb33d1ab1d316ede3cc76e462f243/locales/es_EC.mo -------------------------------------------------------------------------------- /locales/es_ES.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InfotelGLPI/mydashboard/a100dec7e18eb33d1ab1d316ede3cc76e462f243/locales/es_ES.mo -------------------------------------------------------------------------------- /locales/fi_FI.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InfotelGLPI/mydashboard/a100dec7e18eb33d1ab1d316ede3cc76e462f243/locales/fi_FI.mo -------------------------------------------------------------------------------- /locales/fr_CA.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InfotelGLPI/mydashboard/a100dec7e18eb33d1ab1d316ede3cc76e462f243/locales/fr_CA.mo -------------------------------------------------------------------------------- /locales/fr_FR.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InfotelGLPI/mydashboard/a100dec7e18eb33d1ab1d316ede3cc76e462f243/locales/fr_FR.mo -------------------------------------------------------------------------------- /locales/he_IL.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InfotelGLPI/mydashboard/a100dec7e18eb33d1ab1d316ede3cc76e462f243/locales/he_IL.mo -------------------------------------------------------------------------------- /locales/id_ID.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InfotelGLPI/mydashboard/a100dec7e18eb33d1ab1d316ede3cc76e462f243/locales/id_ID.mo -------------------------------------------------------------------------------- /locales/it_IT.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InfotelGLPI/mydashboard/a100dec7e18eb33d1ab1d316ede3cc76e462f243/locales/it_IT.mo -------------------------------------------------------------------------------- /locales/lv_LV.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InfotelGLPI/mydashboard/a100dec7e18eb33d1ab1d316ede3cc76e462f243/locales/lv_LV.mo -------------------------------------------------------------------------------- /locales/pt_BR.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InfotelGLPI/mydashboard/a100dec7e18eb33d1ab1d316ede3cc76e462f243/locales/pt_BR.mo -------------------------------------------------------------------------------- /locales/pt_PT.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InfotelGLPI/mydashboard/a100dec7e18eb33d1ab1d316ede3cc76e462f243/locales/pt_PT.mo -------------------------------------------------------------------------------- /locales/ru_RU.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InfotelGLPI/mydashboard/a100dec7e18eb33d1ab1d316ede3cc76e462f243/locales/ru_RU.mo -------------------------------------------------------------------------------- /locales/sv_SE.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InfotelGLPI/mydashboard/a100dec7e18eb33d1ab1d316ede3cc76e462f243/locales/sv_SE.mo -------------------------------------------------------------------------------- /locales/zh_CN.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InfotelGLPI/mydashboard/a100dec7e18eb33d1ab1d316ede3cc76e462f243/locales/zh_CN.mo -------------------------------------------------------------------------------- /locales/zh_TW.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InfotelGLPI/mydashboard/a100dec7e18eb33d1ab1d316ede3cc76e462f243/locales/zh_TW.mo -------------------------------------------------------------------------------- /mydashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/InfotelGLPI/mydashboard/a100dec7e18eb33d1ab1d316ede3cc76e462f243/mydashboard.png -------------------------------------------------------------------------------- /public/css/hideinfo.css: -------------------------------------------------------------------------------- 1 | #display-login { 2 | /* margin-top: 50px; 3 | height: 80px; 4 | background: url(../../../pics/login_logo_glpi.png) center no-repeat #2f85b1;*/ 5 | } 6 | -------------------------------------------------------------------------------- /public/css/info.css: -------------------------------------------------------------------------------- 1 | #info_img { 2 | /*background: url(../../../pics/login_logo_glpi.png) center no-repeat #2f85b1; 3 | height: 90px; 4 | background-size: 50%;*/ 5 | } 6 | 7 | /* 8 | .info_weather_public_block { 9 | text-align: left; 10 | padding-bottom: 10px; 11 | margin-bottom: 1px; 12 | color: #000; 13 | font-size: 12px; 14 | border-radius: 5px 10px 0 5px; 15 | border: 1px solid #e6e6e6; 16 | -webkit-border-radius: 8px; 17 | -moz-border-radius: 8px; 18 | border-radius: 8px; 19 | background-color: #FFF; 20 | !*width: 50%;*! 21 | box-sizing: border-box; 22 | }*/ 23 | 24 | .bt-row { 25 | /* min-height: 120px; */ 26 | /*margin-right: unset;*/ 27 | /*margin-left: unset;*/ 28 | /*margin-top: unset;*/ 29 | /*!*-webkit-box-sizing: border-box;*!*/ 30 | /*!*-moz-box-sizing: border-box;*!*/ 31 | /*box-sizing: border-box;*/ 32 | /*width: 50%;*/ 33 | /*margin: 0 auto;*/ 34 | /*border-left: 1px solid #CCC;*/ 35 | /*border-right: 1px solid #CCC;*/ 36 | /*border-bottom: 1px solid #CCC;*/ 37 | /*border-top: 1px solid #CCC;*/ 38 | /*padding: 20px;*/ 39 | /*border-radius: 5px;*/ 40 | /*background-color: #f8f7f3;*/ 41 | } 42 | -------------------------------------------------------------------------------- /public/css/mydashboard.css.php: -------------------------------------------------------------------------------- 1 | getGridTheme(); 6 | $wtheme = $config->getWidgetTheme(); 7 | $stheme = $config->getSlidePanelTheme(); 8 | $sltheme = $config->getSlideLinkTheme(); 9 | 10 | ?> 11 | 12 | .mygrid { 13 | background-color: ; 14 | } 15 | 16 | .md-grid-stack-item-content { 17 | background-color: ; 18 | } 19 | 20 | .slidepanel { 21 | background: ; 22 | } 23 | 24 | .slidelink { 25 | color: ; 26 | } 27 | .plugin_mydashboard_menuDashboardListTitle1, 28 | .plugin_mydashboard_menuDashboardListContainer, 29 | .plugin_mydashboard_menuDashboardList, 30 | .plugin_mydashboard_menuDashboardListTitle1:hover, 31 | .plugin_mydashboard_menuDashboardListTitle1Opened, 32 | .plugin_mydashboard_menuDashboardListItem, 33 | .plugin_mydashboard_menuDashboardListTitle2 { 34 | background: ; 35 | } 36 | -------------------------------------------------------------------------------- /public/lib/countUp-jquery.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 3 | $.fn.countup = function(params) { 4 | // make sure dependency is present 5 | if (typeof CountUp !== 'function') { 6 | console.error('countUp.js is a required dependency of countUp-jquery.js.'); 7 | return; 8 | } 9 | 10 | var defaults = { 11 | startVal: 0, 12 | decimals: 0, 13 | duration: 2, 14 | }; 15 | 16 | if (typeof params === 'number') { 17 | defaults.endVal = params; 18 | } 19 | else if (typeof params === 'object') { 20 | $.extend(defaults, params); 21 | } 22 | else { 23 | console.error('countUp-jquery requires its argument to be either an object or number'); 24 | return; 25 | } 26 | 27 | this.each(function(i, elem) { 28 | var countUp = new CountUp(elem, defaults.startVal, defaults.endVal, defaults.decimals, defaults.duration, defaults.options); 29 | 30 | countUp.start(); 31 | }); 32 | 33 | 34 | 35 | return this; 36 | 37 | }; 38 | 39 | }(jQuery)); -------------------------------------------------------------------------------- /public/lib/datatables/Buttons-2.2.3/css/common.scss: -------------------------------------------------------------------------------- 1 | 2 | div.dataTables_wrapper { 3 | position: relative; 4 | } 5 | 6 | div.dt-buttons { 7 | position: initial; 8 | } 9 | 10 | div.dt-button-info { 11 | position: fixed; 12 | top: 50%; 13 | left: 50%; 14 | width: 400px; 15 | margin-top: -100px; 16 | margin-left: -200px; 17 | background-color: white; 18 | border: 2px solid #111; 19 | box-shadow: 3px 4px 10px 1px rgba(0, 0, 0, 0.3); 20 | border-radius: 3px; 21 | text-align: center; 22 | z-index: 21; 23 | 24 | h2 { 25 | padding: 0.5em; 26 | margin: 0; 27 | font-weight: normal; 28 | border-bottom: 1px solid #ddd; 29 | background-color: #f3f3f3; 30 | } 31 | 32 | > div { 33 | padding: 1em; 34 | } 35 | } 36 | 37 | div.dtb-popover-close { 38 | position: absolute; 39 | top: 10px; 40 | right: 10px; 41 | width: 22px; 42 | height: 22px; 43 | border: 1px solid #eaeaea; 44 | background-color: #f9f9f9; 45 | text-align: center; 46 | border-radius: 3px; 47 | cursor: pointer; 48 | z-index: 2003; 49 | } 50 | 51 | button.dtb-hide-drop { 52 | display: none !important; 53 | } 54 | 55 | div.dt-button-collection-title { 56 | text-align: center; 57 | padding: 0.3em 0 0.5em; 58 | margin-left: 0.5em; 59 | margin-right: 0.5em; 60 | font-size: 0.9em; 61 | } 62 | 63 | div.dt-button-collection-title:empty { 64 | display: none; 65 | } 66 | 67 | span.dt-button-spacer { 68 | display: inline-block; 69 | margin: 0.5em; 70 | white-space: nowrap; 71 | 72 | &.bar { 73 | border-left: 1px solid rgba(0, 0, 0, 0.3); 74 | vertical-align: middle; 75 | padding-left: 0.5em; 76 | 77 | &:empty { 78 | height: 1em; 79 | width: 1px; 80 | padding-left: 0; 81 | } 82 | } 83 | } 84 | 85 | div.dt-button-collection span.dt-button-spacer { 86 | width: 100%; 87 | font-size: 0.9em; 88 | text-align: center; 89 | margin: 0.5em 0; 90 | 91 | &:empty { 92 | height: 0; 93 | width: 100%; 94 | } 95 | 96 | &.bar { 97 | border-left: none; 98 | border-bottom: 1px solid rgba(0, 0, 0, 0.3); 99 | padding-left: 0; 100 | } 101 | } 102 | -------------------------------------------------------------------------------- /public/lib/datatables/Buttons-2.2.3/js/buttons.bootstrap.js: -------------------------------------------------------------------------------- 1 | /*! Bootstrap integration for DataTables' Buttons 2 | * ©2016 SpryMedia Ltd - datatables.net/license 3 | */ 4 | 5 | (function( factory ){ 6 | if ( typeof define === 'function' && define.amd ) { 7 | // AMD 8 | define( ['jquery', 'datatables.net-bs', 'datatables.net-buttons'], function ( $ ) { 9 | return factory( $, window, document ); 10 | } ); 11 | } 12 | else if ( typeof exports === 'object' ) { 13 | // CommonJS 14 | module.exports = function (root, $) { 15 | if ( ! root ) { 16 | root = window; 17 | } 18 | 19 | if ( ! $ || ! $.fn.dataTable ) { 20 | $ = require('datatables.net-bs')(root, $).$; 21 | } 22 | 23 | if ( ! $.fn.dataTable.Buttons ) { 24 | require('datatables.net-buttons')(root, $); 25 | } 26 | 27 | return factory( $, root, root.document ); 28 | }; 29 | } 30 | else { 31 | // Browser 32 | factory( jQuery, window, document ); 33 | } 34 | }(function( $, window, document, undefined ) { 35 | 'use strict'; 36 | var DataTable = $.fn.dataTable; 37 | 38 | 39 | $.extend( true, DataTable.Buttons.defaults, { 40 | dom: { 41 | container: { 42 | className: 'dt-buttons btn-group' 43 | }, 44 | button: { 45 | className: 'btn btn-default' 46 | }, 47 | collection: { 48 | tag: 'ul', 49 | className: 'dropdown-menu', 50 | closeButton: false, 51 | button: { 52 | tag: 'li', 53 | className: 'dt-button', 54 | active: 'active', 55 | disabled: 'disabled' 56 | }, 57 | buttonLiner: { 58 | tag: 'a', 59 | className: '' 60 | } 61 | }, 62 | splitWrapper: { 63 | tag: 'div', 64 | className: 'dt-btn-split-wrapper btn-group', 65 | closeButton: false, 66 | }, 67 | splitDropdown: { 68 | tag: 'button', 69 | text: '▼', 70 | className: 'btn btn-default dt-btn-split-drop dropdown-toggle', 71 | closeButton: false, 72 | align: 'split-left', 73 | splitAlignClass: 'dt-button-split-left' 74 | }, 75 | splitDropdownButton: { 76 | tag: 'button', 77 | className: 'dt-btn-split-drop-button btn btn-default', 78 | closeButton: false 79 | } 80 | } 81 | } ); 82 | 83 | DataTable.ext.buttons.collection.text = function ( dt ) { 84 | return dt.i18n('buttons.collection', 'Collection '); 85 | }; 86 | 87 | 88 | return DataTable.Buttons; 89 | })); 90 | -------------------------------------------------------------------------------- /public/lib/datatables/Buttons-2.2.3/js/buttons.bootstrap.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | Bootstrap integration for DataTables' Buttons 3 | ©2016 SpryMedia Ltd - datatables.net/license 4 | */ 5 | (function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs","datatables.net-buttons"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-bs")(a,b).$);b.fn.dataTable.Buttons||require("datatables.net-buttons")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,e){a=c.fn.dataTable;c.extend(!0,a.Buttons.defaults,{dom:{container:{className:"dt-buttons btn-group"}, 6 | button:{className:"btn btn-default"},collection:{tag:"ul",className:"dropdown-menu",closeButton:!1,button:{tag:"li",className:"dt-button",active:"active",disabled:"disabled"},buttonLiner:{tag:"a",className:""}},splitWrapper:{tag:"div",className:"dt-btn-split-wrapper btn-group",closeButton:!1},splitDropdown:{tag:"button",text:"▼",className:"btn btn-default dt-btn-split-drop dropdown-toggle",closeButton:!1,align:"split-left",splitAlignClass:"dt-button-split-left"},splitDropdownButton:{tag:"button", 7 | className:"dt-btn-split-drop-button btn btn-default",closeButton:!1}}});a.ext.buttons.collection.text=function(d){return d.i18n("buttons.collection",'Collection ')};return a.Buttons}); 8 | -------------------------------------------------------------------------------- /public/lib/datatables/Buttons-2.2.3/js/buttons.bootstrap4.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | Bootstrap integration for DataTables' Buttons 3 | ©2016 SpryMedia Ltd - datatables.net/license 4 | */ 5 | (function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-buttons"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-bs4")(a,b).$);b.fn.dataTable.Buttons||require("datatables.net-buttons")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,f){a=c.fn.dataTable;c.extend(!0,a.Buttons.defaults,{dom:{container:{className:"dt-buttons btn-group flex-wrap"}, 6 | button:{className:"btn btn-secondary"},collection:{tag:"div",className:"dropdown-menu",closeButton:!1,button:{tag:"a",className:"dt-button dropdown-item",active:"active",disabled:"disabled"}},splitWrapper:{tag:"div",className:"dt-btn-split-wrapper btn-group",closeButton:!1},splitDropdown:{tag:"button",text:"",className:"btn btn-secondary dt-btn-split-drop dropdown-toggle dropdown-toggle-split",closeButton:!1,align:"split-left",splitAlignClass:"dt-button-split-left"},splitDropdownButton:{tag:"button", 7 | className:"dt-btn-split-drop-button btn btn-secondary",closeButton:!1}},buttonCreated:function(e,d){return e.buttons?c('
').append(d):d}});a.ext.buttons.collection.className+=" dropdown-toggle";a.ext.buttons.collection.rightAlignClassName="dropdown-menu-right";return a.Buttons}); 8 | -------------------------------------------------------------------------------- /public/lib/datatables/Buttons-2.2.3/js/buttons.bootstrap5.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | Bootstrap integration for DataTables' Buttons 3 | ©2016 SpryMedia Ltd - datatables.net/license 4 | */ 5 | (function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs5","datatables.net-buttons"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net-bs5")(a,b).$);b.fn.dataTable.Buttons||require("datatables.net-buttons")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,f){a=c.fn.dataTable;c.extend(!0,a.Buttons.defaults,{dom:{container:{className:"dt-buttons btn-group flex-wrap"}, 6 | button:{className:"btn btn-secondary"},collection:{tag:"div",className:"dropdown-menu",closeButton:!1,button:{tag:"a",className:"dt-button dropdown-item",active:"active",disabled:"disabled"}},splitWrapper:{tag:"div",className:"dt-btn-split-wrapper btn-group",closeButton:!1},splitDropdown:{tag:"button",text:"",className:"btn btn-secondary dt-btn-split-drop dropdown-toggle dropdown-toggle-split",closeButton:!1,align:"split-left",splitAlignClass:"dt-button-split-left"},splitDropdownButton:{tag:"button", 7 | className:"dt-btn-split-drop-button btn btn-secondary",closeButton:!1}},buttonCreated:function(e,d){return e.buttons?c('
').append(d):d}});a.ext.buttons.collection.className+=" dropdown-toggle";a.ext.buttons.collection.rightAlignClassName="dropdown-menu-right";return a.Buttons}); 8 | -------------------------------------------------------------------------------- /public/lib/datatables/Buttons-2.2.3/js/buttons.bulma.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | Bulma integration for DataTables' Buttons 3 | ©2021 SpryMedia Ltd - datatables.net/license 4 | */ 5 | (function(b){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bm","datatables.net-buttons"],function(a){return b(a,window,document)}):"object"===typeof exports?module.exports=function(a,c){a||(a=window);c&&c.fn.dataTable||(c=require("datatables.net-bm")(a,c).$);c.fn.dataTable.Buttons||require("datatables.net-buttons")(a,c);return b(c,a,a.document)}:b(jQuery,window,document)})(function(b,a,c,f){a=b.fn.dataTable;b.extend(!0,a.Buttons.defaults,{dom:{container:{className:"dt-buttons field is-grouped"}, 6 | button:{className:"button is-light",active:"is-active",disabled:"is-disabled"},collection:{tag:"div",closeButton:!1,className:"dropdown-content",button:{tag:"a",className:"dt-button dropdown-item",active:"is-active",disabled:"is-disabled"}},splitWrapper:{tag:"div",className:"dt-btn-split-wrapper dropdown-trigger buttons has-addons",closeButton:!1},splitDropdownButton:{tag:"button",className:"dt-btn-split-drop-button button is-light",closeButton:!1},splitDropdown:{tag:"button",text:"▼",className:"button is-light", 7 | closeButton:!1,align:"split-left",splitAlignClass:"dt-button-split-left"}},buttonCreated:function(d,e){d.buttons&&(d._collection=b('