├── .gitattributes ├── LICENSE ├── README.md ├── apps ├── assets │ ├── __init__.py │ ├── admin.py │ ├── api.py │ ├── apps.py │ ├── forms.py │ ├── migrations │ │ └── __init__.py │ ├── models.py │ ├── serializers.py │ ├── templates │ │ ├── asset │ │ │ ├── asset_create.html │ │ │ ├── asset_detail.html │ │ │ ├── asset_list.html │ │ │ └── asset_update.html │ │ └── group │ │ │ ├── group_create.html │ │ │ ├── group_list.html │ │ │ └── group_update.html │ ├── tests.py │ ├── urls.py │ └── views.py ├── jobs │ ├── __init__.py │ ├── admin.py │ ├── apps.py │ ├── forms.py │ ├── migrations │ │ └── __init__.py │ ├── models.py │ ├── templates │ │ ├── job │ │ │ ├── job_create.html │ │ │ ├── job_list.html │ │ │ ├── job_update.html │ │ │ └── run_cmd.html │ │ └── type │ │ │ ├── type_create.html │ │ │ ├── type_list.html │ │ │ └── type_update.html │ ├── tests.py │ ├── urls.py │ └── views.py ├── tasks │ ├── __init__.py │ ├── admin.py │ ├── apps.py │ ├── forms.py │ ├── migrations │ │ └── __init__.py │ ├── models.py │ ├── tasks.py │ ├── templates │ │ ├── crontab │ │ │ ├── crontab_create.html │ │ │ ├── crontab_list.html │ │ │ └── crontab_update.html │ │ ├── interval │ │ │ ├── interval_create.html │ │ │ ├── interval_list.html │ │ │ └── interval_update.html │ │ └── task │ │ │ ├── task_create.html │ │ │ ├── task_list.html │ │ │ ├── task_result_list.html │ │ │ └── task_update.html │ ├── tests.py │ ├── urls.py │ └── views.py ├── users │ ├── __init__.py │ ├── admin.py │ ├── api.py │ ├── apps.py │ ├── forms.py │ ├── migrations │ │ └── __init__.py │ ├── models.py │ ├── serializers.py │ ├── templates │ │ ├── role │ │ │ ├── role_create.html │ │ │ ├── role_list.html │ │ │ └── role_update.html │ │ └── user │ │ │ ├── user_create.html │ │ │ ├── user_list.html │ │ │ └── user_update.html │ ├── tests.py │ ├── urls.py │ └── views.py └── utils │ ├── auth │ ├── __init__.py │ └── mixins.py │ ├── config.ini │ ├── generic │ ├── __init__.py │ ├── jobs.py │ └── shoutcuts.py │ └── remote │ ├── __init__.py │ ├── para.py │ └── salt.py ├── docs └── img │ ├── Crontab列表.png │ ├── Interval列表.png │ ├── 任务结果.png │ ├── 作业列表.png │ ├── 作业类型.png │ ├── 功能说明.png │ ├── 周期任务.png │ ├── 执行命令.png │ ├── 控制面板.png │ ├── 用户列表.png │ ├── 用户角色.png │ ├── 资产列表.png │ └── 资产组.png ├── locale └── zh_hans │ └── LC_MESSAGES │ ├── django.mo │ └── django.po ├── manage.py ├── pingAdmin ├── __init__.py ├── celery.py ├── settings.py ├── urls.py ├── views.py └── wsgi.py ├── requirements.txt ├── static ├── css │ ├── animate.css │ ├── bootstrap-select.min.css │ ├── bootstrap-validator.css │ ├── bootstrap.min.css │ ├── colors │ │ ├── blue-dark.css │ │ ├── blue.css │ │ ├── default-dark.css │ │ ├── default.css │ │ ├── gray-dark.css │ │ ├── gray.css │ │ ├── green-dark.css │ │ ├── green.css │ │ ├── megna-dark.css │ │ ├── megna.css │ │ ├── purple-dark.css │ │ ├── purple.css │ │ └── red-dark.css │ ├── icons │ │ ├── linea-icons │ │ │ └── linea.css │ │ └── material-design-iconic-font │ │ │ ├── css │ │ │ ├── material-design-iconic-font.css │ │ │ ├── material-design-iconic-font.min.css │ │ │ └── materialdesignicons.min.css │ │ │ └── fonts │ │ │ ├── Material-Design-Iconic-Font.eot │ │ │ ├── Material-Design-Iconic-Font.svg │ │ │ ├── Material-Design-Iconic-Font.ttf │ │ │ ├── Material-Design-Iconic-Font.woff │ │ │ ├── Material-Design-Iconic-Font.woff2 │ │ │ ├── materialdesignicons-webfont.eot │ │ │ ├── materialdesignicons-webfont.svg │ │ │ ├── materialdesignicons-webfont.ttf │ │ │ ├── materialdesignicons-webfont.woff │ │ │ └── materialdesignicons-webfont.woff2 │ ├── pingAdmin.css │ ├── spinners.css │ └── style.css ├── fonts │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.svg │ ├── glyphicons-halflings-regular.ttf │ ├── glyphicons-halflings-regular.woff │ └── glyphicons-halflings-regular.woff2 ├── images │ ├── base │ │ ├── admin-logo-dark.png │ │ ├── admin-logo.png │ │ ├── admin-text.png │ │ ├── busy.gif │ │ ├── favicon.png │ │ ├── headline.png │ │ └── login-register.jpg │ ├── profiles │ │ └── profile.jpg │ └── users │ │ ├── 1.jpg │ │ └── varun.jpg ├── js │ ├── bootstrap-select.min.js │ ├── bootstrap-validator.min.js │ ├── bootstrap.min.js │ ├── custom.min.js │ ├── footable-init.js │ ├── jquery.min.js │ ├── jquery.slimscroll.js │ ├── pingAdmin.js │ ├── validator-init.js │ └── waves.js └── plugins │ ├── codemirror │ ├── css │ │ ├── codemirror.css │ │ ├── dracula.css │ │ ├── eclipse.css │ │ └── merge.css │ └── js │ │ ├── codemirror.js │ │ ├── diff_match_patch.js │ │ ├── formatting.js │ │ ├── javascript.js │ │ ├── merge.js │ │ └── nginx.js │ ├── datatables │ ├── css │ │ ├── buttons.bootstrap.min.css │ │ ├── buttons.dataTables.min.css │ │ └── jquery.dataTables.min.css │ └── js │ │ ├── buttons.bootstrap.min.js │ │ ├── dataTables.buttons.min.js │ │ └── jquery.dataTables.min.js │ ├── datetimepicker │ ├── css │ │ └── bootstrap-datetimepicker.min.css │ └── js │ │ ├── bootstrap-datetimepicker.min.js │ │ └── bootstrap-datetimepicker.zh-CN.js │ ├── filter │ ├── css │ │ ├── jquery-filer.css │ │ ├── jquery.filer.css │ │ └── themes │ │ │ └── jquery.filer-dragdropbox-theme.css │ └── js │ │ ├── custom.js │ │ ├── jquery.filer.js │ │ ├── jquery.filer.min.js │ │ └── prettify.js │ ├── footable │ ├── css │ │ ├── fonts │ │ │ ├── footable.eot │ │ │ ├── footable.svg │ │ │ ├── footable.ttf │ │ │ └── footable.woff │ │ └── footable.core.css │ └── js │ │ └── footable.all.min.js │ ├── icheck │ ├── js │ │ └── icheck.min.js │ └── skins │ │ ├── all.css │ │ ├── flat │ │ ├── _all.css │ │ ├── aero.css │ │ ├── aero.png │ │ ├── aero@2x.png │ │ ├── blue.css │ │ ├── blue.png │ │ ├── blue@2x.png │ │ ├── flat.css │ │ ├── flat.png │ │ ├── flat@2x.png │ │ ├── green.css │ │ ├── green.png │ │ ├── green@2x.png │ │ ├── grey.css │ │ ├── grey.png │ │ ├── grey@2x.png │ │ ├── orange.css │ │ ├── orange.png │ │ ├── orange@2x.png │ │ ├── pink.css │ │ ├── pink.png │ │ ├── pink@2x.png │ │ ├── purple.css │ │ ├── purple.png │ │ ├── purple@2x.png │ │ ├── red.css │ │ ├── red.png │ │ ├── red@2x.png │ │ ├── yellow.css │ │ ├── yellow.png │ │ └── yellow@2x.png │ │ ├── futurico │ │ ├── futurico.css │ │ ├── futurico.png │ │ └── futurico@2x.png │ │ ├── line │ │ ├── _all.css │ │ ├── aero.css │ │ ├── blue.css │ │ ├── green.css │ │ ├── grey.css │ │ ├── line.css │ │ ├── line.png │ │ ├── line@2x.png │ │ ├── orange.css │ │ ├── pink.css │ │ ├── purple.css │ │ ├── red.css │ │ └── yellow.css │ │ ├── minimal │ │ ├── _all.css │ │ ├── aero.css │ │ ├── aero.png │ │ ├── aero@2x.png │ │ ├── blue.css │ │ ├── blue.png │ │ ├── blue@2x.png │ │ ├── green.css │ │ ├── green.png │ │ ├── green@2x.png │ │ ├── grey.css │ │ ├── grey.png │ │ ├── grey@2x.png │ │ ├── minimal.css │ │ ├── minimal.png │ │ ├── minimal@2x.png │ │ ├── orange.css │ │ ├── orange.png │ │ ├── orange@2x.png │ │ ├── pink.css │ │ ├── pink.png │ │ ├── pink@2x.png │ │ ├── purple.css │ │ ├── purple.png │ │ ├── purple@2x.png │ │ ├── red.css │ │ ├── red.png │ │ ├── red@2x.png │ │ ├── yellow.css │ │ ├── yellow.png │ │ └── yellow@2x.png │ │ ├── polaris │ │ ├── polaris.css │ │ ├── polaris.png │ │ └── polaris@2x.png │ │ └── square │ │ ├── _all.css │ │ ├── aero.css │ │ ├── aero.png │ │ ├── aero@2x.png │ │ ├── blue.css │ │ ├── blue.png │ │ ├── blue@2x.png │ │ ├── green.css │ │ ├── green.png │ │ ├── green@2x.png │ │ ├── grey.css │ │ ├── grey.png │ │ ├── grey@2x.png │ │ ├── orange.css │ │ ├── orange.png │ │ ├── orange@2x.png │ │ ├── pink.css │ │ ├── pink.png │ │ ├── pink@2x.png │ │ ├── purple.css │ │ ├── purple.png │ │ ├── purple@2x.png │ │ ├── red.css │ │ ├── red.png │ │ ├── red@2x.png │ │ ├── square.css │ │ ├── square.png │ │ ├── square@2x.png │ │ ├── yellow.css │ │ ├── yellow.png │ │ └── yellow@2x.png │ ├── icons │ ├── font-awesome │ │ ├── css │ │ │ ├── font-awesome.css │ │ │ └── font-awesome.min.css │ │ └── fonts │ │ │ ├── FontAwesome.otf │ │ │ ├── fontawesome-webfont-old.ttf │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.svg │ │ │ ├── fontawesome-webfont.ttf │ │ │ ├── fontawesome-webfont.woff │ │ │ └── fontawesome-webfont.woff2 │ ├── linea-icons │ │ ├── fonts │ │ │ ├── linea-arrows-10.eot │ │ │ ├── linea-arrows-10.svg │ │ │ ├── linea-arrows-10.ttf │ │ │ ├── linea-arrows-10.woff │ │ │ ├── linea-basic-10.eot │ │ │ ├── linea-basic-10.svg │ │ │ ├── linea-basic-10.ttf │ │ │ ├── linea-basic-10.woff │ │ │ ├── linea-basic-elaboration-10.eot │ │ │ ├── linea-basic-elaboration-10.svg │ │ │ ├── linea-basic-elaboration-10.ttf │ │ │ ├── linea-basic-elaboration-10.woff │ │ │ ├── linea-ecommerce-10.eot │ │ │ ├── linea-ecommerce-10.svg │ │ │ ├── linea-ecommerce-10.ttf │ │ │ ├── linea-ecommerce-10.woff │ │ │ ├── linea-music-10.eot │ │ │ ├── linea-music-10.svg │ │ │ ├── linea-music-10.ttf │ │ │ ├── linea-music-10.woff │ │ │ ├── linea-software-10.eot │ │ │ ├── linea-software-10.svg │ │ │ ├── linea-software-10.ttf │ │ │ ├── linea-software-10.woff │ │ │ ├── linea-weather-10.eot │ │ │ ├── linea-weather-10.svg │ │ │ ├── linea-weather-10.ttf │ │ │ └── linea-weather-10.woff │ │ └── linea.css │ ├── simple-line-icons │ │ ├── css │ │ │ └── simple-line-icons.css │ │ └── fonts │ │ │ ├── Simple-Line-Icons.eot │ │ │ ├── Simple-Line-Icons.svg │ │ │ ├── Simple-Line-Icons.ttf │ │ │ ├── Simple-Line-Icons.woff │ │ │ └── Simple-Line-Icons.woff2 │ ├── themify-icons │ │ ├── fonts │ │ │ ├── themify.eot │ │ │ ├── themify.svg │ │ │ ├── themify.ttf │ │ │ └── themify.woff │ │ ├── ie7 │ │ │ ├── ie7.css │ │ │ └── ie7.js │ │ └── themify-icons.css │ └── weather-icons │ │ ├── css │ │ ├── weather-icons-core.css │ │ ├── weather-icons-variables.css │ │ ├── weather-icons-wind.css │ │ ├── weather-icons-wind.min.css │ │ ├── weather-icons.css │ │ └── weather-icons.min.css │ │ └── font │ │ ├── weathericons-regular-webfont.eot │ │ ├── weathericons-regular-webfont.svg │ │ ├── weathericons-regular-webfont.ttf │ │ ├── weathericons-regular-webfont.woff │ │ └── weathericons-regular-webfont.woff2 │ ├── multiselect │ ├── css │ │ └── style.css │ └── js │ │ ├── multiselect.js │ │ └── multiselect.min.js │ ├── sidebar-nav │ ├── css │ │ └── sidebar-nav.min.css │ └── js │ │ └── sidebar-nav.min.js │ ├── styleswitcher │ └── js │ │ └── jQuery.style.switcher.js │ ├── sweetalert │ ├── css │ │ ├── sweetalert.css │ │ └── twitter.css │ └── js │ │ └── sweetalert.min.js │ ├── switchery │ ├── css │ │ └── switchery.min.css │ └── js │ │ └── switchery.min.js │ └── toast-master │ ├── css │ └── jquery.toast.css │ └── js │ └── jquery.toast.js └── templates ├── 403.html ├── base ├── _base.html ├── _css.html └── _js.html ├── index.html ├── login.html └── profile.html /.gitattributes: -------------------------------------------------------------------------------- 1 | *.css linguist-language=python 2 | *.js linguist-language=python 3 | *.html linguist-language=python -------------------------------------------------------------------------------- /apps/assets/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/apps/assets/__init__.py -------------------------------------------------------------------------------- /apps/assets/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /apps/assets/api.py: -------------------------------------------------------------------------------- 1 | from .serializers import AssetInfoSerializer, AssetGroupSerializer 2 | from .models import AssetInfo, AssetGroup 3 | from rest_framework import viewsets 4 | 5 | 6 | class AssetViewSet(viewsets.ModelViewSet): 7 | queryset = AssetInfo.objects.all() 8 | serializer_class = AssetInfoSerializer 9 | 10 | 11 | class AssetGroupViewSet(viewsets.ModelViewSet): 12 | queryset = AssetGroup.objects.all() 13 | serializer_class = AssetGroupSerializer 14 | -------------------------------------------------------------------------------- /apps/assets/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class AssetsConfig(AppConfig): 5 | name = 'assets' 6 | -------------------------------------------------------------------------------- /apps/assets/forms.py: -------------------------------------------------------------------------------- 1 | from django import forms 2 | 3 | from apps.assets.models import AssetInfo, AssetGroup 4 | 5 | __all__ = ['FileForm', 'AssetGroupForm', 'AssetForm'] 6 | 7 | 8 | class FileForm(forms.Form): 9 | file = forms.FileField() 10 | 11 | 12 | class AssetGroupForm(forms.ModelForm): 13 | class Meta: 14 | model = AssetGroup 15 | fields = '__all__' 16 | 17 | 18 | class AssetForm(forms.ModelForm): 19 | class Meta: 20 | model = AssetInfo 21 | exclude = ['os', 'os_release', 'mem_total', 'cpu_model', 'cpu_count', 'sn'] 22 | -------------------------------------------------------------------------------- /apps/assets/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/apps/assets/migrations/__init__.py -------------------------------------------------------------------------------- /apps/assets/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | from django.utils.translation import ugettext_lazy as _ 3 | 4 | 5 | # Create your models here. 6 | 7 | class AssetGroup(models.Model): 8 | name = models.CharField(max_length=64, verbose_name=_('Asset Group Name'), unique=True) 9 | comment = models.TextField(verbose_name=_('Comment'), blank=True, null=True) 10 | 11 | class Meta: 12 | db_table = 'AssetGroup' 13 | verbose_name = _('Asset Group') 14 | verbose_name_plural = _('Asset Group') 15 | 16 | def __str__(self): 17 | return self.name 18 | 19 | 20 | class AssetInfo(models.Model): 21 | # basic info 22 | hostname = models.CharField(max_length=64, verbose_name=_('Hostname'), unique=True) 23 | outer_ip = models.GenericIPAddressField(max_length=32, verbose_name=_('Outer IP'), null=True, blank=True) 24 | inner_ip = models.GenericIPAddressField(max_length=32, verbose_name=_('Inner IP'), null=True, blank=True) 25 | port = models.IntegerField(default=22, verbose_name=_('Port'), null=True, blank=True) 26 | username = models.CharField(max_length=64, verbose_name=_('Username'), null=True, blank=True) 27 | password = models.CharField(max_length=128, verbose_name=_('Auth Password'), default='', blank=True) 28 | groups = models.ForeignKey(to='AssetGroup', verbose_name=_('Asset Group'), on_delete=models.SET_NULL, blank=True, null=True) 29 | # system info from salt 30 | os = models.CharField(max_length=64, verbose_name=_('OS'), null=True, blank=True) 31 | os_release = models.CharField(max_length=32, verbose_name=_('OS Release'), null=True, blank=True) 32 | cpu_model = models.CharField(max_length=64, verbose_name=_('CPU Model'), null=True, blank=True) 33 | cpu_count = models.IntegerField(null=True, verbose_name=_('CPU Count')) 34 | mem_total = models.CharField(max_length=64, verbose_name=_('Memory Total'), null=True, blank=True) 35 | sn = models.CharField(max_length=64, verbose_name=_('Serial Number'), null=True, blank=True) 36 | 37 | class Meta: 38 | db_table = 'AssetInfo' 39 | verbose_name = _('Asset Info') 40 | verbose_name_plural = _('Asset Info') 41 | 42 | def __str__(self): 43 | return self.hostname 44 | -------------------------------------------------------------------------------- /apps/assets/serializers.py: -------------------------------------------------------------------------------- 1 | from rest_framework import serializers 2 | from .models import AssetInfo, AssetGroup 3 | 4 | 5 | class AssetInfoSerializer(serializers.ModelSerializer): 6 | class Meta: 7 | model = AssetInfo 8 | fields = '__all__' 9 | 10 | 11 | class AssetGroupSerializer(serializers.ModelSerializer): 12 | class Meta: 13 | model = AssetGroup 14 | fields = '__all__' 15 | -------------------------------------------------------------------------------- /apps/assets/templates/group/group_update.html: -------------------------------------------------------------------------------- 1 | {% extends "base/_base.html" %} 2 | {% load bootstrap3 %} 3 | {% load i18n %} 4 | {% load static %} 5 | {% block content %} 6 |
7 |
8 |

{% trans 'Update Asset Group' %}

9 |
10 | {# #} 11 | 15 |
16 |
17 |
18 |
19 |
20 |
{% trans 'Update Asset Group' %} 21 |
22 |
23 |
24 |
25 |
26 | {% csrf_token %} 27 |
28 | {% bootstrap_field form.name layout="horizontal" horizontal_field_class="col-md-7" placeholder="" %} 29 | {% bootstrap_field form.comment layout="horizontal" horizontal_field_class="col-md-7" placeholder="" %} 30 |
31 |
32 |
33 |
34 |
35 |
36 | 37 | {% trans 'Cancel' %} 38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 | {% endblock %} 50 | 51 | {% block script %} 52 | 57 | {% endblock %} -------------------------------------------------------------------------------- /apps/assets/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /apps/assets/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | 3 | from apps.assets import views 4 | 5 | app_name = 'assets' 6 | 7 | urlpatterns = [ 8 | path('asset/import/', views.AssetImportView.as_view(), name='asset-import'), 9 | path('asset/list/', views.AssetListView.as_view(), name='asset-list'), 10 | path('asset/detail//', views.AssetDetailView.as_view(), name='asset-detail'), 11 | path('asset/sync/', views.AssetSyncView.as_view(), name='asset-sync'), 12 | path('asset/create/', views.AssetCreateView.as_view(), name='asset-create'), 13 | path('asset/update//', views.AssetUpdateView.as_view(), name='asset-update'), 14 | path('asset/delete/', views.AssetDeleteView.as_view(), name='asset-delete'), 15 | path('asset/export/', views.AssetExportView.as_view(), name='asset-export'), 16 | path('group/list/', views.AssetGroupListView.as_view(), name='group-list'), 17 | path('group/create/', views.AssetGroupCreateView.as_view(), name='group-create'), 18 | path('group/update//', views.AssetGroupUpdateView.as_view(), name='group-update'), 19 | path('group/delete/', views.AssetGroupDeleteView.as_view(), name='group-delete'), 20 | ] 21 | -------------------------------------------------------------------------------- /apps/jobs/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/apps/jobs/__init__.py -------------------------------------------------------------------------------- /apps/jobs/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /apps/jobs/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class JobsConfig(AppConfig): 5 | name = 'jobs' 6 | -------------------------------------------------------------------------------- /apps/jobs/forms.py: -------------------------------------------------------------------------------- 1 | from django import forms 2 | 3 | from apps.jobs.models import JobInfo, JobType 4 | 5 | __all__ = ['JobTypeForm', 'JobForm'] 6 | 7 | 8 | class JobTypeForm(forms.ModelForm): 9 | class Meta: 10 | model = JobType 11 | fields = '__all__' 12 | 13 | 14 | class JobForm(forms.ModelForm): 15 | class Meta: 16 | model = JobInfo 17 | fields = '__all__' 18 | -------------------------------------------------------------------------------- /apps/jobs/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/apps/jobs/migrations/__init__.py -------------------------------------------------------------------------------- /apps/jobs/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | from django.utils.translation import ugettext_lazy as _ 3 | 4 | 5 | # Create your models here. 6 | 7 | class JobType(models.Model): 8 | name = models.CharField(max_length=64, verbose_name=_('Job Type Name'), unique=True) 9 | comment = models.TextField(verbose_name=_('Comment'), blank=True, null=True) 10 | 11 | class Meta: 12 | db_table = 'JobType' 13 | verbose_name = _('Job Type') 14 | verbose_name_plural = _('Job Type') 15 | 16 | def __str__(self): 17 | return self.name 18 | 19 | 20 | class JobInfo(models.Model): 21 | name = models.CharField(max_length=64, verbose_name=_('Job Name'), unique=True) 22 | content = models.TextField(verbose_name=_('Content'), blank=True, null=True) 23 | comment = models.TextField(verbose_name=_('Comment'), blank=True, null=True) 24 | types = models.ForeignKey(to='JobType', on_delete=models.CASCADE, blank=True, verbose_name=_('Job Type')) 25 | 26 | class Meta: 27 | db_table = 'JobInfo' 28 | verbose_name = _('Job Info') 29 | verbose_name_plural = _('Job Info') 30 | 31 | def __str__(self): 32 | return self.name 33 | -------------------------------------------------------------------------------- /apps/jobs/templates/type/type_create.html: -------------------------------------------------------------------------------- 1 | {% extends "base/_base.html" %} 2 | {% load i18n %} 3 | {% load bootstrap3 %} 4 | {% load static %} 5 | {% block content %} 6 |
7 |
8 |

{% trans 'Create Job Type' %}

9 |
10 |
11 | {# #} 12 | 16 |
17 |
18 |
19 |
20 |
21 |
{% trans 'Create Job Type' %} 22 |
23 |
24 |
25 |
26 |
27 | {% csrf_token %} 28 |
29 | {% bootstrap_field form.name layout="horizontal" horizontal_field_class="col-md-7" placeholder="" %} 30 | {% bootstrap_field form.comment layout="horizontal" horizontal_field_class="col-md-7" placeholder="" %} 31 |
32 |
33 |
34 |
35 |
36 |
37 | 38 | {% trans 'Cancel' %} 39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 | {% endblock %} 51 | 52 | {% block script %} 53 | 58 | {% endblock %} -------------------------------------------------------------------------------- /apps/jobs/templates/type/type_update.html: -------------------------------------------------------------------------------- 1 | {% extends "base/_base.html" %} 2 | {% load i18n %} 3 | {% load bootstrap3 %} 4 | {% load static %} 5 | {% block content %} 6 |
7 |
8 |

{% trans 'Update Job Type' %}

9 |
10 |
11 | {# #} 12 | 16 |
17 |
18 |
19 |
20 |
21 |
{% trans 'Update Job Type' %} 22 |
23 |
24 |
25 |
26 |
27 | {% csrf_token %} 28 |
29 | {% bootstrap_field form.name layout="horizontal" horizontal_field_class="col-md-7" placeholder="" %} 30 | {% bootstrap_field form.comment layout="horizontal" horizontal_field_class="col-md-7" placeholder="" %} 31 |
32 |
33 |
34 |
35 |
36 |
37 | 38 | {% trans 'Cancel' %} 39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 | {% endblock %} 51 | 52 | {% block script %} 53 | 58 | {% endblock %} -------------------------------------------------------------------------------- /apps/jobs/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /apps/jobs/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | 3 | from apps.jobs import views 4 | 5 | app_name = 'jobs' 6 | 7 | urlpatterns = [ 8 | path('job/cmd/', views.RunCommandView.as_view(), name='run-cmd'), 9 | path('job/list/', views.JobListView.as_view(), name='job-list'), 10 | path('job/create/', views.JobCreateView.as_view(), name='job-create'), 11 | path('job/update//', views.JobUpdateView.as_view(), name='job-update'), 12 | path('job/delete/', views.JobDeleteView.as_view(), name='job-delete'), 13 | path('job/push/', views.JobFilePushView.as_view(), name='job-push'), 14 | path('type/list/', views.JobTypeListView.as_view(), name='type-list'), 15 | path('type/create/', views.JobTypeCreateView.as_view(), name='type-create'), 16 | path('type/update//', views.JobTypeUpdateView.as_view(), name='type-update'), 17 | path('type/delete/', views.JobTypeDeleteView.as_view(), name='type-delete'), 18 | ] 19 | -------------------------------------------------------------------------------- /apps/tasks/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/apps/tasks/__init__.py -------------------------------------------------------------------------------- /apps/tasks/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /apps/tasks/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class TasksConfig(AppConfig): 5 | name = 'tasks' 6 | -------------------------------------------------------------------------------- /apps/tasks/forms.py: -------------------------------------------------------------------------------- 1 | from django import forms 2 | 3 | from djcelery.models import CrontabSchedule, IntervalSchedule, PeriodicTask 4 | 5 | __all__ = ['PeriodicTaskForm', 'CrontabScheduleForm', 'IntervalScheduleForm'] 6 | 7 | 8 | class PeriodicTaskForm(forms.ModelForm): 9 | class Meta: 10 | model = PeriodicTask 11 | fields = '__all__' 12 | 13 | 14 | class CrontabScheduleForm(forms.ModelForm): 15 | class Meta: 16 | model = CrontabSchedule 17 | fields = '__all__' 18 | 19 | 20 | class IntervalScheduleForm(forms.ModelForm): 21 | class Meta: 22 | model = IntervalSchedule 23 | fields = '__all__' 24 | -------------------------------------------------------------------------------- /apps/tasks/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/apps/tasks/migrations/__init__.py -------------------------------------------------------------------------------- /apps/tasks/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | # Create your models here. 4 | -------------------------------------------------------------------------------- /apps/tasks/tasks.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from celery import shared_task 3 | from utils.remote.salt import * 4 | from apps.assets.models import AssetInfo 5 | 6 | salt = SaltApi() 7 | 8 | __all__ = ['sync_info', 'cmd_run'] 9 | 10 | 11 | @shared_task 12 | def sync_info(asset_name_list): 13 | result = {} 14 | salt_key = salt.list_all_key()[0] 15 | system_info = salt.grains_items(asset_name_list) 16 | for i in asset_name_list: 17 | asset_obj = AssetInfo.objects.filter(hostname=i) 18 | if i in salt_key: 19 | asset_obj.update(os=system_info[i].get('os'), 20 | os_release=system_info[i].get('osrelease'), 21 | cpu_model=system_info[i].get('cpu_model'), 22 | cpu_count=system_info[i].get('num_cpus'), 23 | mem_total=system_info[i].get('mem_total'), 24 | sn=system_info[i].get('serialnumber')) 25 | result[i] = True 26 | else: 27 | result[i] = False 28 | 29 | return result 30 | 31 | 32 | @shared_task 33 | def cmd_run(asset_name_list, command): 34 | result = salt.cmd_run(tgt=asset_name_list, arg=command) 35 | return result 36 | -------------------------------------------------------------------------------- /apps/tasks/templates/interval/interval_create.html: -------------------------------------------------------------------------------- 1 | {% extends "base/_base.html" %} 2 | {% load bootstrap3 %} 3 | {% load i18n %} 4 | {% load static %} 5 | {% block content %} 6 |
7 |
8 |

{% trans 'Create Interval' %}

9 |
10 |
11 | {# #} 12 | 16 |
17 |
18 |
19 |
20 |
21 |
{% trans 'Create Interval' %} 22 |
23 |
24 |
25 |
26 |
27 | {% csrf_token %} 28 |
29 | {% bootstrap_field form.every layout="horizontal" horizontal_field_class="col-md-7" placeholder="" %} 30 | {% bootstrap_field form.period layout="horizontal" horizontal_field_class="col-md-7" %} 31 |
32 |
33 |
34 |
35 |
36 |
37 | 38 | {% trans 'Cancel' %} 39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 | {% endblock %} 51 | 52 | {% block script %} 53 | 58 | {% endblock %} -------------------------------------------------------------------------------- /apps/tasks/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /apps/tasks/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | 3 | from apps.tasks import views 4 | 5 | app_name = 'tasks' 6 | 7 | urlpatterns = [ 8 | path('crontab/list/', views.CrontabListView.as_view(), name='crontab-list'), 9 | path('crontab/create/', views.CrontabCreateView.as_view(), name='crontab-create'), 10 | path('crontab/update//', views.CrontabUpdateView.as_view(), name='crontab-update'), 11 | path('crontab/delete/', views.CrontabDeleteView.as_view(), name='crontab-delete'), 12 | path('interval/list/', views.IntervalListView.as_view(), name='interval-list'), 13 | path('interval/create/', views.IntervalCreateView.as_view(), name='interval-create'), 14 | path('interval/update//', views.IntervalUpdateView.as_view(), name='interval-update'), 15 | path('interval/delete/', views.IntervalDeleteView.as_view(), name='interval-delete'), 16 | path('task/list/', views.PeriodicTaskListView.as_view(), name='task-list'), 17 | path('task/create/', views.PeriodicTaskCreateView.as_view(), name='task-create'), 18 | path('task/update//', views.PeriodicTaskUpdateView.as_view(), name='task-update'), 19 | path('task/delete/', views.PeriodicTaskDeleteView.as_view(), name='task-delete'), 20 | path('task/result/list/', views.TaskResultListView.as_view(), name='task-result-list'), 21 | ] 22 | -------------------------------------------------------------------------------- /apps/users/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/apps/users/__init__.py -------------------------------------------------------------------------------- /apps/users/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /apps/users/api.py: -------------------------------------------------------------------------------- 1 | from .serializers import UserProfileSerializer 2 | from .models import UserProfile 3 | 4 | from rest_framework import viewsets 5 | 6 | 7 | class UserProfileViewSet(viewsets.ModelViewSet): 8 | queryset = UserProfile.objects.all() 9 | serializer_class = UserProfileSerializer 10 | -------------------------------------------------------------------------------- /apps/users/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class UsersConfig(AppConfig): 5 | name = 'users' 6 | -------------------------------------------------------------------------------- /apps/users/forms.py: -------------------------------------------------------------------------------- 1 | from django import forms 2 | from django.contrib.auth.forms import AuthenticationForm 3 | from django.utils.translation import ugettext_lazy as _ 4 | 5 | from apps.users.models import * 6 | 7 | __all__ = ['UserLoginForm', 'UserForm', 'UserUpdateForm', 'UserProfileUpdateForm'] 8 | 9 | 10 | class UserLoginForm(AuthenticationForm): 11 | username = forms.CharField() 12 | password = forms.CharField(widget=forms.PasswordInput) 13 | 14 | 15 | class UserForm(forms.ModelForm): 16 | class Meta: 17 | model = UserProfile 18 | fields = '__all__' 19 | widgets = { 20 | 'password': forms.PasswordInput(), 21 | } 22 | 23 | 24 | class UserUpdateForm(forms.ModelForm): 25 | password = forms.CharField( 26 | label=_('Password'), 27 | strip=False, 28 | required=False, 29 | widget=forms.PasswordInput, 30 | help_text="Tips: 如果密码不修改,请留空.", 31 | ) 32 | 33 | class Meta: 34 | model = UserProfile 35 | exclude = ['password', 'last_login'] 36 | 37 | 38 | class UserProfileUpdateForm(forms.ModelForm): 39 | class Meta: 40 | model = UserProfile 41 | exclude = ['password', 'is_superuser', 'last_login', 'groups'] 42 | -------------------------------------------------------------------------------- /apps/users/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/apps/users/migrations/__init__.py -------------------------------------------------------------------------------- /apps/users/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | from django.contrib.auth.models import ( 3 | AbstractBaseUser, BaseUserManager, Permission, PermissionsMixin, Group 4 | ) 5 | from django.utils.translation import gettext_lazy as _ 6 | 7 | 8 | # Create your models here. 9 | 10 | 11 | class UserProfileManager(BaseUserManager): 12 | def create_user(self, username, nickname, email, password=None): 13 | """ 14 | Creates and saves a User with the given username, nickname, email and password. 15 | """ 16 | if not username: 17 | raise ValueError('Users must have a name') 18 | 19 | if not nickname: 20 | raise ValueError('Users must have a nickname') 21 | 22 | if not email: 23 | raise ValueError('Users must have an email address') 24 | 25 | user = self.model( 26 | username=username, 27 | nickname=nickname, 28 | email=self.normalize_email(email), 29 | ) 30 | 31 | user.set_password(password) 32 | user.save(using=self._db) 33 | return user 34 | 35 | def create_superuser(self, username, nickname, email, password): 36 | """ 37 | Creates and saves a superuser with the given username, nickname, email, and password. 38 | """ 39 | user = self.create_user(username=username, 40 | nickname=nickname, 41 | password=password, 42 | email=email, 43 | ) 44 | user.is_superuser = True 45 | user.save(using=self._db) 46 | return user 47 | 48 | 49 | class UserProfile(AbstractBaseUser, PermissionsMixin): 50 | username = models.CharField(verbose_name=_('Username'), max_length=64, unique=True) 51 | nickname = models.CharField(verbose_name=_('Nickname'), max_length=64) 52 | email = models.EmailField(verbose_name=_('Email'), max_length=64, unique=True) 53 | is_active = models.BooleanField(default=True, verbose_name=_('Active')) 54 | is_superuser = models.BooleanField(default=False, verbose_name=_('Superuser')) 55 | comment = models.TextField(verbose_name=_('Comment'), blank=True, null=True) 56 | 57 | objects = UserProfileManager() 58 | 59 | USERNAME_FIELD = 'username' 60 | REQUIRED_FIELDS = ['nickname', 'email'] 61 | 62 | class Meta: 63 | db_table = 'UserProfile' 64 | verbose_name = _('User Profile') 65 | verbose_name_plural = _('User Profile') 66 | 67 | def get_full_name(self): 68 | # The user is identified by their email address 69 | return self.email 70 | 71 | def get_user_name(self): 72 | # The user is identified by their email address 73 | return self.username 74 | 75 | def get_short_name(self): 76 | # The user is identified by their email address 77 | return self.nickname 78 | 79 | def __str__(self): # __unicode__ on Python 2 80 | return self.username 81 | 82 | @property 83 | def is_valid(self): 84 | if self.is_active: 85 | return True 86 | return False 87 | 88 | @property 89 | def is_staff(self): 90 | return self.is_superuser 91 | -------------------------------------------------------------------------------- /apps/users/serializers.py: -------------------------------------------------------------------------------- 1 | from rest_framework import serializers 2 | 3 | from .models import UserProfile 4 | 5 | 6 | class UserProfileSerializer(serializers.ModelSerializer): 7 | class Meta: 8 | model = UserProfile 9 | fields = '__all__' 10 | -------------------------------------------------------------------------------- /apps/users/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /apps/users/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | from apps.users import views 3 | 4 | app_name = 'users' 5 | 6 | urlpatterns = [ 7 | path('user/list/', views.UserListView.as_view(), name='user-list'), 8 | path('user/create/', views.UserCreateView.as_view(), name='user-create'), 9 | path('user/update//', views.UserUpdateView.as_view(), name='user-update'), 10 | path('user/delete/', views.UserDeleteView.as_view(), name='user-delete'), 11 | path('role/list/', views.UserRoleListView.as_view(), name='role-list'), 12 | path('role/create/', views.UserRoleCreateView.as_view(), name='role-create'), 13 | path('role/update//', views.UserRoleUpdateView.as_view(), name='role-update'), 14 | path('role/delete/', views.UserRoleDeleteView.as_view(), name='role-delete'), 15 | ] 16 | -------------------------------------------------------------------------------- /apps/utils/auth/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/apps/utils/auth/__init__.py -------------------------------------------------------------------------------- /apps/utils/auth/mixins.py: -------------------------------------------------------------------------------- 1 | from django.contrib.auth.mixins import PermissionRequiredMixin 2 | from django.shortcuts import redirect 3 | from django.conf import settings 4 | 5 | 6 | class LoggedInPermissionsMixin(PermissionRequiredMixin): 7 | def dispatch(self, request, *args, **kwargs): 8 | if not request.user.is_authenticated: 9 | return redirect(settings.LOGIN_URL) 10 | return super().dispatch(request, *args, **kwargs) 11 | -------------------------------------------------------------------------------- /apps/utils/config.ini: -------------------------------------------------------------------------------- 1 | [salt] 2 | url = 3 | user = 4 | password = 5 | 6 | [para] 7 | hostname = 8 | port = 9 | user = 10 | password = 11 | 12 | [file] 13 | src = 14 | dst = -------------------------------------------------------------------------------- /apps/utils/generic/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/apps/utils/generic/__init__.py -------------------------------------------------------------------------------- /apps/utils/generic/jobs.py: -------------------------------------------------------------------------------- 1 | import os 2 | import configparser 3 | 4 | from utils.remote.para import * 5 | 6 | config = configparser.ConfigParser() 7 | BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 8 | config.read(os.path.join(BASE_DIR, 'config.ini')) 9 | file_src = config.get('file', 'src') 10 | file_dst = config.get('file', 'dst') 11 | 12 | 13 | def generate_job_file(data): 14 | with open(file_src + data.get('name'), 'w', newline="\n", encoding='utf-8') as f: 15 | content = data.get('content').replace('\r\n', '\n') 16 | f.write(content) 17 | 18 | 19 | def push_job_file(job_name_list): 20 | para = ParaApi() 21 | for job_name in job_name_list: 22 | para.upload(jobname=job_name) 23 | 24 | para.close() 25 | -------------------------------------------------------------------------------- /apps/utils/generic/shoutcuts.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | def get_object_or_none(model, **kwargs): 3 | try: 4 | obj = model.objects.get(**kwargs) 5 | except model.DoesNotExist: 6 | return None 7 | return obj 8 | 9 | 10 | def get_queryset_or_none(model, **kwargs): 11 | try: 12 | obj_queryset = model.objects.filter(**kwargs) 13 | except model.DoesNotExist: 14 | return None 15 | return obj_queryset 16 | -------------------------------------------------------------------------------- /apps/utils/remote/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/apps/utils/remote/__init__.py -------------------------------------------------------------------------------- /apps/utils/remote/para.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import paramiko 3 | import os 4 | import configparser 5 | 6 | config = configparser.ConfigParser() 7 | BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 8 | config.read(os.path.join(BASE_DIR, 'config.ini')) 9 | para_hostname = config.get('para', 'hostname') 10 | para_port = config.get('para', 'port') 11 | para_user = config.get('para', 'user') 12 | para_password = config.get('para', 'password') 13 | file_src = config.get('file', 'src') 14 | file_dst = config.get('file', 'dst') 15 | 16 | __all__ = ['ParaApi'] 17 | 18 | 19 | class ParaApi: 20 | def __init__(self): 21 | self.hostname = para_hostname 22 | self.port = int(para_port) 23 | self.username = para_user 24 | self.password = para_password 25 | self.__transport = self.connect() 26 | 27 | def connect(self): 28 | transport = paramiko.Transport((self.hostname, self.port)) 29 | transport.connect(username=self.username, password=self.password) 30 | return transport 31 | 32 | def upload(self, jobname): 33 | sftp = paramiko.SFTPClient.from_transport(self.__transport) 34 | print(os.path.join(file_src, jobname), os.path.join(file_dst, jobname)) 35 | sftp.put(os.path.join(file_src, jobname), os.path.join(file_dst, jobname)) 36 | 37 | def cmd(self, command): 38 | ssh = paramiko.SSHClient() 39 | ssh._transport = self.__transport 40 | ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 41 | stdin, stdout, stderr = ssh.exec_command(command) 42 | result = stdout.read().decode('utf-8').strip('\n') 43 | err = stderr.read().decode('utf-8').strip('\n') 44 | return result, err 45 | 46 | def close(self): 47 | self.__transport.close() 48 | 49 | 50 | if __name__ == '__main__': 51 | pass 52 | -------------------------------------------------------------------------------- /docs/img/Crontab列表.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/docs/img/Crontab列表.png -------------------------------------------------------------------------------- /docs/img/Interval列表.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/docs/img/Interval列表.png -------------------------------------------------------------------------------- /docs/img/任务结果.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/docs/img/任务结果.png -------------------------------------------------------------------------------- /docs/img/作业列表.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/docs/img/作业列表.png -------------------------------------------------------------------------------- /docs/img/作业类型.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/docs/img/作业类型.png -------------------------------------------------------------------------------- /docs/img/功能说明.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/docs/img/功能说明.png -------------------------------------------------------------------------------- /docs/img/周期任务.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/docs/img/周期任务.png -------------------------------------------------------------------------------- /docs/img/执行命令.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/docs/img/执行命令.png -------------------------------------------------------------------------------- /docs/img/控制面板.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/docs/img/控制面板.png -------------------------------------------------------------------------------- /docs/img/用户列表.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/docs/img/用户列表.png -------------------------------------------------------------------------------- /docs/img/用户角色.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/docs/img/用户角色.png -------------------------------------------------------------------------------- /docs/img/资产列表.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/docs/img/资产列表.png -------------------------------------------------------------------------------- /docs/img/资产组.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/docs/img/资产组.png -------------------------------------------------------------------------------- /locale/zh_hans/LC_MESSAGES/django.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/locale/zh_hans/LC_MESSAGES/django.mo -------------------------------------------------------------------------------- /manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import os 3 | import sys 4 | 5 | if __name__ == "__main__": 6 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "pingAdmin.settings") 7 | try: 8 | from django.core.management import execute_from_command_line 9 | except ImportError as exc: 10 | raise ImportError( 11 | "Couldn't import Django. Are you sure it's installed and " 12 | "available on your PYTHONPATH environment variable? Did you " 13 | "forget to activate a virtual environment?" 14 | ) from exc 15 | execute_from_command_line(sys.argv) 16 | -------------------------------------------------------------------------------- /pingAdmin/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/pingAdmin/__init__.py -------------------------------------------------------------------------------- /pingAdmin/celery.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | # coding: utf-8 3 | 4 | import os 5 | from celery import Celery, platforms 6 | from django.conf import settings 7 | 8 | # allow Root user 9 | platforms.C_FORCE_ROOT = True 10 | # set the default Django settings module for the 'celery' program. 11 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'pingAdmin.settings') 12 | app = Celery('pingAdmin') 13 | 14 | # Using a string here means the worker will not have to 15 | # pickle the object when using Windows. 16 | app.config_from_object('django.conf:settings') 17 | app.autodiscover_tasks(lambda: settings.INSTALLED_APPS) 18 | 19 | 20 | @app.task(bind=True) 21 | def debug_task(self): 22 | print('Request: {0!r}'.format(self.request)) 23 | -------------------------------------------------------------------------------- /pingAdmin/urls.py: -------------------------------------------------------------------------------- 1 | """pingAdmin URL Configuration 2 | 3 | The `urlpatterns` list routes URLs to views. For more information please see: 4 | https://docs.djangoproject.com/en/2.0/topics/http/urls/ 5 | Examples: 6 | Function views 7 | 1. Add an import: from my_app import views 8 | 2. Add a URL to urlpatterns: path('', views.home, name='home') 9 | Class-based views 10 | 1. Add an import: from other_app.views import Home 11 | 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') 12 | Including another URLconf 13 | 1. Import the include() function: from django.urls import include, path 14 | 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) 15 | """ 16 | from django.contrib import admin 17 | from django.urls import path, include 18 | from django.conf.urls import handler403 19 | 20 | from rest_framework import routers 21 | 22 | from .views import LoginView, LogoutView, IndexView, ProfileView 23 | from apps.assets import api as assets_api 24 | from apps.users import api as users_api 25 | 26 | router = routers.DefaultRouter() 27 | router.register(r'userProfile', users_api.UserProfileViewSet) 28 | router.register(r'assetInfo', assets_api.AssetViewSet) 29 | router.register(r'assetGroup', assets_api.AssetGroupViewSet) 30 | 31 | urlpatterns = [ 32 | path('admin/', admin.site.urls), 33 | path('login/', LoginView.as_view(), name='login'), 34 | path('logout/', LogoutView.as_view(), name='logout'), 35 | path('index/', IndexView.as_view(), name='index'), 36 | path('profile/', ProfileView.as_view(), name='profile'), 37 | 38 | path('assets/', include('apps.assets.urls', namespace='assets')), 39 | path('users/', include('apps.users.urls', namespace='users')), 40 | path('tasks/', include('apps.tasks.urls', namespace='tasks')), 41 | path('jobs/', include('apps.jobs.urls', namespace='jobs')), 42 | 43 | path('403/', handler403, kwargs={'exception': Exception('Permission Denied')}, name='handler403'), 44 | 45 | path('api/v1/', include(router.urls)), 46 | 47 | 48 | ] 49 | -------------------------------------------------------------------------------- /pingAdmin/views.py: -------------------------------------------------------------------------------- 1 | from django.contrib.auth import login as auth_login, logout as auth_logout, authenticate 2 | from django.views.generic import TemplateView, FormView, View 3 | from django.contrib.auth.mixins import LoginRequiredMixin 4 | from django.shortcuts import redirect 5 | from django.urls import reverse_lazy 6 | from django.http import HttpResponse 7 | 8 | from djcelery.models import PeriodicTask 9 | from apps.assets.models import * 10 | from apps.jobs.models import * 11 | from apps.users.models import * 12 | from apps.users.forms import * 13 | 14 | 15 | # Create your views here. 16 | 17 | class LoginView(FormView): 18 | template_name = 'login.html' 19 | form_class = UserLoginForm 20 | success_url = '/index/' 21 | 22 | def post(self, *args, **kwargs): 23 | user_login_form = UserLoginForm(data=self.request.POST) 24 | if user_login_form.is_valid(): 25 | auth_login(self.request, user_login_form.get_user()) 26 | return redirect(self.success_url) 27 | return super().get(self.request, *args, **kwargs) 28 | 29 | 30 | class LogoutView(View): 31 | def get(self, *args, **kwargs): 32 | auth_logout(self.request) 33 | return redirect(reverse_lazy('login')) 34 | 35 | 36 | class IndexView(LoginRequiredMixin, TemplateView): 37 | template_name = 'index.html' 38 | 39 | def get_context_data(self, **kwargs): 40 | context = super().get_context_data() 41 | context['user_obj'] = UserProfile.objects.all() 42 | context['asset_obj'] = AssetInfo.objects.all() 43 | context['job_obj'] = JobInfo.objects.all() 44 | context['task_obj'] = PeriodicTask.objects.all() 45 | return context 46 | 47 | 48 | class ProfileView(LoginRequiredMixin, TemplateView): 49 | template_name = 'profile.html' 50 | 51 | def post(self, *args, **kwargs): 52 | username = self.request.POST.get('username') 53 | password = self.request.POST.get('password') 54 | new_password = self.request.POST.get('new-password') 55 | confirm_password = self.request.POST.get('confirm-password') 56 | user_obj = UserProfile.objects.get(username=username) 57 | print(self.request.POST) 58 | user_form = UserProfileUpdateForm(self.request.POST, instance=user_obj) 59 | 60 | user = authenticate(username=username, password=password) 61 | 62 | if password and new_password: 63 | # 密码校验是否正确 64 | if user: 65 | if new_password == confirm_password: 66 | profile_form = user_form.save(commit=False) 67 | profile_form.set_password(new_password) 68 | profile_form.save() 69 | return HttpResponse(0) 70 | else: 71 | # print(user_form.errors.as_json()) 72 | print("new password is not same as confirm password.") 73 | return HttpResponse(-1) 74 | 75 | else: 76 | print("password check failed") 77 | return HttpResponse(-1) 78 | 79 | # 新密码是否输入 80 | elif password and not new_password: 81 | print("new password is empty.") 82 | return HttpResponse(-1) 83 | 84 | else: 85 | user_form.save() 86 | return HttpResponse(0) 87 | -------------------------------------------------------------------------------- /pingAdmin/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for pingAdmin 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/2.0/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", "pingAdmin.settings") 15 | 16 | application = get_wsgi_application() 17 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | Django==2.1.2 2 | djangorestframework==3.8.2 3 | django-bootstrap3==11.0.0 4 | django-celery==3.2.2 5 | celery-with-redis==3.0 6 | requests==2.20.0 7 | paramiko==2.4.2 -------------------------------------------------------------------------------- /static/css/bootstrap-validator.css: -------------------------------------------------------------------------------- 1 | /** 2 | * BootstrapValidator (http://bootstrapvalidator.com) 3 | * The best jQuery plugin to validate form fields. Designed to use with Bootstrap 3 4 | * 5 | * @author http://twitter.com/nghuuphuoc 6 | * @copyright (c) 2013 - 2014 Nguyen Huu Phuoc 7 | * @license MIT 8 | */ 9 | 10 | .bv-form .help-block { 11 | margin-bottom: 0; 12 | } 13 | .bv-form .tooltip-inner { 14 | text-align: left; 15 | } 16 | .nav-tabs li.bv-tab-success > a { 17 | color: #3c763d; 18 | } 19 | .nav-tabs li.bv-tab-error > a { 20 | color: #a94442; 21 | } 22 | 23 | .bv-form .bv-icon-no-label { 24 | top: 0; 25 | } 26 | 27 | .bv-form .bv-icon-input-group { 28 | top: 0; 29 | z-index: 100; 30 | } -------------------------------------------------------------------------------- /static/css/colors/blue.css: -------------------------------------------------------------------------------- 1 | @import url(https://fonts.googleapis.com/css?family=Rubik:300,400,500,700,900); 2 | /*Theme Colors*/ 3 | /*bootstrap Color*/ 4 | /*Normal Color*/ 5 | /*Border radius*/ 6 | /*Preloader*/ 7 | .preloader { 8 | width: 100%; 9 | height: 100%; 10 | top: 0px; 11 | position: fixed; 12 | z-index: 99999; 13 | background: #fff; 14 | } 15 | .preloader .cssload-speeding-wheel { 16 | position: absolute; 17 | top: calc(50% - 3.5px); 18 | left: calc(50% - 3.5px); 19 | } 20 | /*Just change your choise color here its theme Colors*/ 21 | body { 22 | background: #fff; 23 | } 24 | /*Top Header Part*/ 25 | .logo i { 26 | color: #ffffff; 27 | } 28 | .navbar-header { 29 | background: #2cabe3; 30 | } 31 | .navbar-top-links > li > a { 32 | color: #ffffff; 33 | } 34 | .sidebar .sidebar-head { 35 | background: #ffffff; 36 | } 37 | .sidebar .sidebar-head h3 { 38 | color: #686868; 39 | } 40 | /*Right panel*/ 41 | .right-sidebar .rpanel-title { 42 | background: #2cabe3; 43 | } 44 | /*Bread Crumb*/ 45 | .bg-title .breadcrumb .active { 46 | color: #2cabe3; 47 | } 48 | /*Sidebar*/ 49 | .sidebar { 50 | background: #fff; 51 | box-shadow: 1px 0px 20px rgba(0, 0, 0, 0.08); 52 | } 53 | .sidebar .label-custom { 54 | background: #01c0c8; 55 | } 56 | #side-menu li a { 57 | color: #54667a; 58 | } 59 | #side-menu li a { 60 | color: #54667a; 61 | border-left: 0px solid #fff; 62 | } 63 | #side-menu > li > a:hover, 64 | #side-menu > li > a:focus { 65 | background: rgba(0, 0, 0, 0.07); 66 | } 67 | #side-menu > li > a.active { 68 | background: #2cabe3; 69 | color: #ffffff; 70 | font-weight: 500; 71 | } 72 | #side-menu ul > li > a:hover { 73 | color: #2cabe3; 74 | } 75 | #side-menu ul > li > a.active { 76 | color: #2cabe3; 77 | font-weight: 500; 78 | } 79 | .user-profile .user-pro-body .u-dropdown { 80 | color: #54667a; 81 | } 82 | /*themecolor*/ 83 | .bg-theme { 84 | background-color: #707cd2 !important; 85 | } 86 | .bg-theme-dark { 87 | background-color: #2cabe3 !important; 88 | } 89 | /*Button*/ 90 | .btn-custom { 91 | background: #2cabe3; 92 | border: 1px solid #2cabe3; 93 | color: #ffffff; 94 | } 95 | .btn-custom:hover { 96 | background: #2cabe3; 97 | opacity: 0.8; 98 | color: #ffffff; 99 | border: 1px solid #2cabe3; 100 | } 101 | /*Custom tab*/ 102 | .customtab li.active a, 103 | .customtab li.active a:hover, 104 | .customtab li.active a:focus { 105 | border-bottom: 2px solid #2cabe3; 106 | color: #2cabe3; 107 | } 108 | .tabs-vertical li.active a, 109 | .tabs-vertical li.active a:hover, 110 | .tabs-vertical li.active a:focus { 111 | background: #2cabe3; 112 | border-right: 2px solid #2cabe3; 113 | } 114 | /*Nav-pills*/ 115 | .nav-pills > li.active > a, 116 | .nav-pills > li.active > a:focus, 117 | .nav-pills > li.active > a:hover { 118 | background: #2cabe3; 119 | color: #ffffff; 120 | } 121 | -------------------------------------------------------------------------------- /static/css/colors/megna-dark.css: -------------------------------------------------------------------------------- 1 | @import url(https://fonts.googleapis.com/css?family=Rubik:300,400,500,700,900); 2 | /*Theme Colors*/ 3 | /*bootstrap Color*/ 4 | /*Normal Color*/ 5 | /*Border radius*/ 6 | /*Preloader*/ 7 | .preloader { 8 | width: 100%; 9 | height: 100%; 10 | top: 0px; 11 | position: fixed; 12 | z-index: 99999; 13 | background: #fff; 14 | } 15 | .preloader .cssload-speeding-wheel { 16 | position: absolute; 17 | top: calc(50% - 3.5px); 18 | left: calc(50% - 3.5px); 19 | } 20 | /*Just change your choise color here its theme Colors*/ 21 | body { 22 | background: #2f323e; 23 | } 24 | /*Top Header Part*/ 25 | .logo i { 26 | color: #4c5667; 27 | } 28 | .top-left-part .light-logo { 29 | display: inline-block; 30 | } 31 | .top-left-part .dark-logo { 32 | display: none; 33 | } 34 | .navbar-header { 35 | background: #ffffff; 36 | } 37 | .app-search .form-control, 38 | .app-search .form-control:focus { 39 | border: 1px solid rgba(120, 130, 140, 0.13); 40 | } 41 | .navbar-top-links > li > a { 42 | color: #686868; 43 | } 44 | .bg-title { 45 | background: #f1f2f7; 46 | border-bottom: 1px solid rgba(120, 130, 140, 0.13); 47 | } 48 | /*Right panel*/ 49 | .right-sidebar .rpanel-title { 50 | background: #2cabe3; 51 | } 52 | /*Bread Crumb*/ 53 | .bg-title .breadcrumb .active { 54 | color: #2cabe3; 55 | } 56 | /*Sidebar*/ 57 | .sidebar { 58 | background: #2f323e; 59 | box-shadow: 1px 0px 20px rgba(0, 0, 0, 0.08); 60 | } 61 | .sidebar .label-custom { 62 | background: #01c0c8; 63 | } 64 | #side-menu li a { 65 | color: #97999f; 66 | } 67 | #side-menu li a { 68 | color: #97999f; 69 | border-left: 0px solid #2f323e; 70 | } 71 | #side-menu > li > a:hover, 72 | #side-menu > li > a:focus { 73 | background: rgba(0, 0, 0, 0.07); 74 | } 75 | #side-menu > li > a.active { 76 | background: #2cabe3; 77 | color: #ffffff; 78 | font-weight: 500; 79 | } 80 | #side-menu ul > li > a:hover { 81 | color: #ffffff; 82 | } 83 | #side-menu ul > li > a.active { 84 | color: #ffffff; 85 | font-weight: 500; 86 | } 87 | .user-profile .user-pro-body .u-dropdown { 88 | color: #97999f; 89 | } 90 | /*themecolor*/ 91 | .bg-theme { 92 | background-color: #707cd2 !important; 93 | } 94 | .bg-theme-dark { 95 | background-color: #2cabe3 !important; 96 | } 97 | /*Button*/ 98 | .btn-custom { 99 | background: #2cabe3; 100 | border: 1px solid #2cabe3; 101 | color: #ffffff; 102 | } 103 | .btn-custom:hover { 104 | background: #2cabe3; 105 | opacity: 0.8; 106 | color: #ffffff; 107 | border: 1px solid #2cabe3; 108 | } 109 | /*Custom tab*/ 110 | .customtab li.active a, 111 | .customtab li.active a:hover, 112 | .customtab li.active a:focus { 113 | border-bottom: 2px solid #2cabe3; 114 | color: #2cabe3; 115 | } 116 | .tabs-vertical li.active a, 117 | .tabs-vertical li.active a:hover, 118 | .tabs-vertical li.active a:focus { 119 | background: #2cabe3; 120 | border-right: 2px solid #2cabe3; 121 | } 122 | /*Nav-pills*/ 123 | .nav-pills > li.active > a, 124 | .nav-pills > li.active > a:focus, 125 | .nav-pills > li.active > a:hover { 126 | background: #2cabe3; 127 | color: #ffffff; 128 | } 129 | -------------------------------------------------------------------------------- /static/css/colors/megna.css: -------------------------------------------------------------------------------- 1 | @import url(https://fonts.googleapis.com/css?family=Rubik:300,400,500,700,900); 2 | /*Theme Colors*/ 3 | /*bootstrap Color*/ 4 | /*Normal Color*/ 5 | /*Border radius*/ 6 | /*Preloader*/ 7 | .preloader { 8 | width: 100%; 9 | height: 100%; 10 | top: 0px; 11 | position: fixed; 12 | z-index: 99999; 13 | background: #fff; 14 | } 15 | .preloader .cssload-speeding-wheel { 16 | position: absolute; 17 | top: calc(50% - 3.5px); 18 | left: calc(50% - 3.5px); 19 | } 20 | /*Just change your choise color here its theme Colors*/ 21 | body { 22 | background: #fff; 23 | } 24 | /*Top Header Part*/ 25 | .logo i { 26 | color: #4c5667; 27 | } 28 | .top-left-part .light-logo { 29 | display: inline-block; 30 | } 31 | .top-left-part .dark-logo { 32 | display: none; 33 | } 34 | .navbar-header { 35 | background: #fff; 36 | /*box-shadow: 1px 0 10px rgba(0, 0, 0, 0.1);*/ 37 | border-bottom: 1px solid rgba(120, 130, 140, 0.13); 38 | } 39 | .navbar-top-links > li > a { 40 | color: #686868; 41 | } 42 | .sidebar .sidebar-head { 43 | background: #ffffff; 44 | } 45 | .sidebar .sidebar-head h3 { 46 | color: #686868; 47 | } 48 | /*Right panel*/ 49 | .right-sidebar .rpanel-title { 50 | background: #ff7676; 51 | } 52 | /*Bread Crumb*/ 53 | .bg-title .breadcrumb .active { 54 | color: #ff7676; 55 | } 56 | /*Sidebar*/ 57 | .sidebar { 58 | background: #fff; 59 | box-shadow: 1px 0px 20px rgba(0, 0, 0, 0.08); 60 | } 61 | .sidebar .label-custom { 62 | background: #01c0c8; 63 | } 64 | #side-menu li a { 65 | color: #54667a; 66 | } 67 | #side-menu li a { 68 | color: #54667a; 69 | border-left: 0px solid #fff; 70 | } 71 | #side-menu > li > a:hover, 72 | #side-menu > li > a:focus { 73 | background: rgba(0, 0, 0, 0.07); 74 | } 75 | #side-menu > li > a.active { 76 | background: #ff7676; 77 | color: #ffffff; 78 | font-weight: 500; 79 | } 80 | #side-menu ul > li > a:hover { 81 | color: #ff7676; 82 | } 83 | #side-menu ul > li > a.active { 84 | color: #ff7676; 85 | font-weight: 500; 86 | } 87 | .user-profile .user-pro-body .u-dropdown { 88 | color: #54667a; 89 | } 90 | /*themecolor*/ 91 | .bg-theme { 92 | background-color: #707cd2 !important; 93 | } 94 | .bg-theme-dark { 95 | background-color: #ff7676 !important; 96 | } 97 | /*Button*/ 98 | .btn-custom { 99 | background: #ff7676; 100 | border: 1px solid #ff7676; 101 | color: #ffffff; 102 | } 103 | .btn-custom:hover { 104 | background: #ff7676; 105 | opacity: 0.8; 106 | color: #ffffff; 107 | border: 1px solid #ff7676; 108 | } 109 | /*Custom tab*/ 110 | .customtab li.active a, 111 | .customtab li.active a:hover, 112 | .customtab li.active a:focus { 113 | border-bottom: 2px solid #ff7676; 114 | color: #ff7676; 115 | } 116 | .tabs-vertical li.active a, 117 | .tabs-vertical li.active a:hover, 118 | .tabs-vertical li.active a:focus { 119 | background: #ff7676; 120 | border-right: 2px solid #ff7676; 121 | } 122 | /*Nav-pills*/ 123 | .nav-pills > li.active > a, 124 | .nav-pills > li.active > a:focus, 125 | .nav-pills > li.active > a:hover { 126 | background: #ff7676; 127 | color: #ffffff; 128 | } 129 | -------------------------------------------------------------------------------- /static/css/icons/material-design-iconic-font/fonts/Material-Design-Iconic-Font.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/css/icons/material-design-iconic-font/fonts/Material-Design-Iconic-Font.eot -------------------------------------------------------------------------------- /static/css/icons/material-design-iconic-font/fonts/Material-Design-Iconic-Font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/css/icons/material-design-iconic-font/fonts/Material-Design-Iconic-Font.ttf -------------------------------------------------------------------------------- /static/css/icons/material-design-iconic-font/fonts/Material-Design-Iconic-Font.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/css/icons/material-design-iconic-font/fonts/Material-Design-Iconic-Font.woff -------------------------------------------------------------------------------- /static/css/icons/material-design-iconic-font/fonts/Material-Design-Iconic-Font.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/css/icons/material-design-iconic-font/fonts/Material-Design-Iconic-Font.woff2 -------------------------------------------------------------------------------- /static/css/icons/material-design-iconic-font/fonts/materialdesignicons-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/css/icons/material-design-iconic-font/fonts/materialdesignicons-webfont.eot -------------------------------------------------------------------------------- /static/css/icons/material-design-iconic-font/fonts/materialdesignicons-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/css/icons/material-design-iconic-font/fonts/materialdesignicons-webfont.ttf -------------------------------------------------------------------------------- /static/css/icons/material-design-iconic-font/fonts/materialdesignicons-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/css/icons/material-design-iconic-font/fonts/materialdesignicons-webfont.woff -------------------------------------------------------------------------------- /static/css/icons/material-design-iconic-font/fonts/materialdesignicons-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/css/icons/material-design-iconic-font/fonts/materialdesignicons-webfont.woff2 -------------------------------------------------------------------------------- /static/css/pingAdmin.css: -------------------------------------------------------------------------------- 1 | /* Custom Logo Style */ 2 | .logo i { 3 | font-size: 24px; 4 | border:1px solid #EAEAEA; 5 | padding:5px 6px; 6 | border-radius:50%; 7 | margin-top: 15px; 8 | margin-right: -5px; 9 | } 10 | 11 | /* Custom Header Style */ 12 | .custom-h2 { 13 | position:relative; 14 | min-height:1px; 15 | padding-right:15px; 16 | padding-left:15px; 17 | } 18 | 19 | /* Custom Default Buttion Style */ 20 | .btn-default, .btn-default.disabled, .btn-default:hover { 21 | background: #fff; 22 | height: 38px; 23 | } 24 | 25 | /* Custom Default Aside Style */ 26 | .left-aside { 27 | width: 35%; 28 | /*height: 450px;*/ 29 | height: 100%; 30 | margin-bottom: -20px; 31 | } 32 | 33 | .right-aside { 34 | margin-left: 35%; 35 | /*height: 450px;*/ 36 | height: 100%; 37 | margin-bottom: -20px; 38 | } 39 | /* Custom Bootstrap-select Style */ 40 | .bootstrap-select.btn-group .dropdown-menu { 41 | z-index: 10; 42 | } 43 | /* Custom Switchery Style */ 44 | .switchery-small{ 45 | margin-top: 5px; 46 | } 47 | /* Custom DataTables Style */ 48 | .dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover { 49 | color: #fff !important; 50 | border: 1px solid #2cabe3; 51 | background-color: #2cabe3; 52 | } 53 | 54 | .dataTables_wrapper .dataTables_paginate .paginate_button:hover { 55 | color: white !important; 56 | border: 1px solid #ddd; 57 | background-color: #ddd; 58 | } 59 | 60 | .dataTables_wrapper .dataTables_paginate .paginate_button.current:active, .dataTables_wrapper .dataTables_paginate .paginate_button:active{ 61 | background-color: #1a92c6; 62 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #1a92c6), color-stop(100%, #1a92c6)); 63 | background: -webkit-linear-gradient(top, #1a92c6 0%, #1a92c6 100%); 64 | background: -moz-linear-gradient(top, #1a92c6 0%, #1a92c6 100%); 65 | background: -ms-linear-gradient(top, #1a92c6 0%, #1a92c6 100%); 66 | background: -o-linear-gradient(top, #1a92c6 0%, #1a92c6 100%); 67 | background: linear-gradient(to bottom, #1a92c6 0%, #1a92c6 100%); 68 | box-shadow: inset 0 0 1px #1a92c6 69 | } 70 | 71 | /* Custom SweetAlert Style */ 72 | .sweet-alert .la-ball-fall { 73 | margin-top: -7px; 74 | margin-left: -33px; 75 | } 76 | .sweet-alert button.confirm[disabled] { 77 | color: rgba(85,172,238,0.5) 78 | } 79 | 80 | .sweet-alert .sa-icon:not(.sa-custom) { 81 | transform: scale(0.72); 82 | margin-bottom: -2px; 83 | margin-top: 20px; 84 | } 85 | 86 | .sweet-alert .sa-button-container { 87 | background-color: #f5f8fa; 88 | border-top: 1px solid #e1e8ed; 89 | box-shadow: 0px -1px 0px white; 90 | margin: -25px; 91 | margin-top: 0; 92 | } 93 | 94 | /* Custom CodeMirror Style */ 95 | .CodeMirror { 96 | border: 1px solid #cdcdcd; 97 | box-shadow: none; 98 | } 99 | -------------------------------------------------------------------------------- /static/css/spinners.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | .preloader{ 4 | position: relative; 5 | margin: 0 auto; 6 | width: 100px; 7 | } 8 | .preloader:before{ 9 | content: ''; 10 | display: block; 11 | padding-top: 100%; 12 | } 13 | .circular { 14 | animation: rotate 2s linear infinite; 15 | height: 50px; 16 | transform-origin: center center; 17 | width: 50px; 18 | position: absolute; 19 | top: 0; 20 | bottom: 0; 21 | left: 0; 22 | right: 0; 23 | margin: auto; 24 | } 25 | .path { 26 | stroke-dasharray: 1, 200; 27 | stroke-dashoffset: 0; 28 | animation: dash 1.5s ease-in-out infinite, color 6s ease-in-out infinite; 29 | stroke-linecap: round; 30 | } 31 | @keyframes rotate { 32 | 100% { 33 | transform: rotate(360deg); 34 | } 35 | } 36 | 37 | @keyframes dash { 38 | 0% { 39 | stroke-dasharray: 1, 200; 40 | stroke-dashoffset: 0; 41 | } 42 | 50% { 43 | stroke-dasharray: 89, 200; 44 | stroke-dashoffset: -35px; 45 | } 46 | 100% { 47 | stroke-dasharray: 89, 200; 48 | stroke-dashoffset: -124px; 49 | } 50 | } 51 | 52 | @keyframes color { 53 | 100%, 54 | 0% { 55 | stroke: #d62d20; 56 | } 57 | 40% { 58 | stroke: #0057e7; 59 | } 60 | 66% { 61 | stroke: #008744; 62 | } 63 | 80%, 64 | 90% { 65 | stroke: #ffa700; 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /static/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /static/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /static/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /static/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /static/images/base/admin-logo-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/images/base/admin-logo-dark.png -------------------------------------------------------------------------------- /static/images/base/admin-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/images/base/admin-logo.png -------------------------------------------------------------------------------- /static/images/base/admin-text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/images/base/admin-text.png -------------------------------------------------------------------------------- /static/images/base/busy.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/images/base/busy.gif -------------------------------------------------------------------------------- /static/images/base/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/images/base/favicon.png -------------------------------------------------------------------------------- /static/images/base/headline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/images/base/headline.png -------------------------------------------------------------------------------- /static/images/base/login-register.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/images/base/login-register.jpg -------------------------------------------------------------------------------- /static/images/profiles/profile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/images/profiles/profile.jpg -------------------------------------------------------------------------------- /static/images/users/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/images/users/1.jpg -------------------------------------------------------------------------------- /static/images/users/varun.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/images/users/varun.jpg -------------------------------------------------------------------------------- /static/js/custom.min.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function(){"use strict";var e=$("body");$(function(){$(".preloader").fadeOut(),$("#side-menu").metisMenu()}),$(".open-close").on("click",function(){e.toggleClass("show-sidebar").toggleClass("hide-sidebar"),$(".sidebar-head .open-close i").toggleClass("ti-menu")}),$(".right-side-toggle").on("click",function(){$(".right-sidebar").slideDown(50).toggleClass("shw-rside"),$(".fxhdr").on("click",function(){e.toggleClass("fix-header")}),$(".fxsdr").on("click",function(){e.toggleClass("fix-sidebar")});var i=$(".fxhdr");e.hasClass("fix-header")?i.attr("checked",!0):i.attr("checked",!1)}),$(function(){var i=function(){var i=60,l=window.innerWidth>0?window.innerWidth:this.screen.width,s=(window.innerHeight>0?window.innerHeight:this.screen.height)-1;768>l?($("div.navbar-collapse").addClass("collapse"),i=100):$("div.navbar-collapse").removeClass("collapse"),1170>l?(e.addClass("content-wrapper"),$(".sidebar-nav, .slimScrollDiv").css("overflow-x","visible").parent().css("overflow","visible")):e.removeClass("content-wrapper"),s-=i,1>s&&(s=1),s>i&&$("#page-wrapper").css("min-height",s+"px")},l=window.location,s=$("ul.nav a").filter(function(){return this.href===l||0===l.href.indexOf(this.href)}).addClass("active").parent().parent().addClass("in").parent();s.is("li")&&s.addClass("active"),$(window).ready(i),$(window).bind("resize",i)}),function(e,i,l){var s='[data-perform="panel-collapse"]',n='[data-perform="panel-dismiss"]';e(s).each(function(){var i={toggle:!1},l=e(this).closest(".panel"),s=l.find(".panel-wrapper"),n=e(this).children("i");s.length||(s=l.children(".panel-heading").nextAll().wrapAll("
").parent().addClass("panel-wrapper"),i={}),s.collapse(i).on("hide.bs.collapse",function(){n.removeClass("ti-minus").addClass("ti-plus")}).on("show.bs.collapse",function(){n.removeClass("ti-plus").addClass("ti-minus")})}),e(l).on("click",s,function(i){i.preventDefault();var l=e(this).closest(".panel"),s=l.find(".panel-wrapper");s.collapse("toggle")}),e(l).on("click",n,function(i){function s(){var i=l.parent();l.remove(),i.filter(function(){return e(this).is('[class*="col-"]')&&0===e(this).children("*").length}).remove()}i.preventDefault();var l=e(this).closest(".panel");s()})}(jQuery,window,document),$(function(){$('[data-toggle="tooltip"]').tooltip()}),$(function(){$('[data-toggle="popover"]').popover()}),$(".list-task li label").on("click",function(){$(this).toggleClass("task-done")}),$(".settings_box a").on("click",function(){$("ul.theme_color").toggleClass("theme_block")}),$(".collapseble").on("click",function(){$(".collapseblebox").fadeToggle(350)}),$(".slimscrollright").slimScroll({height:"100%",position:"right",size:"5px",color:"#dcdcdc"}),$(".slimscrollsidebar").slimScroll({height:"100%",position:"left",size:"6px",color:"rgba(0,0,0,0.5)"}),$(".chat-list").slimScroll({height:"100%",position:"right",size:"0px",color:"#dcdcdc"}),e.trigger("resize"),$(".visited li a").on("click",function(e){$(".visited li").removeClass("active");var i=$(this).parent();i.hasClass("active")||i.addClass("active"),e.preventDefault()}),$("#to-recover").on("click",function(){$("#loginform").slideUp(),$("#recoverform").fadeIn()}),$(".navbar-toggle").on("click",function(){$(".navbar-toggle i").toggleClass("ti-menu").addClass("ti-close")})}); -------------------------------------------------------------------------------- /static/js/footable-init.js: -------------------------------------------------------------------------------- 1 | 2 | $(window).on('load', function() { 3 | // Pagination 4 | // ----------------------------------------------------------------- 5 | var $pagination = $('#foo_pagination'), 6 | $showEntries = $('#foo_show_entries'), 7 | $search = $('#foo_search'); 8 | $pagination.footable(); 9 | $showEntries.change(function (e) { 10 | e.preventDefault(); 11 | var pageSize = $(this).val(); 12 | $pagination.data('page-size', pageSize); 13 | $pagination.trigger('footable_initialized'); 14 | }); 15 | 16 | // Search input 17 | $search.on('input', function (e) { 18 | e.preventDefault(); 19 | $pagination.trigger('footable_filter', {filter: $(this).val()}); 20 | }); 21 | }); 22 | -------------------------------------------------------------------------------- /static/js/pingAdmin.js: -------------------------------------------------------------------------------- 1 | function initSwitchery() { 2 | var elems = Array.prototype.slice.call(document.querySelectorAll('.js-switch')); 3 | $('.js-switch').each(function() { 4 | new Switchery($(this)[0], $(this).data()); 5 | }); 6 | } 7 | 8 | function initTableiCheck() { 9 | $('#checkAll, #checkItem').iCheck({ 10 | handle : 'checkbox', 11 | checkboxClass : 'icheckbox_square-blue', 12 | }); 13 | $('#checkAll').on('ifChecked ifUnchecked', function(event){ 14 | if (event.type === 'ifChecked') { 15 | $('.checkItem').iCheck('check'); 16 | } else { 17 | $('.checkItem').iCheck('uncheck'); 18 | } 19 | }); 20 | } 21 | 22 | $(document).ready(function() { 23 | initSwitchery(); 24 | initFormValid(); 25 | initTableiCheck(); 26 | }); 27 | -------------------------------------------------------------------------------- /static/js/validator-init.js: -------------------------------------------------------------------------------- 1 | function initFormValid() { 2 | $("#command_form").bootstrapValidator({ 3 | live: 'disabled', 4 | submitButtons: '#submit', 5 | feedbackIcons: { 6 | valid: 'glyphicon glyphicon-ok', 7 | invalid: 'glyphicon glyphicon-remove', 8 | validating: 'glyphicon glyphicon-refresh' 9 | }, 10 | fields: { 11 | 'assets[]': { 12 | validators: { 13 | notEmpty: { 14 | message: '* 资产与资产组必须选择一项' 15 | }, 16 | } 17 | }, 18 | 'groups[]': { 19 | validators: { 20 | notEmpty: { 21 | message: '* 资产与资产组必须选择一项' 22 | } 23 | } 24 | }, 25 | modules: { 26 | validators: { 27 | notEmpty: { 28 | message: '* 请填写该字段' 29 | } 30 | } 31 | }, 32 | content: { 33 | validators: { 34 | notEmpty: { 35 | message: '* 请填写该字段' 36 | } 37 | } 38 | }, 39 | sls: { 40 | validators: { 41 | notEmpty: { 42 | message: '* 请填写该字段' 43 | } 44 | } 45 | }, 46 | scripts: { 47 | validators: { 48 | notEmpty: { 49 | message: '* 请填写该字段' 50 | } 51 | } 52 | }, 53 | } 54 | }); 55 | } -------------------------------------------------------------------------------- /static/plugins/codemirror/css/dracula.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Name: dracula 4 | Author: Michael Kaminsky (http://github.com/mkaminsky11) 5 | 6 | Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme) 7 | 8 | */ 9 | 10 | 11 | .cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters { 12 | background-color: #282a36 !important; 13 | color: #f8f8f2 !important; 14 | border: none; 15 | } 16 | .cm-s-dracula .CodeMirror-gutters { color: #282a36; } 17 | .cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; } 18 | .cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; } 19 | .cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); } 20 | .cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); } 21 | .cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); } 22 | .cm-s-dracula span.cm-comment { color: #6272a4; } 23 | .cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; } 24 | .cm-s-dracula span.cm-number { color: #bd93f9; } 25 | .cm-s-dracula span.cm-variable { color: #50fa7b; } 26 | .cm-s-dracula span.cm-variable-2 { color: white; } 27 | .cm-s-dracula span.cm-def { color: #50fa7b; } 28 | .cm-s-dracula span.cm-operator { color: #ff79c6; } 29 | .cm-s-dracula span.cm-keyword { color: #ff79c6; } 30 | .cm-s-dracula span.cm-atom { color: #bd93f9; } 31 | .cm-s-dracula span.cm-meta { color: #f8f8f2; } 32 | .cm-s-dracula span.cm-tag { color: #ff79c6; } 33 | .cm-s-dracula span.cm-attribute { color: #50fa7b; } 34 | .cm-s-dracula span.cm-qualifier { color: #50fa7b; } 35 | .cm-s-dracula span.cm-property { color: #66d9ef; } 36 | .cm-s-dracula span.cm-builtin { color: #50fa7b; } 37 | .cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; } 38 | 39 | .cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); } 40 | .cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } 41 | -------------------------------------------------------------------------------- /static/plugins/codemirror/css/eclipse.css: -------------------------------------------------------------------------------- 1 | .cm-s-eclipse span.cm-meta { color: #FF1717; } 2 | .cm-s-eclipse span.cm-keyword { line-height: 1em; font-weight: bold; color: #7F0055; } 3 | .cm-s-eclipse span.cm-atom { color: #219; } 4 | .cm-s-eclipse span.cm-number { color: #164; } 5 | .cm-s-eclipse span.cm-def { color: #00f; } 6 | .cm-s-eclipse span.cm-variable { color: black; } 7 | .cm-s-eclipse span.cm-variable-2 { color: #0000C0; } 8 | .cm-s-eclipse span.cm-variable-3 { color: #0000C0; } 9 | .cm-s-eclipse span.cm-property { color: black; } 10 | .cm-s-eclipse span.cm-operator { color: black; } 11 | .cm-s-eclipse span.cm-comment { color: #3F7F5F; } 12 | .cm-s-eclipse span.cm-string { color: #2A00FF; } 13 | .cm-s-eclipse span.cm-string-2 { color: #f50; } 14 | .cm-s-eclipse span.cm-qualifier { color: #555; } 15 | .cm-s-eclipse span.cm-builtin { color: #30a; } 16 | .cm-s-eclipse span.cm-bracket { color: #cc7; } 17 | .cm-s-eclipse span.cm-tag { color: #170; } 18 | .cm-s-eclipse span.cm-attribute { color: #00c; } 19 | .cm-s-eclipse span.cm-link { color: #219; } 20 | .cm-s-eclipse span.cm-error { color: #f00; } 21 | 22 | .cm-s-eclipse .CodeMirror-activeline-background { background: #e8f2ff; } 23 | .cm-s-eclipse .CodeMirror-matchingbracket { outline:1px solid grey; color:black !important; } 24 | -------------------------------------------------------------------------------- /static/plugins/datatables/css/buttons.bootstrap.min.css: -------------------------------------------------------------------------------- 1 | @keyframes dtb-spinner{100%{transform:rotate(360deg)}}@-o-keyframes dtb-spinner{100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes dtb-spinner{100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dtb-spinner{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes dtb-spinner{100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}div.dt-button-info{position:fixed;top:50%;left:50%;width:400px;margin-top:-100px;margin-left:-200px;background-color:white;border:2px solid #111;box-shadow:3px 3px 8px rgba(0,0,0,0.3);border-radius:3px;text-align:center;z-index:21}div.dt-button-info h2{padding:0.5em;margin:0;font-weight:normal;border-bottom:1px solid #ddd;background-color:#f3f3f3}div.dt-button-info>div{padding:1em}ul.dt-button-collection.dropdown-menu{display:block;z-index:2002;-webkit-column-gap:8px;-moz-column-gap:8px;-ms-column-gap:8px;-o-column-gap:8px;column-gap:8px}ul.dt-button-collection.dropdown-menu.fixed{position:fixed;top:50%;left:50%;margin-left:-75px;border-radius:0}ul.dt-button-collection.dropdown-menu.fixed.two-column{margin-left:-150px}ul.dt-button-collection.dropdown-menu.fixed.three-column{margin-left:-225px}ul.dt-button-collection.dropdown-menu.fixed.four-column{margin-left:-300px}ul.dt-button-collection.dropdown-menu>*{-webkit-column-break-inside:avoid;break-inside:avoid}ul.dt-button-collection.dropdown-menu.two-column{width:300px;padding-bottom:1px;-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2}ul.dt-button-collection.dropdown-menu.three-column{width:450px;padding-bottom:1px;-webkit-column-count:3;-moz-column-count:3;-ms-column-count:3;-o-column-count:3;column-count:3}ul.dt-button-collection.dropdown-menu.four-column{width:600px;padding-bottom:1px;-webkit-column-count:4;-moz-column-count:4;-ms-column-count:4;-o-column-count:4;column-count:4}ul.dt-button-collection.dropdown-menu .dt-button{border-radius:0}div.dt-button-background{position:fixed;top:0;left:0;width:100%;height:100%;z-index:2001}@media screen and (max-width: 767px){div.dt-buttons{float:none;width:100%;text-align:center;margin-bottom:0.5em}div.dt-buttons a.btn{float:none}}div.dt-buttons button.btn.processing,div.dt-buttons div.btn.processing,div.dt-buttons a.btn.processing{color:rgba(0,0,0,0.2)}div.dt-buttons button.btn.processing:after,div.dt-buttons div.btn.processing:after,div.dt-buttons a.btn.processing:after{position:absolute;top:50%;left:50%;width:16px;height:16px;margin:-8px 0 0 -8px;box-sizing:border-box;display:block;content:' ';border:2px solid #282828;border-radius:50%;border-left-color:transparent;border-right-color:transparent;animation:dtb-spinner 1500ms infinite linear;-o-animation:dtb-spinner 1500ms infinite linear;-ms-animation:dtb-spinner 1500ms infinite linear;-webkit-animation:dtb-spinner 1500ms infinite linear;-moz-animation:dtb-spinner 1500ms infinite linear} 2 | -------------------------------------------------------------------------------- /static/plugins/datatables/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);if(!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){var 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:"dt-button-collection dropdown-menu",button:{tag:"li",className:"dt-button",active:"active",disabled:"disabled"},buttonLiner:{tag:"a",className:""}}}});a.ext.buttons.collection.text=function(a){return a.i18n("buttons.collection",'Collection ')};return a.Buttons}); 7 | -------------------------------------------------------------------------------- /static/plugins/datetimepicker/js/bootstrap-datetimepicker.zh-CN.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Simplified Chinese translation for bootstrap-datetimepicker 3 | * Yuan Cheung 4 | */ 5 | ;(function($){ 6 | $.fn.datetimepicker.dates['zh-CN'] = { 7 | days: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"], 8 | daysShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六", "周日"], 9 | daysMin: ["日", "一", "二", "三", "四", "五", "六", "日"], 10 | months: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], 11 | monthsShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"], 12 | today: "今天", 13 | suffix: [], 14 | meridiem: ["上午", "下午"] 15 | }; 16 | }(jQuery)); 17 | -------------------------------------------------------------------------------- /static/plugins/footable/css/fonts/footable.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/footable/css/fonts/footable.eot -------------------------------------------------------------------------------- /static/plugins/footable/css/fonts/footable.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/footable/css/fonts/footable.ttf -------------------------------------------------------------------------------- /static/plugins/footable/css/fonts/footable.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/footable/css/fonts/footable.woff -------------------------------------------------------------------------------- /static/plugins/icheck/skins/all.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin skins 2 | ----------------------------------- */ 3 | @import url("minimal/_all.css"); 4 | /* 5 | @import url("minimal/minimal.css"); 6 | @import url("minimal/red.css"); 7 | @import url("minimal/green.css"); 8 | @import url("minimal/blue.css"); 9 | @import url("minimal/aero.css"); 10 | @import url("minimal/grey.css"); 11 | @import url("minimal/orange.css"); 12 | @import url("minimal/yellow.css"); 13 | @import url("minimal/pink.css"); 14 | @import url("minimal/purple.css"); 15 | */ 16 | 17 | @import url("square/_all.css"); 18 | /* 19 | @import url("square/square.css"); 20 | @import url("square/red.css"); 21 | @import url("square/green.css"); 22 | @import url("square/blue.css"); 23 | @import url("square/aero.css"); 24 | @import url("square/grey.css"); 25 | @import url("square/orange.css"); 26 | @import url("square/yellow.css"); 27 | @import url("square/pink.css"); 28 | @import url("square/purple.css"); 29 | */ 30 | 31 | @import url("flat/_all.css"); 32 | /* 33 | @import url("flat/flat.css"); 34 | @import url("flat/red.css"); 35 | @import url("flat/green.css"); 36 | @import url("flat/blue.css"); 37 | @import url("flat/aero.css"); 38 | @import url("flat/grey.css"); 39 | @import url("flat/orange.css"); 40 | @import url("flat/yellow.css"); 41 | @import url("flat/pink.css"); 42 | @import url("flat/purple.css"); 43 | */ 44 | 45 | @import url("line/_all.css"); 46 | /* 47 | @import url("line/line.css"); 48 | @import url("line/red.css"); 49 | @import url("line/green.css"); 50 | @import url("line/blue.css"); 51 | @import url("line/aero.css"); 52 | @import url("line/grey.css"); 53 | @import url("line/orange.css"); 54 | @import url("line/yellow.css"); 55 | @import url("line/pink.css"); 56 | @import url("line/purple.css"); 57 | */ 58 | 59 | @import url("polaris/polaris.css"); 60 | 61 | @import url("futurico/futurico.css"); -------------------------------------------------------------------------------- /static/plugins/icheck/skins/flat/aero.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Flat skin, aero 2 | ----------------------------------- */ 3 | .icheckbox_flat-aero, 4 | .iradio_flat-aero { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 20px; 11 | height: 20px; 12 | background: url(aero.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_flat-aero { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_flat-aero.checked { 21 | background-position: -22px 0; 22 | } 23 | .icheckbox_flat-aero.disabled { 24 | background-position: -44px 0; 25 | cursor: default; 26 | } 27 | .icheckbox_flat-aero.checked.disabled { 28 | background-position: -66px 0; 29 | } 30 | 31 | .iradio_flat-aero { 32 | background-position: -88px 0; 33 | } 34 | .iradio_flat-aero.checked { 35 | background-position: -110px 0; 36 | } 37 | .iradio_flat-aero.disabled { 38 | background-position: -132px 0; 39 | cursor: default; 40 | } 41 | .iradio_flat-aero.checked.disabled { 42 | background-position: -154px 0; 43 | } 44 | 45 | /* HiDPI support */ 46 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 47 | .icheckbox_flat-aero, 48 | .iradio_flat-aero { 49 | background-image: url(aero@2x.png); 50 | -webkit-background-size: 176px 22px; 51 | background-size: 176px 22px; 52 | } 53 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/flat/aero.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/flat/aero.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/flat/aero@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/flat/aero@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/flat/blue.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Flat skin, blue 2 | ----------------------------------- */ 3 | .icheckbox_flat-blue, 4 | .iradio_flat-blue { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 20px; 11 | height: 20px; 12 | background: url(blue.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_flat-blue { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_flat-blue.checked { 21 | background-position: -22px 0; 22 | } 23 | .icheckbox_flat-blue.disabled { 24 | background-position: -44px 0; 25 | cursor: default; 26 | } 27 | .icheckbox_flat-blue.checked.disabled { 28 | background-position: -66px 0; 29 | } 30 | 31 | .iradio_flat-blue { 32 | background-position: -88px 0; 33 | } 34 | .iradio_flat-blue.checked { 35 | background-position: -110px 0; 36 | } 37 | .iradio_flat-blue.disabled { 38 | background-position: -132px 0; 39 | cursor: default; 40 | } 41 | .iradio_flat-blue.checked.disabled { 42 | background-position: -154px 0; 43 | } 44 | 45 | /* HiDPI support */ 46 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 47 | .icheckbox_flat-blue, 48 | .iradio_flat-blue { 49 | background-image: url(blue@2x.png); 50 | -webkit-background-size: 176px 22px; 51 | background-size: 176px 22px; 52 | } 53 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/flat/blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/flat/blue.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/flat/blue@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/flat/blue@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/flat/flat.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin flat skin, black 2 | ----------------------------------- */ 3 | .icheckbox_flat, 4 | .iradio_flat { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 20px; 11 | height: 20px; 12 | background: url(flat.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_flat { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_flat.checked { 21 | background-position: -22px 0; 22 | } 23 | .icheckbox_flat.disabled { 24 | background-position: -44px 0; 25 | cursor: default; 26 | } 27 | .icheckbox_flat.checked.disabled { 28 | background-position: -66px 0; 29 | } 30 | 31 | .iradio_flat { 32 | background-position: -88px 0; 33 | } 34 | .iradio_flat.checked { 35 | background-position: -110px 0; 36 | } 37 | .iradio_flat.disabled { 38 | background-position: -132px 0; 39 | cursor: default; 40 | } 41 | .iradio_flat.checked.disabled { 42 | background-position: -154px 0; 43 | } 44 | 45 | /* HiDPI support */ 46 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 47 | .icheckbox_flat, 48 | .iradio_flat { 49 | background-image: url(flat@2x.png); 50 | -webkit-background-size: 176px 22px; 51 | background-size: 176px 22px; 52 | } 53 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/flat/flat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/flat/flat.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/flat/flat@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/flat/flat@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/flat/green.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Flat skin, green 2 | ----------------------------------- */ 3 | .icheckbox_flat-green, 4 | .iradio_flat-green { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 20px; 11 | height: 20px; 12 | background: url(green.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_flat-green { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_flat-green.checked { 21 | background-position: -22px 0; 22 | } 23 | .icheckbox_flat-green.disabled { 24 | background-position: -44px 0; 25 | cursor: default; 26 | } 27 | .icheckbox_flat-green.checked.disabled { 28 | background-position: -66px 0; 29 | } 30 | 31 | .iradio_flat-green { 32 | background-position: -88px 0; 33 | } 34 | .iradio_flat-green.checked { 35 | background-position: -110px 0; 36 | } 37 | .iradio_flat-green.disabled { 38 | background-position: -132px 0; 39 | cursor: default; 40 | } 41 | .iradio_flat-green.checked.disabled { 42 | background-position: -154px 0; 43 | } 44 | 45 | /* HiDPI support */ 46 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 47 | .icheckbox_flat-green, 48 | .iradio_flat-green { 49 | background-image: url(green@2x.png); 50 | -webkit-background-size: 176px 22px; 51 | background-size: 176px 22px; 52 | } 53 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/flat/green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/flat/green.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/flat/green@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/flat/green@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/flat/grey.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Flat skin, grey 2 | ----------------------------------- */ 3 | .icheckbox_flat-grey, 4 | .iradio_flat-grey { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 20px; 11 | height: 20px; 12 | background: url(grey.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_flat-grey { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_flat-grey.checked { 21 | background-position: -22px 0; 22 | } 23 | .icheckbox_flat-grey.disabled { 24 | background-position: -44px 0; 25 | cursor: default; 26 | } 27 | .icheckbox_flat-grey.checked.disabled { 28 | background-position: -66px 0; 29 | } 30 | 31 | .iradio_flat-grey { 32 | background-position: -88px 0; 33 | } 34 | .iradio_flat-grey.checked { 35 | background-position: -110px 0; 36 | } 37 | .iradio_flat-grey.disabled { 38 | background-position: -132px 0; 39 | cursor: default; 40 | } 41 | .iradio_flat-grey.checked.disabled { 42 | background-position: -154px 0; 43 | } 44 | 45 | /* HiDPI support */ 46 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 47 | .icheckbox_flat-grey, 48 | .iradio_flat-grey { 49 | background-image: url(grey@2x.png); 50 | -webkit-background-size: 176px 22px; 51 | background-size: 176px 22px; 52 | } 53 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/flat/grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/flat/grey.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/flat/grey@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/flat/grey@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/flat/orange.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Flat skin, orange 2 | ----------------------------------- */ 3 | .icheckbox_flat-orange, 4 | .iradio_flat-orange { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 20px; 11 | height: 20px; 12 | background: url(orange.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_flat-orange { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_flat-orange.checked { 21 | background-position: -22px 0; 22 | } 23 | .icheckbox_flat-orange.disabled { 24 | background-position: -44px 0; 25 | cursor: default; 26 | } 27 | .icheckbox_flat-orange.checked.disabled { 28 | background-position: -66px 0; 29 | } 30 | 31 | .iradio_flat-orange { 32 | background-position: -88px 0; 33 | } 34 | .iradio_flat-orange.checked { 35 | background-position: -110px 0; 36 | } 37 | .iradio_flat-orange.disabled { 38 | background-position: -132px 0; 39 | cursor: default; 40 | } 41 | .iradio_flat-orange.checked.disabled { 42 | background-position: -154px 0; 43 | } 44 | 45 | /* HiDPI support */ 46 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 47 | .icheckbox_flat-orange, 48 | .iradio_flat-orange { 49 | background-image: url(orange@2x.png); 50 | -webkit-background-size: 176px 22px; 51 | background-size: 176px 22px; 52 | } 53 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/flat/orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/flat/orange.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/flat/orange@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/flat/orange@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/flat/pink.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Flat skin, pink 2 | ----------------------------------- */ 3 | .icheckbox_flat-pink, 4 | .iradio_flat-pink { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 20px; 11 | height: 20px; 12 | background: url(pink.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_flat-pink { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_flat-pink.checked { 21 | background-position: -22px 0; 22 | } 23 | .icheckbox_flat-pink.disabled { 24 | background-position: -44px 0; 25 | cursor: default; 26 | } 27 | .icheckbox_flat-pink.checked.disabled { 28 | background-position: -66px 0; 29 | } 30 | 31 | .iradio_flat-pink { 32 | background-position: -88px 0; 33 | } 34 | .iradio_flat-pink.checked { 35 | background-position: -110px 0; 36 | } 37 | .iradio_flat-pink.disabled { 38 | background-position: -132px 0; 39 | cursor: default; 40 | } 41 | .iradio_flat-pink.checked.disabled { 42 | background-position: -154px 0; 43 | } 44 | 45 | /* HiDPI support */ 46 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 47 | .icheckbox_flat-pink, 48 | .iradio_flat-pink { 49 | background-image: url(pink@2x.png); 50 | -webkit-background-size: 176px 22px; 51 | background-size: 176px 22px; 52 | } 53 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/flat/pink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/flat/pink.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/flat/pink@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/flat/pink@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/flat/purple.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Flat skin, purple 2 | ----------------------------------- */ 3 | .icheckbox_flat-purple, 4 | .iradio_flat-purple { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 20px; 11 | height: 20px; 12 | background: url(purple.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_flat-purple { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_flat-purple.checked { 21 | background-position: -22px 0; 22 | } 23 | .icheckbox_flat-purple.disabled { 24 | background-position: -44px 0; 25 | cursor: default; 26 | } 27 | .icheckbox_flat-purple.checked.disabled { 28 | background-position: -66px 0; 29 | } 30 | 31 | .iradio_flat-purple { 32 | background-position: -88px 0; 33 | } 34 | .iradio_flat-purple.checked { 35 | background-position: -110px 0; 36 | } 37 | .iradio_flat-purple.disabled { 38 | background-position: -132px 0; 39 | cursor: default; 40 | } 41 | .iradio_flat-purple.checked.disabled { 42 | background-position: -154px 0; 43 | } 44 | 45 | /* HiDPI support */ 46 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 47 | .icheckbox_flat-purple, 48 | .iradio_flat-purple { 49 | background-image: url(purple@2x.png); 50 | -webkit-background-size: 176px 22px; 51 | background-size: 176px 22px; 52 | } 53 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/flat/purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/flat/purple.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/flat/purple@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/flat/purple@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/flat/red.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Flat skin, red 2 | ----------------------------------- */ 3 | .icheckbox_flat-red, 4 | .iradio_flat-red { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 20px; 11 | height: 20px; 12 | background: url(red.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_flat-red { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_flat-red.checked { 21 | background-position: -22px 0; 22 | } 23 | .icheckbox_flat-red.disabled { 24 | background-position: -44px 0; 25 | cursor: default; 26 | } 27 | .icheckbox_flat-red.checked.disabled { 28 | background-position: -66px 0; 29 | } 30 | 31 | .iradio_flat-red { 32 | background-position: -88px 0; 33 | } 34 | .iradio_flat-red.checked { 35 | background-position: -110px 0; 36 | } 37 | .iradio_flat-red.disabled { 38 | background-position: -132px 0; 39 | cursor: default; 40 | } 41 | .iradio_flat-red.checked.disabled { 42 | background-position: -154px 0; 43 | } 44 | 45 | /* HiDPI support */ 46 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 47 | .icheckbox_flat-red, 48 | .iradio_flat-red { 49 | background-image: url(red@2x.png); 50 | -webkit-background-size: 176px 22px; 51 | background-size: 176px 22px; 52 | } 53 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/flat/red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/flat/red.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/flat/red@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/flat/red@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/flat/yellow.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Flat skin, yellow 2 | ----------------------------------- */ 3 | .icheckbox_flat-yellow, 4 | .iradio_flat-yellow { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 20px; 11 | height: 20px; 12 | background: url(yellow.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_flat-yellow { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_flat-yellow.checked { 21 | background-position: -22px 0; 22 | } 23 | .icheckbox_flat-yellow.disabled { 24 | background-position: -44px 0; 25 | cursor: default; 26 | } 27 | .icheckbox_flat-yellow.checked.disabled { 28 | background-position: -66px 0; 29 | } 30 | 31 | .iradio_flat-yellow { 32 | background-position: -88px 0; 33 | } 34 | .iradio_flat-yellow.checked { 35 | background-position: -110px 0; 36 | } 37 | .iradio_flat-yellow.disabled { 38 | background-position: -132px 0; 39 | cursor: default; 40 | } 41 | .iradio_flat-yellow.checked.disabled { 42 | background-position: -154px 0; 43 | } 44 | 45 | /* HiDPI support */ 46 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 47 | .icheckbox_flat-yellow, 48 | .iradio_flat-yellow { 49 | background-image: url(yellow@2x.png); 50 | -webkit-background-size: 176px 22px; 51 | background-size: 176px 22px; 52 | } 53 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/flat/yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/flat/yellow.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/flat/yellow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/flat/yellow@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/futurico/futurico.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Futurico skin 2 | ----------------------------------- */ 3 | .icheckbox_futurico, 4 | .iradio_futurico { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 16px; 11 | height: 17px; 12 | background: url(futurico.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_futurico { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_futurico.checked { 21 | background-position: -18px 0; 22 | } 23 | .icheckbox_futurico.disabled { 24 | background-position: -36px 0; 25 | cursor: default; 26 | } 27 | .icheckbox_futurico.checked.disabled { 28 | background-position: -54px 0; 29 | } 30 | 31 | .iradio_futurico { 32 | background-position: -72px 0; 33 | } 34 | .iradio_futurico.checked { 35 | background-position: -90px 0; 36 | } 37 | .iradio_futurico.disabled { 38 | background-position: -108px 0; 39 | cursor: default; 40 | } 41 | .iradio_futurico.checked.disabled { 42 | background-position: -126px 0; 43 | } 44 | 45 | /* HiDPI support */ 46 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 47 | .icheckbox_futurico, 48 | .iradio_futurico { 49 | background-image: url(futurico@2x.png); 50 | -webkit-background-size: 144px 19px; 51 | background-size: 144px 19px; 52 | } 53 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/futurico/futurico.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/futurico/futurico.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/futurico/futurico@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/futurico/futurico@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/line/aero.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Line skin, aero 2 | ----------------------------------- */ 3 | .icheckbox_line-aero, 4 | .iradio_line-aero { 5 | position: relative; 6 | display: block; 7 | margin: 0; 8 | padding: 5px 15px 5px 38px; 9 | font-size: 13px; 10 | line-height: 17px; 11 | color: #fff; 12 | background: #9cc2cb; 13 | border: none; 14 | -webkit-border-radius: 3px; 15 | -moz-border-radius: 3px; 16 | border-radius: 3px; 17 | cursor: pointer; 18 | } 19 | .icheckbox_line-aero .icheck_line-icon, 20 | .iradio_line-aero .icheck_line-icon { 21 | position: absolute; 22 | top: 50%; 23 | left: 13px; 24 | width: 13px; 25 | height: 11px; 26 | margin: -5px 0 0 0; 27 | padding: 0; 28 | overflow: hidden; 29 | background: url(line.png) no-repeat; 30 | border: none; 31 | } 32 | .icheckbox_line-aero.hover, 33 | .icheckbox_line-aero.checked.hover, 34 | .iradio_line-aero.hover { 35 | background: #B5D1D8; 36 | } 37 | .icheckbox_line-aero.checked, 38 | .iradio_line-aero.checked { 39 | background: #9cc2cb; 40 | } 41 | .icheckbox_line-aero.checked .icheck_line-icon, 42 | .iradio_line-aero.checked .icheck_line-icon { 43 | background-position: -15px 0; 44 | } 45 | .icheckbox_line-aero.disabled, 46 | .iradio_line-aero.disabled { 47 | background: #D2E4E8; 48 | cursor: default; 49 | } 50 | .icheckbox_line-aero.disabled .icheck_line-icon, 51 | .iradio_line-aero.disabled .icheck_line-icon { 52 | background-position: -30px 0; 53 | } 54 | .icheckbox_line-aero.checked.disabled, 55 | .iradio_line-aero.checked.disabled { 56 | background: #D2E4E8; 57 | } 58 | .icheckbox_line-aero.checked.disabled .icheck_line-icon, 59 | .iradio_line-aero.checked.disabled .icheck_line-icon { 60 | background-position: -45px 0; 61 | } 62 | 63 | /* HiDPI support */ 64 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 65 | .icheckbox_line-aero .icheck_line-icon, 66 | .iradio_line-aero .icheck_line-icon { 67 | background-image: url(line@2x.png); 68 | -webkit-background-size: 60px 13px; 69 | background-size: 60px 13px; 70 | } 71 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/line/blue.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Line skin, blue 2 | ----------------------------------- */ 3 | .icheckbox_line-blue, 4 | .iradio_line-blue { 5 | position: relative; 6 | display: block; 7 | margin: 0; 8 | padding: 5px 15px 5px 38px; 9 | font-size: 13px; 10 | line-height: 17px; 11 | color: #fff; 12 | background: #2489c5; 13 | border: none; 14 | -webkit-border-radius: 3px; 15 | -moz-border-radius: 3px; 16 | border-radius: 3px; 17 | cursor: pointer; 18 | } 19 | .icheckbox_line-blue .icheck_line-icon, 20 | .iradio_line-blue .icheck_line-icon { 21 | position: absolute; 22 | top: 50%; 23 | left: 13px; 24 | width: 13px; 25 | height: 11px; 26 | margin: -5px 0 0 0; 27 | padding: 0; 28 | overflow: hidden; 29 | background: url(line.png) no-repeat; 30 | border: none; 31 | } 32 | .icheckbox_line-blue.hover, 33 | .icheckbox_line-blue.checked.hover, 34 | .iradio_line-blue.hover { 35 | background: #3DA0DB; 36 | } 37 | .icheckbox_line-blue.checked, 38 | .iradio_line-blue.checked { 39 | background: #2489c5; 40 | } 41 | .icheckbox_line-blue.checked .icheck_line-icon, 42 | .iradio_line-blue.checked .icheck_line-icon { 43 | background-position: -15px 0; 44 | } 45 | .icheckbox_line-blue.disabled, 46 | .iradio_line-blue.disabled { 47 | background: #ADD7F0; 48 | cursor: default; 49 | } 50 | .icheckbox_line-blue.disabled .icheck_line-icon, 51 | .iradio_line-blue.disabled .icheck_line-icon { 52 | background-position: -30px 0; 53 | } 54 | .icheckbox_line-blue.checked.disabled, 55 | .iradio_line-blue.checked.disabled { 56 | background: #ADD7F0; 57 | } 58 | .icheckbox_line-blue.checked.disabled .icheck_line-icon, 59 | .iradio_line-blue.checked.disabled .icheck_line-icon { 60 | background-position: -45px 0; 61 | } 62 | 63 | /* HiDPI support */ 64 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 65 | .icheckbox_line-blue .icheck_line-icon, 66 | .iradio_line-blue .icheck_line-icon { 67 | background-image: url(line@2x.png); 68 | -webkit-background-size: 60px 13px; 69 | background-size: 60px 13px; 70 | } 71 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/line/green.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Line skin, green 2 | ----------------------------------- */ 3 | .icheckbox_line-green, 4 | .iradio_line-green { 5 | position: relative; 6 | display: block; 7 | margin: 0; 8 | padding: 5px 15px 5px 38px; 9 | font-size: 13px; 10 | line-height: 17px; 11 | color: #fff; 12 | background: #1b7e5a; 13 | border: none; 14 | -webkit-border-radius: 3px; 15 | -moz-border-radius: 3px; 16 | border-radius: 3px; 17 | cursor: pointer; 18 | } 19 | .icheckbox_line-green .icheck_line-icon, 20 | .iradio_line-green .icheck_line-icon { 21 | position: absolute; 22 | top: 50%; 23 | left: 13px; 24 | width: 13px; 25 | height: 11px; 26 | margin: -5px 0 0 0; 27 | padding: 0; 28 | overflow: hidden; 29 | background: url(line.png) no-repeat; 30 | border: none; 31 | } 32 | .icheckbox_line-green.hover, 33 | .icheckbox_line-green.checked.hover, 34 | .iradio_line-green.hover { 35 | background: #24AA7A; 36 | } 37 | .icheckbox_line-green.checked, 38 | .iradio_line-green.checked { 39 | background: #1b7e5a; 40 | } 41 | .icheckbox_line-green.checked .icheck_line-icon, 42 | .iradio_line-green.checked .icheck_line-icon { 43 | background-position: -15px 0; 44 | } 45 | .icheckbox_line-green.disabled, 46 | .iradio_line-green.disabled { 47 | background: #89E6C4; 48 | cursor: default; 49 | } 50 | .icheckbox_line-green.disabled .icheck_line-icon, 51 | .iradio_line-green.disabled .icheck_line-icon { 52 | background-position: -30px 0; 53 | } 54 | .icheckbox_line-green.checked.disabled, 55 | .iradio_line-green.checked.disabled { 56 | background: #89E6C4; 57 | } 58 | .icheckbox_line-green.checked.disabled .icheck_line-icon, 59 | .iradio_line-green.checked.disabled .icheck_line-icon { 60 | background-position: -45px 0; 61 | } 62 | 63 | /* HiDPI support */ 64 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 65 | .icheckbox_line-green .icheck_line-icon, 66 | .iradio_line-green .icheck_line-icon { 67 | background-image: url(line@2x.png); 68 | -webkit-background-size: 60px 13px; 69 | background-size: 60px 13px; 70 | } 71 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/line/grey.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Line skin, grey 2 | ----------------------------------- */ 3 | .icheckbox_line-grey, 4 | .iradio_line-grey { 5 | position: relative; 6 | display: block; 7 | margin: 0; 8 | padding: 5px 15px 5px 38px; 9 | font-size: 13px; 10 | line-height: 17px; 11 | color: #fff; 12 | background: #73716e; 13 | border: none; 14 | -webkit-border-radius: 3px; 15 | -moz-border-radius: 3px; 16 | border-radius: 3px; 17 | cursor: pointer; 18 | } 19 | .icheckbox_line-grey .icheck_line-icon, 20 | .iradio_line-grey .icheck_line-icon { 21 | position: absolute; 22 | top: 50%; 23 | left: 13px; 24 | width: 13px; 25 | height: 11px; 26 | margin: -5px 0 0 0; 27 | padding: 0; 28 | overflow: hidden; 29 | background: url(line.png) no-repeat; 30 | border: none; 31 | } 32 | .icheckbox_line-grey.hover, 33 | .icheckbox_line-grey.checked.hover, 34 | .iradio_line-grey.hover { 35 | background: #8B8986; 36 | } 37 | .icheckbox_line-grey.checked, 38 | .iradio_line-grey.checked { 39 | background: #73716e; 40 | } 41 | .icheckbox_line-grey.checked .icheck_line-icon, 42 | .iradio_line-grey.checked .icheck_line-icon { 43 | background-position: -15px 0; 44 | } 45 | .icheckbox_line-grey.disabled, 46 | .iradio_line-grey.disabled { 47 | background: #D5D4D3; 48 | cursor: default; 49 | } 50 | .icheckbox_line-grey.disabled .icheck_line-icon, 51 | .iradio_line-grey.disabled .icheck_line-icon { 52 | background-position: -30px 0; 53 | } 54 | .icheckbox_line-grey.checked.disabled, 55 | .iradio_line-grey.checked.disabled { 56 | background: #D5D4D3; 57 | } 58 | .icheckbox_line-grey.checked.disabled .icheck_line-icon, 59 | .iradio_line-grey.checked.disabled .icheck_line-icon { 60 | background-position: -45px 0; 61 | } 62 | 63 | /* HiDPI support */ 64 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 65 | .icheckbox_line-grey .icheck_line-icon, 66 | .iradio_line-grey .icheck_line-icon { 67 | background-image: url(line@2x.png); 68 | -webkit-background-size: 60px 13px; 69 | background-size: 60px 13px; 70 | } 71 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/line/line.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Line skin, black 2 | ----------------------------------- */ 3 | .icheckbox_line, 4 | .iradio_line { 5 | position: relative; 6 | display: block; 7 | margin: 0; 8 | padding: 5px 15px 5px 38px; 9 | font-size: 13px; 10 | line-height: 17px; 11 | color: #fff; 12 | background: #000; 13 | border: none; 14 | -webkit-border-radius: 3px; 15 | -moz-border-radius: 3px; 16 | border-radius: 3px; 17 | cursor: pointer; 18 | } 19 | .icheckbox_line .icheck_line-icon, 20 | .iradio_line .icheck_line-icon { 21 | position: absolute; 22 | top: 50%; 23 | left: 13px; 24 | width: 13px; 25 | height: 11px; 26 | margin: -5px 0 0 0; 27 | padding: 0; 28 | overflow: hidden; 29 | background: url(line.png) no-repeat; 30 | border: none; 31 | } 32 | .icheckbox_line.hover, 33 | .icheckbox_line.checked.hover, 34 | .iradio_line.hover { 35 | background: #444; 36 | } 37 | .icheckbox_line.checked, 38 | .iradio_line.checked { 39 | background: #000; 40 | } 41 | .icheckbox_line.checked .icheck_line-icon, 42 | .iradio_line.checked .icheck_line-icon { 43 | background-position: -15px 0; 44 | } 45 | .icheckbox_line.disabled, 46 | .iradio_line.disabled { 47 | background: #ccc; 48 | cursor: default; 49 | } 50 | .icheckbox_line.disabled .icheck_line-icon, 51 | .iradio_line.disabled .icheck_line-icon { 52 | background-position: -30px 0; 53 | } 54 | .icheckbox_line.checked.disabled, 55 | .iradio_line.checked.disabled { 56 | background: #ccc; 57 | } 58 | .icheckbox_line.checked.disabled .icheck_line-icon, 59 | .iradio_line.checked.disabled .icheck_line-icon { 60 | background-position: -45px 0; 61 | } 62 | 63 | /* HiDPI support */ 64 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 65 | .icheckbox_line .icheck_line-icon, 66 | .iradio_line .icheck_line-icon { 67 | background-image: url(line@2x.png); 68 | -webkit-background-size: 60px 13px; 69 | background-size: 60px 13px; 70 | } 71 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/line/line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/line/line.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/line/line@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/line/line@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/line/orange.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Line skin, orange 2 | ----------------------------------- */ 3 | .icheckbox_line-orange, 4 | .iradio_line-orange { 5 | position: relative; 6 | display: block; 7 | margin: 0; 8 | padding: 5px 15px 5px 38px; 9 | font-size: 13px; 10 | line-height: 17px; 11 | color: #fff; 12 | background: #f70; 13 | border: none; 14 | -webkit-border-radius: 3px; 15 | -moz-border-radius: 3px; 16 | border-radius: 3px; 17 | cursor: pointer; 18 | } 19 | .icheckbox_line-orange .icheck_line-icon, 20 | .iradio_line-orange .icheck_line-icon { 21 | position: absolute; 22 | top: 50%; 23 | left: 13px; 24 | width: 13px; 25 | height: 11px; 26 | margin: -5px 0 0 0; 27 | padding: 0; 28 | overflow: hidden; 29 | background: url(line.png) no-repeat; 30 | border: none; 31 | } 32 | .icheckbox_line-orange.hover, 33 | .icheckbox_line-orange.checked.hover, 34 | .iradio_line-orange.hover { 35 | background: #FF9233; 36 | } 37 | .icheckbox_line-orange.checked, 38 | .iradio_line-orange.checked { 39 | background: #f70; 40 | } 41 | .icheckbox_line-orange.checked .icheck_line-icon, 42 | .iradio_line-orange.checked .icheck_line-icon { 43 | background-position: -15px 0; 44 | } 45 | .icheckbox_line-orange.disabled, 46 | .iradio_line-orange.disabled { 47 | background: #FFD6B3; 48 | cursor: default; 49 | } 50 | .icheckbox_line-orange.disabled .icheck_line-icon, 51 | .iradio_line-orange.disabled .icheck_line-icon { 52 | background-position: -30px 0; 53 | } 54 | .icheckbox_line-orange.checked.disabled, 55 | .iradio_line-orange.checked.disabled { 56 | background: #FFD6B3; 57 | } 58 | .icheckbox_line-orange.checked.disabled .icheck_line-icon, 59 | .iradio_line-orange.checked.disabled .icheck_line-icon { 60 | background-position: -45px 0; 61 | } 62 | 63 | /* HiDPI support */ 64 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 65 | .icheckbox_line-orange .icheck_line-icon, 66 | .iradio_line-orange .icheck_line-icon { 67 | background-image: url(line@2x.png); 68 | -webkit-background-size: 60px 13px; 69 | background-size: 60px 13px; 70 | } 71 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/line/pink.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Line skin, pink 2 | ----------------------------------- */ 3 | .icheckbox_line-pink, 4 | .iradio_line-pink { 5 | position: relative; 6 | display: block; 7 | margin: 0; 8 | padding: 5px 15px 5px 38px; 9 | font-size: 13px; 10 | line-height: 17px; 11 | color: #fff; 12 | background: #a77a94; 13 | border: none; 14 | -webkit-border-radius: 3px; 15 | -moz-border-radius: 3px; 16 | border-radius: 3px; 17 | cursor: pointer; 18 | } 19 | .icheckbox_line-pink .icheck_line-icon, 20 | .iradio_line-pink .icheck_line-icon { 21 | position: absolute; 22 | top: 50%; 23 | left: 13px; 24 | width: 13px; 25 | height: 11px; 26 | margin: -5px 0 0 0; 27 | padding: 0; 28 | overflow: hidden; 29 | background: url(line.png) no-repeat; 30 | border: none; 31 | } 32 | .icheckbox_line-pink.hover, 33 | .icheckbox_line-pink.checked.hover, 34 | .iradio_line-pink.hover { 35 | background: #B995A9; 36 | } 37 | .icheckbox_line-pink.checked, 38 | .iradio_line-pink.checked { 39 | background: #a77a94; 40 | } 41 | .icheckbox_line-pink.checked .icheck_line-icon, 42 | .iradio_line-pink.checked .icheck_line-icon { 43 | background-position: -15px 0; 44 | } 45 | .icheckbox_line-pink.disabled, 46 | .iradio_line-pink.disabled { 47 | background: #E0D0DA; 48 | cursor: default; 49 | } 50 | .icheckbox_line-pink.disabled .icheck_line-icon, 51 | .iradio_line-pink.disabled .icheck_line-icon { 52 | background-position: -30px 0; 53 | } 54 | .icheckbox_line-pink.checked.disabled, 55 | .iradio_line-pink.checked.disabled { 56 | background: #E0D0DA; 57 | } 58 | .icheckbox_line-pink.checked.disabled .icheck_line-icon, 59 | .iradio_line-pink.checked.disabled .icheck_line-icon { 60 | background-position: -45px 0; 61 | } 62 | 63 | /* HiDPI support */ 64 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 65 | .icheckbox_line-pink .icheck_line-icon, 66 | .iradio_line-pink .icheck_line-icon { 67 | background-image: url(line@2x.png); 68 | -webkit-background-size: 60px 13px; 69 | background-size: 60px 13px; 70 | } 71 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/line/purple.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Line skin, purple 2 | ----------------------------------- */ 3 | .icheckbox_line-purple, 4 | .iradio_line-purple { 5 | position: relative; 6 | display: block; 7 | margin: 0; 8 | padding: 5px 15px 5px 38px; 9 | font-size: 13px; 10 | line-height: 17px; 11 | color: #fff; 12 | background: #6a5a8c; 13 | border: none; 14 | -webkit-border-radius: 3px; 15 | -moz-border-radius: 3px; 16 | border-radius: 3px; 17 | cursor: pointer; 18 | } 19 | .icheckbox_line-purple .icheck_line-icon, 20 | .iradio_line-purple .icheck_line-icon { 21 | position: absolute; 22 | top: 50%; 23 | left: 13px; 24 | width: 13px; 25 | height: 11px; 26 | margin: -5px 0 0 0; 27 | padding: 0; 28 | overflow: hidden; 29 | background: url(line.png) no-repeat; 30 | border: none; 31 | } 32 | .icheckbox_line-purple.hover, 33 | .icheckbox_line-purple.checked.hover, 34 | .iradio_line-purple.hover { 35 | background: #8677A7; 36 | } 37 | .icheckbox_line-purple.checked, 38 | .iradio_line-purple.checked { 39 | background: #6a5a8c; 40 | } 41 | .icheckbox_line-purple.checked .icheck_line-icon, 42 | .iradio_line-purple.checked .icheck_line-icon { 43 | background-position: -15px 0; 44 | } 45 | .icheckbox_line-purple.disabled, 46 | .iradio_line-purple.disabled { 47 | background: #D2CCDE; 48 | cursor: default; 49 | } 50 | .icheckbox_line-purple.disabled .icheck_line-icon, 51 | .iradio_line-purple.disabled .icheck_line-icon { 52 | background-position: -30px 0; 53 | } 54 | .icheckbox_line-purple.checked.disabled, 55 | .iradio_line-purple.checked.disabled { 56 | background: #D2CCDE; 57 | } 58 | .icheckbox_line-purple.checked.disabled .icheck_line-icon, 59 | .iradio_line-purple.checked.disabled .icheck_line-icon { 60 | background-position: -45px 0; 61 | } 62 | 63 | /* HiDPI support */ 64 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 65 | .icheckbox_line-purple .icheck_line-icon, 66 | .iradio_line-purple .icheck_line-icon { 67 | background-image: url(line@2x.png); 68 | -webkit-background-size: 60px 13px; 69 | background-size: 60px 13px; 70 | } 71 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/line/red.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Line skin, red 2 | ----------------------------------- */ 3 | .icheckbox_line-red, 4 | .iradio_line-red { 5 | position: relative; 6 | display: block; 7 | margin: 0; 8 | padding: 5px 15px 5px 38px; 9 | font-size: 13px; 10 | line-height: 17px; 11 | color: #fff; 12 | background: #e56c69; 13 | border: none; 14 | -webkit-border-radius: 3px; 15 | -moz-border-radius: 3px; 16 | border-radius: 3px; 17 | cursor: pointer; 18 | } 19 | .icheckbox_line-red .icheck_line-icon, 20 | .iradio_line-red .icheck_line-icon { 21 | position: absolute; 22 | top: 50%; 23 | left: 13px; 24 | width: 13px; 25 | height: 11px; 26 | margin: -5px 0 0 0; 27 | padding: 0; 28 | overflow: hidden; 29 | background: url(line.png) no-repeat; 30 | border: none; 31 | } 32 | .icheckbox_line-red.hover, 33 | .icheckbox_line-red.checked.hover, 34 | .iradio_line-red.hover { 35 | background: #E98582; 36 | } 37 | .icheckbox_line-red.checked, 38 | .iradio_line-red.checked { 39 | background: #e56c69; 40 | } 41 | .icheckbox_line-red.checked .icheck_line-icon, 42 | .iradio_line-red.checked .icheck_line-icon { 43 | background-position: -15px 0; 44 | } 45 | .icheckbox_line-red.disabled, 46 | .iradio_line-red.disabled { 47 | background: #F7D3D2; 48 | cursor: default; 49 | } 50 | .icheckbox_line-red.disabled .icheck_line-icon, 51 | .iradio_line-red.disabled .icheck_line-icon { 52 | background-position: -30px 0; 53 | } 54 | .icheckbox_line-red.checked.disabled, 55 | .iradio_line-red.checked.disabled { 56 | background: #F7D3D2; 57 | } 58 | .icheckbox_line-red.checked.disabled .icheck_line-icon, 59 | .iradio_line-red.checked.disabled .icheck_line-icon { 60 | background-position: -45px 0; 61 | } 62 | 63 | /* HiDPI support */ 64 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 65 | .icheckbox_line-red .icheck_line-icon, 66 | .iradio_line-red .icheck_line-icon { 67 | background-image: url(line@2x.png); 68 | -webkit-background-size: 60px 13px; 69 | background-size: 60px 13px; 70 | } 71 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/line/yellow.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Line skin, yellow 2 | ----------------------------------- */ 3 | .icheckbox_line-yellow, 4 | .iradio_line-yellow { 5 | position: relative; 6 | display: block; 7 | margin: 0; 8 | padding: 5px 15px 5px 38px; 9 | font-size: 13px; 10 | line-height: 17px; 11 | color: #fff; 12 | background: #FFC414; 13 | border: none; 14 | -webkit-border-radius: 3px; 15 | -moz-border-radius: 3px; 16 | border-radius: 3px; 17 | cursor: pointer; 18 | } 19 | .icheckbox_line-yellow .icheck_line-icon, 20 | .iradio_line-yellow .icheck_line-icon { 21 | position: absolute; 22 | top: 50%; 23 | left: 13px; 24 | width: 13px; 25 | height: 11px; 26 | margin: -5px 0 0 0; 27 | padding: 0; 28 | overflow: hidden; 29 | background: url(line.png) no-repeat; 30 | border: none; 31 | } 32 | .icheckbox_line-yellow.hover, 33 | .icheckbox_line-yellow.checked.hover, 34 | .iradio_line-yellow.hover { 35 | background: #FFD34F; 36 | } 37 | .icheckbox_line-yellow.checked, 38 | .iradio_line-yellow.checked { 39 | background: #FFC414; 40 | } 41 | .icheckbox_line-yellow.checked .icheck_line-icon, 42 | .iradio_line-yellow.checked .icheck_line-icon { 43 | background-position: -15px 0; 44 | } 45 | .icheckbox_line-yellow.disabled, 46 | .iradio_line-yellow.disabled { 47 | background: #FFE495; 48 | cursor: default; 49 | } 50 | .icheckbox_line-yellow.disabled .icheck_line-icon, 51 | .iradio_line-yellow.disabled .icheck_line-icon { 52 | background-position: -30px 0; 53 | } 54 | .icheckbox_line-yellow.checked.disabled, 55 | .iradio_line-yellow.checked.disabled { 56 | background: #FFE495; 57 | } 58 | .icheckbox_line-yellow.checked.disabled .icheck_line-icon, 59 | .iradio_line-yellow.checked.disabled .icheck_line-icon { 60 | background-position: -45px 0; 61 | } 62 | 63 | /* HiDPI support */ 64 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 65 | .icheckbox_line-yellow .icheck_line-icon, 66 | .iradio_line-yellow .icheck_line-icon { 67 | background-image: url(line@2x.png); 68 | -webkit-background-size: 60px 13px; 69 | background-size: 60px 13px; 70 | } 71 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/minimal/aero.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Minimal skin, aero 2 | ----------------------------------- */ 3 | .icheckbox_minimal-aero, 4 | .iradio_minimal-aero { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 18px; 11 | height: 18px; 12 | background: url(aero.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_minimal-aero { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_minimal-aero.hover { 21 | background-position: -20px 0; 22 | } 23 | .icheckbox_minimal-aero.checked { 24 | background-position: -40px 0; 25 | } 26 | .icheckbox_minimal-aero.disabled { 27 | background-position: -60px 0; 28 | cursor: default; 29 | } 30 | .icheckbox_minimal-aero.checked.disabled { 31 | background-position: -80px 0; 32 | } 33 | 34 | .iradio_minimal-aero { 35 | background-position: -100px 0; 36 | } 37 | .iradio_minimal-aero.hover { 38 | background-position: -120px 0; 39 | } 40 | .iradio_minimal-aero.checked { 41 | background-position: -140px 0; 42 | } 43 | .iradio_minimal-aero.disabled { 44 | background-position: -160px 0; 45 | cursor: default; 46 | } 47 | .iradio_minimal-aero.checked.disabled { 48 | background-position: -180px 0; 49 | } 50 | 51 | /* HiDPI support */ 52 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 53 | .icheckbox_minimal-aero, 54 | .iradio_minimal-aero { 55 | background-image: url(aero@2x.png); 56 | -webkit-background-size: 200px 20px; 57 | background-size: 200px 20px; 58 | } 59 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/minimal/aero.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/minimal/aero.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/minimal/aero@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/minimal/aero@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/minimal/blue.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Minimal skin, blue 2 | ----------------------------------- */ 3 | .icheckbox_minimal-blue, 4 | .iradio_minimal-blue { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 18px; 11 | height: 18px; 12 | background: url(blue.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_minimal-blue { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_minimal-blue.hover { 21 | background-position: -20px 0; 22 | } 23 | .icheckbox_minimal-blue.checked { 24 | background-position: -40px 0; 25 | } 26 | .icheckbox_minimal-blue.disabled { 27 | background-position: -60px 0; 28 | cursor: default; 29 | } 30 | .icheckbox_minimal-blue.checked.disabled { 31 | background-position: -80px 0; 32 | } 33 | 34 | .iradio_minimal-blue { 35 | background-position: -100px 0; 36 | } 37 | .iradio_minimal-blue.hover { 38 | background-position: -120px 0; 39 | } 40 | .iradio_minimal-blue.checked { 41 | background-position: -140px 0; 42 | } 43 | .iradio_minimal-blue.disabled { 44 | background-position: -160px 0; 45 | cursor: default; 46 | } 47 | .iradio_minimal-blue.checked.disabled { 48 | background-position: -180px 0; 49 | } 50 | 51 | /* HiDPI support */ 52 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 53 | .icheckbox_minimal-blue, 54 | .iradio_minimal-blue { 55 | background-image: url(blue@2x.png); 56 | -webkit-background-size: 200px 20px; 57 | background-size: 200px 20px; 58 | } 59 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/minimal/blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/minimal/blue.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/minimal/blue@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/minimal/blue@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/minimal/green.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Minimal skin, green 2 | ----------------------------------- */ 3 | .icheckbox_minimal-green, 4 | .iradio_minimal-green { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 18px; 11 | height: 18px; 12 | background: url(green.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_minimal-green { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_minimal-green.hover { 21 | background-position: -20px 0; 22 | } 23 | .icheckbox_minimal-green.checked { 24 | background-position: -40px 0; 25 | } 26 | .icheckbox_minimal-green.disabled { 27 | background-position: -60px 0; 28 | cursor: default; 29 | } 30 | .icheckbox_minimal-green.checked.disabled { 31 | background-position: -80px 0; 32 | } 33 | 34 | .iradio_minimal-green { 35 | background-position: -100px 0; 36 | } 37 | .iradio_minimal-green.hover { 38 | background-position: -120px 0; 39 | } 40 | .iradio_minimal-green.checked { 41 | background-position: -140px 0; 42 | } 43 | .iradio_minimal-green.disabled { 44 | background-position: -160px 0; 45 | cursor: default; 46 | } 47 | .iradio_minimal-green.checked.disabled { 48 | background-position: -180px 0; 49 | } 50 | 51 | /* HiDPI support */ 52 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 53 | .icheckbox_minimal-green, 54 | .iradio_minimal-green { 55 | background-image: url(green@2x.png); 56 | -webkit-background-size: 200px 20px; 57 | background-size: 200px 20px; 58 | } 59 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/minimal/green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/minimal/green.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/minimal/green@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/minimal/green@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/minimal/grey.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Minimal skin, grey 2 | ----------------------------------- */ 3 | .icheckbox_minimal-grey, 4 | .iradio_minimal-grey { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 18px; 11 | height: 18px; 12 | background: url(grey.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_minimal-grey { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_minimal-grey.hover { 21 | background-position: -20px 0; 22 | } 23 | .icheckbox_minimal-grey.checked { 24 | background-position: -40px 0; 25 | } 26 | .icheckbox_minimal-grey.disabled { 27 | background-position: -60px 0; 28 | cursor: default; 29 | } 30 | .icheckbox_minimal-grey.checked.disabled { 31 | background-position: -80px 0; 32 | } 33 | 34 | .iradio_minimal-grey { 35 | background-position: -100px 0; 36 | } 37 | .iradio_minimal-grey.hover { 38 | background-position: -120px 0; 39 | } 40 | .iradio_minimal-grey.checked { 41 | background-position: -140px 0; 42 | } 43 | .iradio_minimal-grey.disabled { 44 | background-position: -160px 0; 45 | cursor: default; 46 | } 47 | .iradio_minimal-grey.checked.disabled { 48 | background-position: -180px 0; 49 | } 50 | 51 | /* HiDPI support */ 52 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 53 | .icheckbox_minimal-grey, 54 | .iradio_minimal-grey { 55 | background-image: url(grey@2x.png); 56 | -webkit-background-size: 200px 20px; 57 | background-size: 200px 20px; 58 | } 59 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/minimal/grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/minimal/grey.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/minimal/grey@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/minimal/grey@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/minimal/minimal.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Minimal skin, black 2 | ----------------------------------- */ 3 | .icheckbox_minimal, 4 | .iradio_minimal { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 18px; 11 | height: 18px; 12 | background: url(minimal.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_minimal { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_minimal.hover { 21 | background-position: -20px 0; 22 | } 23 | .icheckbox_minimal.checked { 24 | background-position: -40px 0; 25 | } 26 | .icheckbox_minimal.disabled { 27 | background-position: -60px 0; 28 | cursor: default; 29 | } 30 | .icheckbox_minimal.checked.disabled { 31 | background-position: -80px 0; 32 | } 33 | 34 | .iradio_minimal { 35 | background-position: -100px 0; 36 | } 37 | .iradio_minimal.hover { 38 | background-position: -120px 0; 39 | } 40 | .iradio_minimal.checked { 41 | background-position: -140px 0; 42 | } 43 | .iradio_minimal.disabled { 44 | background-position: -160px 0; 45 | cursor: default; 46 | } 47 | .iradio_minimal.checked.disabled { 48 | background-position: -180px 0; 49 | } 50 | 51 | /* HiDPI support */ 52 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 53 | .icheckbox_minimal, 54 | .iradio_minimal { 55 | background-image: url(minimal@2x.png); 56 | -webkit-background-size: 200px 20px; 57 | background-size: 200px 20px; 58 | } 59 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/minimal/minimal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/minimal/minimal.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/minimal/minimal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/minimal/minimal@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/minimal/orange.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Minimal skin, orange 2 | ----------------------------------- */ 3 | .icheckbox_minimal-orange, 4 | .iradio_minimal-orange { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 18px; 11 | height: 18px; 12 | background: url(orange.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_minimal-orange { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_minimal-orange.hover { 21 | background-position: -20px 0; 22 | } 23 | .icheckbox_minimal-orange.checked { 24 | background-position: -40px 0; 25 | } 26 | .icheckbox_minimal-orange.disabled { 27 | background-position: -60px 0; 28 | cursor: default; 29 | } 30 | .icheckbox_minimal-orange.checked.disabled { 31 | background-position: -80px 0; 32 | } 33 | 34 | .iradio_minimal-orange { 35 | background-position: -100px 0; 36 | } 37 | .iradio_minimal-orange.hover { 38 | background-position: -120px 0; 39 | } 40 | .iradio_minimal-orange.checked { 41 | background-position: -140px 0; 42 | } 43 | .iradio_minimal-orange.disabled { 44 | background-position: -160px 0; 45 | cursor: default; 46 | } 47 | .iradio_minimal-orange.checked.disabled { 48 | background-position: -180px 0; 49 | } 50 | 51 | /* HiDPI support */ 52 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 53 | .icheckbox_minimal-orange, 54 | .iradio_minimal-orange { 55 | background-image: url(orange@2x.png); 56 | -webkit-background-size: 200px 20px; 57 | background-size: 200px 20px; 58 | } 59 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/minimal/orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/minimal/orange.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/minimal/orange@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/minimal/orange@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/minimal/pink.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Minimal skin, pink 2 | ----------------------------------- */ 3 | .icheckbox_minimal-pink, 4 | .iradio_minimal-pink { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 18px; 11 | height: 18px; 12 | background: url(pink.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_minimal-pink { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_minimal-pink.hover { 21 | background-position: -20px 0; 22 | } 23 | .icheckbox_minimal-pink.checked { 24 | background-position: -40px 0; 25 | } 26 | .icheckbox_minimal-pink.disabled { 27 | background-position: -60px 0; 28 | cursor: default; 29 | } 30 | .icheckbox_minimal-pink.checked.disabled { 31 | background-position: -80px 0; 32 | } 33 | 34 | .iradio_minimal-pink { 35 | background-position: -100px 0; 36 | } 37 | .iradio_minimal-pink.hover { 38 | background-position: -120px 0; 39 | } 40 | .iradio_minimal-pink.checked { 41 | background-position: -140px 0; 42 | } 43 | .iradio_minimal-pink.disabled { 44 | background-position: -160px 0; 45 | cursor: default; 46 | } 47 | .iradio_minimal-pink.checked.disabled { 48 | background-position: -180px 0; 49 | } 50 | 51 | /* HiDPI support */ 52 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 53 | .icheckbox_minimal-pink, 54 | .iradio_minimal-pink { 55 | background-image: url(pink@2x.png); 56 | -webkit-background-size: 200px 20px; 57 | background-size: 200px 20px; 58 | } 59 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/minimal/pink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/minimal/pink.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/minimal/pink@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/minimal/pink@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/minimal/purple.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Minimal skin, purple 2 | ----------------------------------- */ 3 | .icheckbox_minimal-purple, 4 | .iradio_minimal-purple { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 18px; 11 | height: 18px; 12 | background: url(purple.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_minimal-purple { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_minimal-purple.hover { 21 | background-position: -20px 0; 22 | } 23 | .icheckbox_minimal-purple.checked { 24 | background-position: -40px 0; 25 | } 26 | .icheckbox_minimal-purple.disabled { 27 | background-position: -60px 0; 28 | cursor: default; 29 | } 30 | .icheckbox_minimal-purple.checked.disabled { 31 | background-position: -80px 0; 32 | } 33 | 34 | .iradio_minimal-purple { 35 | background-position: -100px 0; 36 | } 37 | .iradio_minimal-purple.hover { 38 | background-position: -120px 0; 39 | } 40 | .iradio_minimal-purple.checked { 41 | background-position: -140px 0; 42 | } 43 | .iradio_minimal-purple.disabled { 44 | background-position: -160px 0; 45 | cursor: default; 46 | } 47 | .iradio_minimal-purple.checked.disabled { 48 | background-position: -180px 0; 49 | } 50 | 51 | /* HiDPI support */ 52 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 53 | .icheckbox_minimal-purple, 54 | .iradio_minimal-purple { 55 | background-image: url(purple@2x.png); 56 | -webkit-background-size: 200px 20px; 57 | background-size: 200px 20px; 58 | } 59 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/minimal/purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/minimal/purple.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/minimal/purple@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/minimal/purple@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/minimal/red.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Minimal skin, red 2 | ----------------------------------- */ 3 | .icheckbox_minimal-red, 4 | .iradio_minimal-red { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 18px; 11 | height: 18px; 12 | background: url(red.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_minimal-red { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_minimal-red.hover { 21 | background-position: -20px 0; 22 | } 23 | .icheckbox_minimal-red.checked { 24 | background-position: -40px 0; 25 | } 26 | .icheckbox_minimal-red.disabled { 27 | background-position: -60px 0; 28 | cursor: default; 29 | } 30 | .icheckbox_minimal-red.checked.disabled { 31 | background-position: -80px 0; 32 | } 33 | 34 | .iradio_minimal-red { 35 | background-position: -100px 0; 36 | } 37 | .iradio_minimal-red.hover { 38 | background-position: -120px 0; 39 | } 40 | .iradio_minimal-red.checked { 41 | background-position: -140px 0; 42 | } 43 | .iradio_minimal-red.disabled { 44 | background-position: -160px 0; 45 | cursor: default; 46 | } 47 | .iradio_minimal-red.checked.disabled { 48 | background-position: -180px 0; 49 | } 50 | 51 | /* HiDPI support */ 52 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 53 | .icheckbox_minimal-red, 54 | .iradio_minimal-red { 55 | background-image: url(red@2x.png); 56 | -webkit-background-size: 200px 20px; 57 | background-size: 200px 20px; 58 | } 59 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/minimal/red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/minimal/red.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/minimal/red@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/minimal/red@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/minimal/yellow.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Minimal skin, yellow 2 | ----------------------------------- */ 3 | .icheckbox_minimal-yellow, 4 | .iradio_minimal-yellow { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 18px; 11 | height: 18px; 12 | background: url(yellow.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_minimal-yellow { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_minimal-yellow.hover { 21 | background-position: -20px 0; 22 | } 23 | .icheckbox_minimal-yellow.checked { 24 | background-position: -40px 0; 25 | } 26 | .icheckbox_minimal-yellow.disabled { 27 | background-position: -60px 0; 28 | cursor: default; 29 | } 30 | .icheckbox_minimal-yellow.checked.disabled { 31 | background-position: -80px 0; 32 | } 33 | 34 | .iradio_minimal-yellow { 35 | background-position: -100px 0; 36 | } 37 | .iradio_minimal-yellow.hover { 38 | background-position: -120px 0; 39 | } 40 | .iradio_minimal-yellow.checked { 41 | background-position: -140px 0; 42 | } 43 | .iradio_minimal-yellow.disabled { 44 | background-position: -160px 0; 45 | cursor: default; 46 | } 47 | .iradio_minimal-yellow.checked.disabled { 48 | background-position: -180px 0; 49 | } 50 | 51 | /* HiDPI support */ 52 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 53 | .icheckbox_minimal-yellow, 54 | .iradio_minimal-yellow { 55 | background-image: url(yellow@2x.png); 56 | -webkit-background-size: 200px 20px; 57 | background-size: 200px 20px; 58 | } 59 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/minimal/yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/minimal/yellow.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/minimal/yellow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/minimal/yellow@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/polaris/polaris.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Polaris skin 2 | ----------------------------------- */ 3 | .icheckbox_polaris, 4 | .iradio_polaris { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 29px; 11 | height: 29px; 12 | background: url(polaris.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_polaris { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_polaris.hover { 21 | background-position: -31px 0; 22 | } 23 | .icheckbox_polaris.checked { 24 | background-position: -62px 0; 25 | } 26 | .icheckbox_polaris.disabled { 27 | background-position: -93px 0; 28 | cursor: default; 29 | } 30 | .icheckbox_polaris.checked.disabled { 31 | background-position: -124px 0; 32 | } 33 | 34 | .iradio_polaris { 35 | background-position: -155px 0; 36 | } 37 | .iradio_polaris.hover { 38 | background-position: -186px 0; 39 | } 40 | .iradio_polaris.checked { 41 | background-position: -217px 0; 42 | } 43 | .iradio_polaris.disabled { 44 | background-position: -248px 0; 45 | cursor: default; 46 | } 47 | .iradio_polaris.checked.disabled { 48 | background-position: -279px 0; 49 | } 50 | 51 | /* HiDPI support */ 52 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 53 | .icheckbox_polaris, 54 | .iradio_polaris { 55 | background-image: url(polaris@2x.png); 56 | -webkit-background-size: 310px 31px; 57 | background-size: 310px 31px; 58 | } 59 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/polaris/polaris.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/polaris/polaris.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/polaris/polaris@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/polaris/polaris@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/square/aero.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Square skin, aero 2 | ----------------------------------- */ 3 | .icheckbox_square-aero, 4 | .iradio_square-aero { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 22px; 11 | height: 22px; 12 | background: url(aero.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_square-aero { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_square-aero.hover { 21 | background-position: -24px 0; 22 | } 23 | .icheckbox_square-aero.checked { 24 | background-position: -48px 0; 25 | } 26 | .icheckbox_square-aero.disabled { 27 | background-position: -72px 0; 28 | cursor: default; 29 | } 30 | .icheckbox_square-aero.checked.disabled { 31 | background-position: -96px 0; 32 | } 33 | 34 | .iradio_square-aero { 35 | background-position: -120px 0; 36 | } 37 | .iradio_square-aero.hover { 38 | background-position: -144px 0; 39 | } 40 | .iradio_square-aero.checked { 41 | background-position: -168px 0; 42 | } 43 | .iradio_square-aero.disabled { 44 | background-position: -192px 0; 45 | cursor: default; 46 | } 47 | .iradio_square-aero.checked.disabled { 48 | background-position: -216px 0; 49 | } 50 | 51 | /* HiDPI support */ 52 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 53 | .icheckbox_square-aero, 54 | .iradio_square-aero { 55 | background-image: url(aero@2x.png); 56 | -webkit-background-size: 240px 24px; 57 | background-size: 240px 24px; 58 | } 59 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/square/aero.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/square/aero.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/square/aero@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/square/aero@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/square/blue.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Square skin, blue 2 | ----------------------------------- */ 3 | .icheckbox_square-blue, 4 | .iradio_square-blue { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 22px; 11 | height: 22px; 12 | background: url(blue.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_square-blue { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_square-blue.hover { 21 | background-position: -24px 0; 22 | } 23 | .icheckbox_square-blue.checked { 24 | background-position: -48px 0; 25 | } 26 | .icheckbox_square-blue.disabled { 27 | background-position: -72px 0; 28 | cursor: default; 29 | } 30 | .icheckbox_square-blue.checked.disabled { 31 | background-position: -96px 0; 32 | } 33 | 34 | .iradio_square-blue { 35 | background-position: -120px 0; 36 | } 37 | .iradio_square-blue.hover { 38 | background-position: -144px 0; 39 | } 40 | .iradio_square-blue.checked { 41 | background-position: -168px 0; 42 | } 43 | .iradio_square-blue.disabled { 44 | background-position: -192px 0; 45 | cursor: default; 46 | } 47 | .iradio_square-blue.checked.disabled { 48 | background-position: -216px 0; 49 | } 50 | 51 | /* HiDPI support */ 52 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 53 | .icheckbox_square-blue, 54 | .iradio_square-blue { 55 | background-image: url(blue@2x.png); 56 | -webkit-background-size: 240px 24px; 57 | background-size: 240px 24px; 58 | } 59 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/square/blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/square/blue.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/square/blue@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/square/blue@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/square/green.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Square skin, green 2 | ----------------------------------- */ 3 | .icheckbox_square-green, 4 | .iradio_square-green { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 22px; 11 | height: 22px; 12 | background: url(green.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_square-green { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_square-green.hover { 21 | background-position: -24px 0; 22 | } 23 | .icheckbox_square-green.checked { 24 | background-position: -48px 0; 25 | } 26 | .icheckbox_square-green.disabled { 27 | background-position: -72px 0; 28 | cursor: default; 29 | } 30 | .icheckbox_square-green.checked.disabled { 31 | background-position: -96px 0; 32 | } 33 | 34 | .iradio_square-green { 35 | background-position: -120px 0; 36 | } 37 | .iradio_square-green.hover { 38 | background-position: -144px 0; 39 | } 40 | .iradio_square-green.checked { 41 | background-position: -168px 0; 42 | } 43 | .iradio_square-green.disabled { 44 | background-position: -192px 0; 45 | cursor: default; 46 | } 47 | .iradio_square-green.checked.disabled { 48 | background-position: -216px 0; 49 | } 50 | 51 | /* HiDPI support */ 52 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 53 | .icheckbox_square-green, 54 | .iradio_square-green { 55 | background-image: url(green@2x.png); 56 | -webkit-background-size: 240px 24px; 57 | background-size: 240px 24px; 58 | } 59 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/square/green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/square/green.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/square/green@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/square/green@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/square/grey.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Square skin, grey 2 | ----------------------------------- */ 3 | .icheckbox_square-grey, 4 | .iradio_square-grey { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 22px; 11 | height: 22px; 12 | background: url(grey.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_square-grey { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_square-grey.hover { 21 | background-position: -24px 0; 22 | } 23 | .icheckbox_square-grey.checked { 24 | background-position: -48px 0; 25 | } 26 | .icheckbox_square-grey.disabled { 27 | background-position: -72px 0; 28 | cursor: default; 29 | } 30 | .icheckbox_square-grey.checked.disabled { 31 | background-position: -96px 0; 32 | } 33 | 34 | .iradio_square-grey { 35 | background-position: -120px 0; 36 | } 37 | .iradio_square-grey.hover { 38 | background-position: -144px 0; 39 | } 40 | .iradio_square-grey.checked { 41 | background-position: -168px 0; 42 | } 43 | .iradio_square-grey.disabled { 44 | background-position: -192px 0; 45 | cursor: default; 46 | } 47 | .iradio_square-grey.checked.disabled { 48 | background-position: -216px 0; 49 | } 50 | 51 | /* HiDPI support */ 52 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 53 | .icheckbox_square-grey, 54 | .iradio_square-grey { 55 | background-image: url(grey@2x.png); 56 | -webkit-background-size: 240px 24px; 57 | background-size: 240px 24px; 58 | } 59 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/square/grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/square/grey.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/square/grey@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/square/grey@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/square/orange.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Square skin, orange 2 | ----------------------------------- */ 3 | .icheckbox_square-orange, 4 | .iradio_square-orange { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 22px; 11 | height: 22px; 12 | background: url(orange.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_square-orange { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_square-orange.hover { 21 | background-position: -24px 0; 22 | } 23 | .icheckbox_square-orange.checked { 24 | background-position: -48px 0; 25 | } 26 | .icheckbox_square-orange.disabled { 27 | background-position: -72px 0; 28 | cursor: default; 29 | } 30 | .icheckbox_square-orange.checked.disabled { 31 | background-position: -96px 0; 32 | } 33 | 34 | .iradio_square-orange { 35 | background-position: -120px 0; 36 | } 37 | .iradio_square-orange.hover { 38 | background-position: -144px 0; 39 | } 40 | .iradio_square-orange.checked { 41 | background-position: -168px 0; 42 | } 43 | .iradio_square-orange.disabled { 44 | background-position: -192px 0; 45 | cursor: default; 46 | } 47 | .iradio_square-orange.checked.disabled { 48 | background-position: -216px 0; 49 | } 50 | 51 | /* HiDPI support */ 52 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 53 | .icheckbox_square-orange, 54 | .iradio_square-orange { 55 | background-image: url(orange@2x.png); 56 | -webkit-background-size: 240px 24px; 57 | background-size: 240px 24px; 58 | } 59 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/square/orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/square/orange.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/square/orange@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/square/orange@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/square/pink.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Square skin, pink 2 | ----------------------------------- */ 3 | .icheckbox_square-pink, 4 | .iradio_square-pink { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 22px; 11 | height: 22px; 12 | background: url(pink.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_square-pink { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_square-pink.hover { 21 | background-position: -24px 0; 22 | } 23 | .icheckbox_square-pink.checked { 24 | background-position: -48px 0; 25 | } 26 | .icheckbox_square-pink.disabled { 27 | background-position: -72px 0; 28 | cursor: default; 29 | } 30 | .icheckbox_square-pink.checked.disabled { 31 | background-position: -96px 0; 32 | } 33 | 34 | .iradio_square-pink { 35 | background-position: -120px 0; 36 | } 37 | .iradio_square-pink.hover { 38 | background-position: -144px 0; 39 | } 40 | .iradio_square-pink.checked { 41 | background-position: -168px 0; 42 | } 43 | .iradio_square-pink.disabled { 44 | background-position: -192px 0; 45 | cursor: default; 46 | } 47 | .iradio_square-pink.checked.disabled { 48 | background-position: -216px 0; 49 | } 50 | 51 | /* HiDPI support */ 52 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 53 | .icheckbox_square-pink, 54 | .iradio_square-pink { 55 | background-image: url(pink@2x.png); 56 | -webkit-background-size: 240px 24px; 57 | background-size: 240px 24px; 58 | } 59 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/square/pink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/square/pink.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/square/pink@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/square/pink@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/square/purple.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Square skin, purple 2 | ----------------------------------- */ 3 | .icheckbox_square-purple, 4 | .iradio_square-purple { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 22px; 11 | height: 22px; 12 | background: url(purple.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_square-purple { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_square-purple.hover { 21 | background-position: -24px 0; 22 | } 23 | .icheckbox_square-purple.checked { 24 | background-position: -48px 0; 25 | } 26 | .icheckbox_square-purple.disabled { 27 | background-position: -72px 0; 28 | cursor: default; 29 | } 30 | .icheckbox_square-purple.checked.disabled { 31 | background-position: -96px 0; 32 | } 33 | 34 | .iradio_square-purple { 35 | background-position: -120px 0; 36 | } 37 | .iradio_square-purple.hover { 38 | background-position: -144px 0; 39 | } 40 | .iradio_square-purple.checked { 41 | background-position: -168px 0; 42 | } 43 | .iradio_square-purple.disabled { 44 | background-position: -192px 0; 45 | cursor: default; 46 | } 47 | .iradio_square-purple.checked.disabled { 48 | background-position: -216px 0; 49 | } 50 | 51 | /* HiDPI support */ 52 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 53 | .icheckbox_square-purple, 54 | .iradio_square-purple { 55 | background-image: url(purple@2x.png); 56 | -webkit-background-size: 240px 24px; 57 | background-size: 240px 24px; 58 | } 59 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/square/purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/square/purple.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/square/purple@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/square/purple@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/square/red.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Square skin, red 2 | ----------------------------------- */ 3 | .icheckbox_square-red, 4 | .iradio_square-red { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 22px; 11 | height: 22px; 12 | background: url(red.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_square-red { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_square-red.hover { 21 | background-position: -24px 0; 22 | } 23 | .icheckbox_square-red.checked { 24 | background-position: -48px 0; 25 | } 26 | .icheckbox_square-red.disabled { 27 | background-position: -72px 0; 28 | cursor: default; 29 | } 30 | .icheckbox_square-red.checked.disabled { 31 | background-position: -96px 0; 32 | } 33 | 34 | .iradio_square-red { 35 | background-position: -120px 0; 36 | } 37 | .iradio_square-red.hover { 38 | background-position: -144px 0; 39 | } 40 | .iradio_square-red.checked { 41 | background-position: -168px 0; 42 | } 43 | .iradio_square-red.disabled { 44 | background-position: -192px 0; 45 | cursor: default; 46 | } 47 | .iradio_square-red.checked.disabled { 48 | background-position: -216px 0; 49 | } 50 | 51 | /* HiDPI support */ 52 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 53 | .icheckbox_square-red, 54 | .iradio_square-red { 55 | background-image: url(red@2x.png); 56 | -webkit-background-size: 240px 24px; 57 | background-size: 240px 24px; 58 | } 59 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/square/red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/square/red.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/square/red@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/square/red@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/square/square.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Square skin, black 2 | ----------------------------------- */ 3 | .icheckbox_square, 4 | .iradio_square { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 22px; 11 | height: 22px; 12 | background: url(square.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_square { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_square.hover { 21 | background-position: -24px 0; 22 | } 23 | .icheckbox_square.checked { 24 | background-position: -48px 0; 25 | } 26 | .icheckbox_square.disabled { 27 | background-position: -72px 0; 28 | cursor: default; 29 | } 30 | .icheckbox_square.checked.disabled { 31 | background-position: -96px 0; 32 | } 33 | 34 | .iradio_square { 35 | background-position: -120px 0; 36 | } 37 | .iradio_square.hover { 38 | background-position: -144px 0; 39 | } 40 | .iradio_square.checked { 41 | background-position: -168px 0; 42 | } 43 | .iradio_square.disabled { 44 | background-position: -192px 0; 45 | cursor: default; 46 | } 47 | .iradio_square.checked.disabled { 48 | background-position: -216px 0; 49 | } 50 | 51 | /* HiDPI support */ 52 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 53 | .icheckbox_square, 54 | .iradio_square { 55 | background-image: url(square@2x.png); 56 | -webkit-background-size: 240px 24px; 57 | background-size: 240px 24px; 58 | } 59 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/square/square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/square/square.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/square/square@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/square/square@2x.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/square/yellow.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Square skin, yellow 2 | ----------------------------------- */ 3 | .icheckbox_square-yellow, 4 | .iradio_square-yellow { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 22px; 11 | height: 22px; 12 | background: url(yellow.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_square-yellow { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_square-yellow.hover { 21 | background-position: -24px 0; 22 | } 23 | .icheckbox_square-yellow.checked { 24 | background-position: -48px 0; 25 | } 26 | .icheckbox_square-yellow.disabled { 27 | background-position: -72px 0; 28 | cursor: default; 29 | } 30 | .icheckbox_square-yellow.checked.disabled { 31 | background-position: -96px 0; 32 | } 33 | 34 | .iradio_square-yellow { 35 | background-position: -120px 0; 36 | } 37 | .iradio_square-yellow.hover { 38 | background-position: -144px 0; 39 | } 40 | .iradio_square-yellow.checked { 41 | background-position: -168px 0; 42 | } 43 | .iradio_square-yellow.disabled { 44 | background-position: -192px 0; 45 | cursor: default; 46 | } 47 | .iradio_square-yellow.checked.disabled { 48 | background-position: -216px 0; 49 | } 50 | 51 | /* HiDPI support */ 52 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) { 53 | .icheckbox_square-yellow, 54 | .iradio_square-yellow { 55 | background-image: url(yellow@2x.png); 56 | -webkit-background-size: 240px 24px; 57 | background-size: 240px 24px; 58 | } 59 | } -------------------------------------------------------------------------------- /static/plugins/icheck/skins/square/yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/square/yellow.png -------------------------------------------------------------------------------- /static/plugins/icheck/skins/square/yellow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icheck/skins/square/yellow@2x.png -------------------------------------------------------------------------------- /static/plugins/icons/font-awesome/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/font-awesome/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /static/plugins/icons/font-awesome/fonts/fontawesome-webfont-old.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/font-awesome/fonts/fontawesome-webfont-old.ttf -------------------------------------------------------------------------------- /static/plugins/icons/font-awesome/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/font-awesome/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /static/plugins/icons/font-awesome/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/font-awesome/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /static/plugins/icons/font-awesome/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/font-awesome/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /static/plugins/icons/font-awesome/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/font-awesome/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /static/plugins/icons/linea-icons/fonts/linea-arrows-10.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/linea-icons/fonts/linea-arrows-10.eot -------------------------------------------------------------------------------- /static/plugins/icons/linea-icons/fonts/linea-arrows-10.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/linea-icons/fonts/linea-arrows-10.ttf -------------------------------------------------------------------------------- /static/plugins/icons/linea-icons/fonts/linea-arrows-10.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/linea-icons/fonts/linea-arrows-10.woff -------------------------------------------------------------------------------- /static/plugins/icons/linea-icons/fonts/linea-basic-10.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/linea-icons/fonts/linea-basic-10.eot -------------------------------------------------------------------------------- /static/plugins/icons/linea-icons/fonts/linea-basic-10.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/linea-icons/fonts/linea-basic-10.ttf -------------------------------------------------------------------------------- /static/plugins/icons/linea-icons/fonts/linea-basic-10.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/linea-icons/fonts/linea-basic-10.woff -------------------------------------------------------------------------------- /static/plugins/icons/linea-icons/fonts/linea-basic-elaboration-10.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/linea-icons/fonts/linea-basic-elaboration-10.eot -------------------------------------------------------------------------------- /static/plugins/icons/linea-icons/fonts/linea-basic-elaboration-10.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/linea-icons/fonts/linea-basic-elaboration-10.ttf -------------------------------------------------------------------------------- /static/plugins/icons/linea-icons/fonts/linea-basic-elaboration-10.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/linea-icons/fonts/linea-basic-elaboration-10.woff -------------------------------------------------------------------------------- /static/plugins/icons/linea-icons/fonts/linea-ecommerce-10.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/linea-icons/fonts/linea-ecommerce-10.eot -------------------------------------------------------------------------------- /static/plugins/icons/linea-icons/fonts/linea-ecommerce-10.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/linea-icons/fonts/linea-ecommerce-10.ttf -------------------------------------------------------------------------------- /static/plugins/icons/linea-icons/fonts/linea-ecommerce-10.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/linea-icons/fonts/linea-ecommerce-10.woff -------------------------------------------------------------------------------- /static/plugins/icons/linea-icons/fonts/linea-music-10.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/linea-icons/fonts/linea-music-10.eot -------------------------------------------------------------------------------- /static/plugins/icons/linea-icons/fonts/linea-music-10.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/linea-icons/fonts/linea-music-10.ttf -------------------------------------------------------------------------------- /static/plugins/icons/linea-icons/fonts/linea-music-10.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/linea-icons/fonts/linea-music-10.woff -------------------------------------------------------------------------------- /static/plugins/icons/linea-icons/fonts/linea-software-10.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/linea-icons/fonts/linea-software-10.eot -------------------------------------------------------------------------------- /static/plugins/icons/linea-icons/fonts/linea-software-10.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/linea-icons/fonts/linea-software-10.ttf -------------------------------------------------------------------------------- /static/plugins/icons/linea-icons/fonts/linea-software-10.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/linea-icons/fonts/linea-software-10.woff -------------------------------------------------------------------------------- /static/plugins/icons/linea-icons/fonts/linea-weather-10.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/linea-icons/fonts/linea-weather-10.eot -------------------------------------------------------------------------------- /static/plugins/icons/linea-icons/fonts/linea-weather-10.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/linea-icons/fonts/linea-weather-10.ttf -------------------------------------------------------------------------------- /static/plugins/icons/linea-icons/fonts/linea-weather-10.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/linea-icons/fonts/linea-weather-10.woff -------------------------------------------------------------------------------- /static/plugins/icons/simple-line-icons/fonts/Simple-Line-Icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/simple-line-icons/fonts/Simple-Line-Icons.eot -------------------------------------------------------------------------------- /static/plugins/icons/simple-line-icons/fonts/Simple-Line-Icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/simple-line-icons/fonts/Simple-Line-Icons.ttf -------------------------------------------------------------------------------- /static/plugins/icons/simple-line-icons/fonts/Simple-Line-Icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/simple-line-icons/fonts/Simple-Line-Icons.woff -------------------------------------------------------------------------------- /static/plugins/icons/simple-line-icons/fonts/Simple-Line-Icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/simple-line-icons/fonts/Simple-Line-Icons.woff2 -------------------------------------------------------------------------------- /static/plugins/icons/themify-icons/fonts/themify.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/themify-icons/fonts/themify.eot -------------------------------------------------------------------------------- /static/plugins/icons/themify-icons/fonts/themify.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/themify-icons/fonts/themify.ttf -------------------------------------------------------------------------------- /static/plugins/icons/themify-icons/fonts/themify.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/themify-icons/fonts/themify.woff -------------------------------------------------------------------------------- /static/plugins/icons/weather-icons/css/weather-icons-core.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'weathericons'; 3 | src: url('../fonts/weathericons-regular-webfont.eot'); 4 | src: url('../fonts/weathericons-regular-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/weathericons-regular-webfont.woff2') format('woff2'), url('../fonts/weathericons-regular-webfont.woff') format('woff'), url('../fonts/weathericons-regular-webfont.ttf') format('truetype'), url('../fonts/weathericons-regular-webfont.svg#weather_iconsregular') format('svg'); 5 | font-weight: normal; 6 | font-style: normal; 7 | } 8 | .wi { 9 | display: inline-block; 10 | font-family: 'weathericons'; 11 | font-style: normal; 12 | font-weight: normal; 13 | line-height: 1; 14 | -webkit-font-smoothing: antialiased; 15 | -moz-osx-font-smoothing: grayscale; 16 | } 17 | .wi-fw { 18 | text-align: center; 19 | width: 1.4em; 20 | } 21 | .wi-rotate-90 { 22 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); 23 | -webkit-transform: rotate(90deg); 24 | -ms-transform: rotate(90deg); 25 | transform: rotate(90deg); 26 | } 27 | .wi-rotate-180 { 28 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); 29 | -webkit-transform: rotate(180deg); 30 | -ms-transform: rotate(180deg); 31 | transform: rotate(180deg); 32 | } 33 | .wi-rotate-270 { 34 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); 35 | -webkit-transform: rotate(270deg); 36 | -ms-transform: rotate(270deg); 37 | transform: rotate(270deg); 38 | } 39 | .wi-flip-horizontal { 40 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); 41 | -webkit-transform: scale(-1, 1); 42 | -ms-transform: scale(-1, 1); 43 | transform: scale(-1, 1); 44 | } 45 | .wi-flip-vertical { 46 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); 47 | -webkit-transform: scale(1, -1); 48 | -ms-transform: scale(1, -1); 49 | transform: scale(1, -1); 50 | } 51 | -------------------------------------------------------------------------------- /static/plugins/icons/weather-icons/css/weather-icons-variables.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/weather-icons/css/weather-icons-variables.css -------------------------------------------------------------------------------- /static/plugins/icons/weather-icons/font/weathericons-regular-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/weather-icons/font/weathericons-regular-webfont.eot -------------------------------------------------------------------------------- /static/plugins/icons/weather-icons/font/weathericons-regular-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/weather-icons/font/weathericons-regular-webfont.ttf -------------------------------------------------------------------------------- /static/plugins/icons/weather-icons/font/weathericons-regular-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/weather-icons/font/weathericons-regular-webfont.woff -------------------------------------------------------------------------------- /static/plugins/icons/weather-icons/font/weathericons-regular-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Xpitz/pingAdmin/8c3027a6842efc1e20a217a1f6b1fbc6cad33e70/static/plugins/icons/weather-icons/font/weathericons-regular-webfont.woff2 -------------------------------------------------------------------------------- /static/plugins/multiselect/css/style.css: -------------------------------------------------------------------------------- 1 | .github.ribbon { 2 | position: fixed; 3 | display: block; 4 | top: 40px; 5 | right: 0; 6 | border: 0; 7 | z-index: 1001; 8 | } 9 | 10 | .prettyprint { 11 | padding: 10px!important; 12 | } 13 | 14 | #wrap { 15 | padding-top: 70px; 16 | } 17 | 18 | #home h1 { 19 | margin-bottom: 30px; 20 | } 21 | #demo, 22 | #examples, 23 | #support, 24 | #download { 25 | padding-top: 40px; 26 | } 27 | -------------------------------------------------------------------------------- /static/plugins/sidebar-nav/css/sidebar-nav.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * metismenu - v1.1.3 3 | * Easy menu jQuery plugin for Twitter Bootstrap 3 4 | * https://github.com/onokumus/metisMenu 5 | * 6 | * Made by Osman Nuri Okumus 7 | * Under MIT License 8 | */ 9 | 10 | .arrow{float:right;line-height:1.42857}.glyphicon.arrow:before{content:"\e079"}.active>a>.glyphicon.arrow:before{content:"\e114"}.fa.arrow:before{content:"\f104"}.active>a>.fa.arrow:before{content:"\f107"}.plus-times{float:right}.fa.plus-times:before{content:"\f067"}.active>a>.fa.plus-times{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}.plus-minus{float:right}.fa.plus-minus:before{content:"\f067"}.active>a>.fa.plus-minus:before{content:"\f068"} -------------------------------------------------------------------------------- /static/plugins/sidebar-nav/js/sidebar-nav.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * metismenu - v1.1.3 3 | * Easy menu jQuery plugin for Twitter Bootstrap 3 4 | * https://github.com/onokumus/metisMenu 5 | * 6 | * Made by Osman Nuri Okumus 7 | * Under MIT License 8 | */ 9 | !function(a,b,c){function d(b,c){this.element=a(b),this.settings=a.extend({},f,c),this._defaults=f,this._name=e,this.init()}var e="metisMenu",f={toggle:!0,doubleTapToGo:!1};d.prototype={init:function(){var b=this.element,d=this.settings.toggle,f=this;this.isIE()<=9?(b.find("li.active").has("ul").children("ul").collapse("show"),b.find("li").not(".active").has("ul").children("ul").collapse("hide")):(b.find("li.active").has("ul").children("ul").addClass("collapse in"),b.find("li").not(".active").has("ul").children("ul").addClass("collapse")),f.settings.doubleTapToGo&&b.find("li.active").has("ul").children("a").addClass("doubleTapToGo"),b.find("li").has("ul").children("a").on("click."+e,function(b){return b.preventDefault(),f.settings.doubleTapToGo&&f.doubleTapToGo(a(this))&&"#"!==a(this).attr("href")&&""!==a(this).attr("href")?(b.stopPropagation(),void(c.location=a(this).attr("href"))):(a(this).parent("li").toggleClass("active").children("ul").collapse("toggle"),void(d&&a(this).parent("li").siblings().removeClass("active").children("ul.in").collapse("hide")))})},isIE:function(){for(var a,b=3,d=c.createElement("div"),e=d.getElementsByTagName("i");d.innerHTML="",e[0];)return b>4?b:a},doubleTapToGo:function(a){var b=this.element;return a.hasClass("doubleTapToGo")?(a.removeClass("doubleTapToGo"),!0):a.parent().children("ul").length?(b.find(".doubleTapToGo").removeClass("doubleTapToGo"),a.addClass("doubleTapToGo"),!1):void 0},remove:function(){this.element.off("."+e),this.element.removeData(e)}},a.fn[e]=function(b){return this.each(function(){var c=a(this);c.data(e)&&c.data(e).remove(),c.data(e,new d(this,b))}),this}}(jQuery,window,document); -------------------------------------------------------------------------------- /static/plugins/styleswitcher/js/jQuery.style.switcher.js: -------------------------------------------------------------------------------- 1 | // Theme color settings 2 | $(document).ready(function () { 3 | function store(name, val) { 4 | if (typeof (Storage) !== "undefined") { 5 | localStorage.setItem(name, val); 6 | } else { 7 | window.alert('Please use a modern browser to properly view this template!'); 8 | } 9 | } 10 | $("*[data-theme]").click(function (e) { 11 | e.preventDefault(); 12 | var currentStyle = $(this).attr('data-theme'); 13 | store('theme', currentStyle); 14 | $('#theme').attr({ 15 | href: '/static/css/colors/' + currentStyle + '.css' 16 | }) 17 | }); 18 | 19 | var currentTheme = get('theme'); 20 | if (currentTheme) { 21 | $('#theme').attr({ 22 | href: '/static/css/colors/' + currentTheme + '.css' 23 | }); 24 | } 25 | // color selector 26 | $('#themecolors').on('click', 'a', function () { 27 | $('#themecolors li a').removeClass('working'); 28 | $(this).addClass('working') 29 | }); 30 | 31 | }); 32 | 33 | function get(name) { 34 | 35 | } 36 | 37 | $(document).ready(function () { 38 | $("*[data-theme]").click(function (e) { 39 | e.preventDefault(); 40 | var currentStyle = $(this).attr('data-theme'); 41 | store('theme', currentStyle); 42 | $('#theme').attr({ 43 | href: '/static/css/colors/' + currentStyle + '.css' 44 | }) 45 | }); 46 | 47 | var currentTheme = get('theme'); 48 | if (currentTheme) { 49 | $('#theme').attr({ 50 | href: '/static/css/colors/' + currentTheme + '.css' 51 | }); 52 | } 53 | // color selector 54 | $('#themecolors').on('click', 'a', function () { 55 | $('#themecolors li a').removeClass('working'); 56 | $(this).addClass('working') 57 | }); 58 | }); 59 | -------------------------------------------------------------------------------- /static/plugins/switchery/css/switchery.min.css: -------------------------------------------------------------------------------- 1 | .switchery{background-color:#fff;border:1px solid #dfdfdf;border-radius:20px;cursor:pointer;display:inline-block;height:30px;position:relative;vertical-align:middle;width:50px;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;box-sizing:content-box;background-clip:content-box}.switchery>small{background:#fff;border-radius:100%;box-shadow:0 1px 3px rgba(0,0,0,0.4);height:30px;position:absolute;top:0;width:30px}.switchery-small{border-radius:20px;height:20px;width:33px}.switchery-small>small{height:20px;width:20px}.switchery-large{border-radius:40px;height:40px;width:66px}.switchery-large>small{height:40px;width:40px} -------------------------------------------------------------------------------- /templates/403.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | pingAdmin - The DevOps Platform 11 | 12 | {% include "base/_css.html" %} 13 | 14 | 15 | 16 |
17 |
18 |
19 |

403

20 |

Forbidden Error

21 |

You don't have permission to access on this server.

22 | Back to home
23 |
2018 © pingAdmin.
24 |
25 |
26 | {% include "base/_js.html" %} 27 | 28 | 29 | -------------------------------------------------------------------------------- /templates/base/_css.html: -------------------------------------------------------------------------------- 1 | {% load static %} 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | {##} 30 | {##} 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /templates/base/_js.html: -------------------------------------------------------------------------------- 1 | {% load static %} 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | {##} 39 | {##} 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | {##} 50 | --------------------------------------------------------------------------------