From 2e8820508adecbd995f928da02eced8b4b2fec3c Mon Sep 17 00:00:00 2001 From: Bob <1397910458@qq.com> Date: Thu, 20 Aug 2020 22:53:57 +0800 Subject: [PATCH 1/4] #view --- dashboard/views.py | 3 +- polls/views.py | 86 +++++++++++++++++++++++----------------------- 2 files changed, 45 insertions(+), 44 deletions(-) diff --git a/dashboard/views.py b/dashboard/views.py index 3515809..f24d399 100644 --- a/dashboard/views.py +++ b/dashboard/views.py @@ -48,6 +48,7 @@ def user_login(request): except CaptchaStore.DoesNotExist: messages.error(request, '验证码错误') return HttpResponseRedirect('/login/') + print(username,password) if username is not None and password is not None: try: # user = authenticate(username=username, password=password) @@ -61,7 +62,7 @@ def user_login(request): else: messages.error(request, '账号或密码错误,请您确认账号和密码') except: - messages.error(request, '账号或密码错误,请您确认账号和密码') + messages.error(request, '111') return render(request,'dashboard/login.html',{'hash_key':hash_key,'image_url':image_url}) def user_logout(request): logout(request) diff --git a/polls/views.py b/polls/views.py index 3b1a8ef..50a59f7 100644 --- a/polls/views.py +++ b/polls/views.py @@ -1,43 +1,43 @@ -from django.shortcuts import render -from django.http import HttpResponse, JsonResponse -from django.contrib.auth import get_user_model -from django.views.decorators.csrf import csrf_exempt - -# Create your views here. - - -def index(request): - username = request.GET.get('username') - password = request.GET.get('password') - print(username, password) - return JsonResponse({'status': 'error', 'message': '用户名或密码错误'}) - - -def status_500(request): - return HttpResponse(status=500) - - -def status_401(request): - return HttpResponse(status=401) - - -@csrf_exempt -def polls_login(request): - if request.method == 'POST': - phone = request.POST.get('phone') - password = request.POST.get('password') - UserModel = get_user_model() - user = UserModel.objects.filter(first_name=phone).first() - if not user: - return JsonResponse({'status': 'error', 'message': '用户名或密码错误'}) - - u = authenticate(request, username=user.username, password=password) - if u is not None: - login(request, u) - print(u) - result = dict() - return JsonResponse(result) - else: - return JsonResponse({'status': 'error', 'message': '用户名或密码错误'}) - else: - return JsonResponse({}) +from django.shortcuts import render +from django.http import HttpResponse, JsonResponse +from django.contrib.auth import get_user_model, authenticate, login +from django.views.decorators.csrf import csrf_exempt + +# Create your views here. + + +def index(request): + username = request.GET.get('username') + password = request.GET.get('password') + print(username, password) + return JsonResponse({'status': 'error', 'message': '用户名或密码错误'}) + + +def status_500(request): + return HttpResponse(status=500) + + +def status_401(request): + return HttpResponse(status=401) + + +@csrf_exempt +def polls_login(request): + if request.method == 'POST': + phone = request.POST.get('phone') + password = request.POST.get('password') + UserModel = get_user_model() + user = UserModel.objects.filter(first_name=phone).first() + if not user: + return JsonResponse({'status': 'error', 'message': '用户名或密码错误'}) + + u = authenticate(request, username=user.username, password=password) + if u is not None: + login(request, u) + print(u) + result = dict() + return JsonResponse(result) + else: + return JsonResponse({'status': 'error', 'message': '用户名或密码错误'}) + else: + return JsonResponse({}) From 1aabd1a5c61e28201a029b08d0a184b2901b8e3c Mon Sep 17 00:00:00 2001 From: Bob <1397910458@qq.com> Date: Sun, 23 Aug 2020 12:06:04 +0800 Subject: [PATCH 2/4] =?UTF-8?q?#=E7=94=A8=E6=88=B7=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E3=80=81=E6=95=B0=E6=8D=AE=E5=BA=93=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- NewMediaMonitoring/settings.py | 306 +- dashboard/models.py | 716 +- .../templates/dashboard/base/header.html | 764 +- dashboard/templates/dashboard/base/left.html | 382 +- dashboard/templates/dashboard/index.html | 1110 +-- dashboard/templates/dashboard/login.html | 298 +- dashboard/templates/dashboard/register.html | 376 +- dashboard/views.py | 30 +- .../management/user-management-update.html | 119 + .../templates/management/user-management.html | 160 +- management/urls.py | 95 +- management/views.py | 1773 ++-- .../upload/cover/20181201110659913.PNG | Bin .../cover/20181201110659913_85e25PV.PNG | Bin .../cover/20181201110659913_ie84dq3.PNG | Bin {static => media}/upload/cover/weibo.png | Bin {static => media}/upload/cover/weixin.png | Bin .../upload/cover/weixin_T3Y4A36.png | Bin .../upload/cover/weixin_TC0D6fQ.png | Bin .../upload/cover/微信图片_20200724112643.jpg | Bin .../cover/微信图片_20200724112643_deab8x0.jpg | Bin .../upload/groupimage/20181201110659913.PNG | Bin .../groupimage/微信图片_20200724112643.jpg | Bin .../upload/profile/20181201110659913.PNG | Bin .../profile/微信图片_20200724112643.jpg | Bin .../微信图片_20200724112643_4e2NSOO.jpg | Bin 0 -> 23938 bytes .../微信图片_20200724112643_6VlW7BD.jpg | Bin 0 -> 23938 bytes .../微信图片_20200724112643_CkX05Bp.jpg | Bin 0 -> 23938 bytes .../微信图片_20200724112643_Umb7HT3.jpg | Bin 0 -> 23938 bytes .../微信图片_20200724112643_pakJc7t.jpg | Bin 0 -> 23938 bytes {static => media}/upload/qita.png | Bin {static => media}/upload/toutiao.png | Bin {static => media}/upload/weibo.png | Bin {static => media}/upload/weixin.png | Bin static/js/scripts.js | 7276 ++++++++--------- static/media/cover/20181201110659913.PNG | Bin 0 -> 38731 bytes .../media/cover/20181201110659913_85e25PV.PNG | Bin 0 -> 38731 bytes .../media/cover/20181201110659913_ie84dq3.PNG | Bin 0 -> 38731 bytes static/media/cover/weibo.png | Bin 0 -> 7699 bytes static/media/cover/weixin.png | Bin 0 -> 7561 bytes static/media/cover/weixin_T3Y4A36.png | Bin 0 -> 7561 bytes static/media/cover/weixin_TC0D6fQ.png | Bin 0 -> 7561 bytes .../media/cover/微信图片_20200724112643.jpg | Bin 0 -> 23938 bytes .../cover/微信图片_20200724112643_deab8x0.jpg | Bin 0 -> 23938 bytes static/media/groupimage/20181201110659913.PNG | Bin 0 -> 38731 bytes .../groupimage/微信图片_20200724112643.jpg | Bin 0 -> 23938 bytes static/media/profile/20181201110659913.PNG | Bin 0 -> 38731 bytes .../media/profile/微信图片_20200724112643.jpg | Bin 0 -> 23938 bytes static/media/qita.png | Bin 0 -> 12336 bytes static/media/toutiao.png | Bin 0 -> 8883 bytes static/media/weibo.png | Bin 0 -> 7699 bytes static/media/weixin.png | Bin 0 -> 7561 bytes 52 files changed, 6798 insertions(+), 6607 deletions(-) create mode 100644 management/templates/management/user-management-update.html rename {static => media}/upload/cover/20181201110659913.PNG (100%) rename {static => media}/upload/cover/20181201110659913_85e25PV.PNG (100%) rename {static => media}/upload/cover/20181201110659913_ie84dq3.PNG (100%) rename {static => media}/upload/cover/weibo.png (100%) rename {static => media}/upload/cover/weixin.png (100%) rename {static => media}/upload/cover/weixin_T3Y4A36.png (100%) rename {static => media}/upload/cover/weixin_TC0D6fQ.png (100%) rename {static => media}/upload/cover/微信图片_20200724112643.jpg (100%) rename {static => media}/upload/cover/微信图片_20200724112643_deab8x0.jpg (100%) rename {static => media}/upload/groupimage/20181201110659913.PNG (100%) rename {static => media}/upload/groupimage/微信图片_20200724112643.jpg (100%) rename {static => media}/upload/profile/20181201110659913.PNG (100%) rename {static => media}/upload/profile/微信图片_20200724112643.jpg (100%) create mode 100644 media/upload/profile/微信图片_20200724112643_4e2NSOO.jpg create mode 100644 media/upload/profile/微信图片_20200724112643_6VlW7BD.jpg create mode 100644 media/upload/profile/微信图片_20200724112643_CkX05Bp.jpg create mode 100644 media/upload/profile/微信图片_20200724112643_Umb7HT3.jpg create mode 100644 media/upload/profile/微信图片_20200724112643_pakJc7t.jpg rename {static => media}/upload/qita.png (100%) rename {static => media}/upload/toutiao.png (100%) rename {static => media}/upload/weibo.png (100%) rename {static => media}/upload/weixin.png (100%) create mode 100644 static/media/cover/20181201110659913.PNG create mode 100644 static/media/cover/20181201110659913_85e25PV.PNG create mode 100644 static/media/cover/20181201110659913_ie84dq3.PNG create mode 100644 static/media/cover/weibo.png create mode 100644 static/media/cover/weixin.png create mode 100644 static/media/cover/weixin_T3Y4A36.png create mode 100644 static/media/cover/weixin_TC0D6fQ.png create mode 100644 static/media/cover/微信图片_20200724112643.jpg create mode 100644 static/media/cover/微信图片_20200724112643_deab8x0.jpg create mode 100644 static/media/groupimage/20181201110659913.PNG create mode 100644 static/media/groupimage/微信图片_20200724112643.jpg create mode 100644 static/media/profile/20181201110659913.PNG create mode 100644 static/media/profile/微信图片_20200724112643.jpg create mode 100644 static/media/qita.png create mode 100644 static/media/toutiao.png create mode 100644 static/media/weibo.png create mode 100644 static/media/weixin.png diff --git a/NewMediaMonitoring/settings.py b/NewMediaMonitoring/settings.py index b45e0ea..9eb84b5 100644 --- a/NewMediaMonitoring/settings.py +++ b/NewMediaMonitoring/settings.py @@ -1,153 +1,153 @@ -""" -Django settings for NewMediaMonitoring project. - -Generated by 'django-admin startproject' using Django 2.1.8. - -For more information on this file, see -https://docs.djangoproject.com/en/2.1/topics/settings/ - -For the full list of settings and their values, see -https://docs.djangoproject.com/en/2.1/ref/settings/ -""" - -import os - -# Build paths inside the project like this: os.path.join(BASE_DIR, ...) -import sys - -BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) - -# Quick-start development settings - unsuitable for production -# See https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/ - -# SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = 'tj5m7-ns_6x_fvn2^q+7+2fopq!#7taqv!9ai(c_45i5!%m=*z' - -# SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True - -ALLOWED_HOSTS = ['*'] - -# Application definition - -INSTALLED_APPS = [ - 'django.contrib.admin', - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.messages', - 'django.contrib.staticfiles', - 'django_token', - 'corsheaders', - 'bootstrap3', - 'captcha', - 'dashboard', - 'management' -] - -MIDDLEWARE = [ - 'django.middleware.security.SecurityMiddleware', - 'django.middleware.locale.LocaleMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - 'corsheaders.middleware.CorsMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'django.middleware.clickjacking.XFrameOptionsMiddleware', - 'django_token.middleware.TokenMiddleware', -] - -ROOT_URLCONF = 'NewMediaMonitoring.urls' - -TEMPLATES = [ - { - 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [os.path.join(BASE_DIR, 'templates')], - 'APP_DIRS': True, - 'OPTIONS': { - 'context_processors': [ - 'django.template.context_processors.debug', - 'django.template.context_processors.request', - 'django.contrib.auth.context_processors.auth', - 'django.contrib.messages.context_processors.messages', - ], - }, - }, -] - -WSGI_APPLICATION = 'NewMediaMonitoring.wsgi.application' - -# Database -# https://docs.djangoproject.com/en/2.1/ref/settings/#databases - -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.postgresql_psycopg2', - 'NAME': 'newmediaDB1', - 'USER': 'newmedia', - 'PASSWORD': 'newmedia2020!@#', - 'HOST': '210.77.68.250', - 'PORT': '5432', - } -} - -# Password validation -# https://docs.djangoproject.com/en/2.1/ref/settings/#auth-password-validators - -AUTH_PASSWORD_VALIDATORS = [ - { - 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', - }, -] - -AUTHENTICATION_BACKENDS = ( - 'django.contrib.auth.backends.ModelBackend', - 'django_token.backends.TokenBackend' -) - -# Internationalization -# https://docs.djangoproject.com/en/2.1/topics/i18n/ - -LANGUAGE_CODE = 'zh-Hans' - -TIME_ZONE = 'Asia/Shanghai' - -USE_I18N = True - -USE_L10N = True - -USE_TZ = False - -# Static files (CSS, JavaScript, Images) -# https://docs.djangoproject.com/en/2.1/howto/static-files/ - -STATIC_URL = '/static/' -STATICFILES_DIRS = [ - os.path.join(BASE_DIR, "static"), -] -STATIC_ROOT = '/var/www/p3/newmediamonitoring/static/' -MEDIA_URL = '/media/' -MEDIA_ROOT = '/var/www/p3/newmediamonitoring/media/' - -"""用户模块扩展部分""" -AUTH_PROFILE_MODULE = 'djangoadmin.myadmin.UserProfile' -"""用户模块扩展完成""" - -CORS_ORIGIN_ALLOW_ALL = True - -CORS_URLS_REGEX = r'^/polls/.*$' - -try: - from .local_settings import * -except ImportError as e: - pass +""" +Django settings for NewMediaMonitoring project. + +Generated by 'django-admin startproject' using Django 2.1.8. + +For more information on this file, see +https://docs.djangoproject.com/en/2.1/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/2.1/ref/settings/ +""" + +import os + +# Build paths inside the project like this: os.path.join(BASE_DIR, ...) +import sys + +BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'tj5m7-ns_6x_fvn2^q+7+2fopq!#7taqv!9ai(c_45i5!%m=*z' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = ['*'] + +# Application definition + +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'django_token', + 'corsheaders', + 'bootstrap3', + 'captcha', + 'dashboard', + 'management' +] + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'django.middleware.locale.LocaleMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'corsheaders.middleware.CorsMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', + 'django_token.middleware.TokenMiddleware', +] + +ROOT_URLCONF = 'NewMediaMonitoring.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [os.path.join(BASE_DIR, 'templates')], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'NewMediaMonitoring.wsgi.application' + +# Database +# https://docs.djangoproject.com/en/2.1/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.postgresql_psycopg2', + 'NAME': 'newmediaDB1', + 'USER': 'newmedia', + 'PASSWORD': 'newmedia2020!@#', + 'HOST': '210.77.68.250', + 'PORT': '5432', + } +} + +# Password validation +# https://docs.djangoproject.com/en/2.1/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + +AUTHENTICATION_BACKENDS = ( + 'django.contrib.auth.backends.ModelBackend', + 'django_token.backends.TokenBackend' +) + +# Internationalization +# https://docs.djangoproject.com/en/2.1/topics/i18n/ + +LANGUAGE_CODE = 'zh-Hans' + +TIME_ZONE = 'Asia/Shanghai' + +USE_I18N = True + +USE_L10N = True + +USE_TZ = False + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/2.1/howto/static-files/ + +STATIC_URL = '/static/' +STATICFILES_DIRS = [ + os.path.join(BASE_DIR, "static"), +] +STATIC_ROOT = '/var/www/p3/newmediamonitoring/static/' +MEDIA_URL = '/static/media/' +MEDIA_ROOT = '/var/www/p3/newmediamonitoring/media/' + +"""用户模块扩展部分""" +AUTH_PROFILE_MODULE = 'djangoadmin.myadmin.UserProfile' +"""用户模块扩展完成""" + +CORS_ORIGIN_ALLOW_ALL = True + +CORS_URLS_REGEX = r'^/polls/.*$' + +try: + from .local_settings import * +except ImportError as e: + pass diff --git a/dashboard/models.py b/dashboard/models.py index de100e8..5672aa1 100644 --- a/dashboard/models.py +++ b/dashboard/models.py @@ -1,357 +1,359 @@ -import uuid - -from django.contrib.auth.models import User -from django.db import models - - -# Create your models here. -class Group_type(models.Model): - id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) - type = models.CharField('群组类型',max_length=256,null=True,blank=True) - - def __str__(self): - return self.type -# 群组 -class Group(models.Model): - GROUP_STATUS_CHOICES = ( - ('0','关闭'), - ('1','开启') - ) - id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) - name = models.CharField('群组名称', max_length=256, null=True, blank=True) - presentation = models.TextField('群组描述', null=True, blank=True) - image = models.FileField(upload_to='groupimage', null=True, blank=True) - type = models.ForeignKey(Group_type,on_delete=models.CASCADE,null=True,blank=True) - status = models.CharField('状态',max_length=256,null=True,blank=True,choices=GROUP_STATUS_CHOICES) - province = models.CharField('省', max_length=256, null=True, blank=True) - cities = models.CharField('市', max_length=256, null=True, blank=True) - district = models.CharField('县', max_length=256, null=True, blank=True) - town = models.CharField('乡', max_length=256, null=True, blank=True) - village = models.CharField('村', max_length=256, null=True, blank=True) - - created = models.DateTimeField('创建时间', auto_now_add=True) - updated = models.DateTimeField('更新时间', auto_now=True) - - def __str__(self): - return self.name - -#群组管理员 -class Group_admin(models.Model): - id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) - user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True) - group = models.ForeignKey(Group, on_delete=models.CASCADE, null=True, blank=True) - created = models.DateTimeField('创建时间', auto_now_add=True) - updated = models.DateTimeField('更新时间', auto_now=True) - - def __str__(self): - return self.group.name -#群组成员 -class Group_user(models.Model): - id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) - user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True) - group = models.ForeignKey(Group, on_delete=models.CASCADE, null=True, blank=True) - created = models.DateTimeField('创建时间', auto_now_add=True) - updated = models.DateTimeField('更新时间', auto_now=True) - - def __str__(self): - return self.user.username -# 权限等级 -class Level(models.Model): - id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) - name = models.CharField('等级名', max_length=256, null=True, blank=True) - level = models.IntegerField('级别', blank=True, null=True,default=0) - created = models.DateTimeField('创建时间', auto_now_add=True) - updated = models.DateTimeField('更新时间', auto_now=True) - - - def __str__(self): - return self.name -#单位类型 -class Organizationtype(models.Model): - id = models.UUIDField('id',primary_key=True,default=uuid.uuid4) - organizationtype = models.CharField('单位类型',blank=True,null=True,max_length=256) - created = models.DateTimeField('创建时间', auto_now_add=True) - updated = models.DateTimeField('更新时间', auto_now=True) - - def __str__(self): - return self.organizationtype - - -# 单位 -class Organization(models.Model): - id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) - name = models.CharField('单位名', max_length=256, null=True, blank=True) - image = models.FileField(upload_to='cover', null=True, blank=True) - organizationtype = models.ForeignKey(Organizationtype,on_delete=models.CASCADE, null=True, blank=True) - province = models.CharField('省',max_length=256,null=True,blank=True) - cities = models.CharField('市',max_length=256,null=True,blank=True) - district = models.CharField('县',max_length=256,null=True,blank=True) - town = models.CharField('乡',max_length=256,null=True,blank=True) - village = models.CharField('村',max_length=256,null=True,blank=True) - # group = models.ForeignKey(Group, on_delete=models.CASCADE, null=True, blank=True) - # level = models.ForeignKey(Level,on_delete=models.CASCADE,null=True,blank=True) - created = models.DateTimeField('创建时间', auto_now_add=True) - updated = models.DateTimeField('更新时间', auto_now=True) - - def __str__(self): - return self.name - - -# 扩展用户表 -class Userprofile(models.Model): - user = models.ForeignKey(User, on_delete=models.CASCADE) - name = models.CharField('姓名', null=True, blank=True, max_length=256) - sex = models.CharField('性别', null=True, blank=True, max_length=256) - image = models.FileField(upload_to='profile', null=True, blank=True) - organization = models.ForeignKey(Organization, on_delete=models.CASCADE, null=True, blank=True) - - - def __str__(self): - return self.user.username - - -def create_user_profile(sender, instance, created, **kwargs): - """Create the UserProfile when a new User is saved""" - if created: - profile = Userprofile() - profile.user = instance - profile.save() - - -# 微信公众号 -class Weixin(models.Model): - WEIXIN_STATUS_CHOICES = ( - ('1', '开启'), - ('0', '关闭') - ) - id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) - code = models.CharField('微信公众号', max_length=256, null=True, blank=True) - weixinid = models.CharField('微信ID',max_length=256,null=True,blank=True) - alias = models.CharField('别名',max_length=256,null=True,blank=True) - image = models.FileField(upload_to='cover', null=True, blank=True) - organization = models.ForeignKey(Organization, on_delete=models.CASCADE, null=True, blank=True) - status = models.CharField('状态',max_length=256,null=True,blank=True,choices=WEIXIN_STATUS_CHOICES) - created = models.DateTimeField('创建时间', auto_now_add=True) - updated = models.DateTimeField('更新时间', auto_now=True) - - def __str__(self): - return self.code - - -# 微信文章采集 -class Weixin_data(models.Model): - id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) - title = models.CharField('文章标题', max_length=256, null=True, blank=True) - site = models.CharField('位置', max_length=256, null=True, blank=True) - date = models.CharField('发文时间', max_length=256, null=True, blank=True) - original = models.BooleanField('是否原创', null=True, blank=True) - url = models.CharField('文章链接', max_length=256, null=True, blank=True) - author = models.CharField('作者', max_length=256, null=True, blank=True) - comment = models.CharField('评论数', max_length=256, null=True, blank=True) - reply = models.CharField('作者回复数', max_length=256, null=True, blank=True) - content = models.TextField('正文', null=True, blank=True) - weixin = models.ForeignKey(Weixin, on_delete=models.CASCADE, null=True, blank=True) - created = models.DateTimeField('创建时间', auto_now_add=True) - updated = models.DateTimeField('更新时间', auto_now=True) - - def __str__(self): - return self.title - - -# 微信评论 -class Weixin_comment(models.Model): - id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) - comment = models.TextField('评论', null=True, blank=True) - user = models.CharField('用户', max_length=256, null=True, blank=True) - reply = models.TextField('回复', null=True, blank=True) - weixin = models.ForeignKey(Weixin, on_delete=models.CASCADE, null=True, blank=True) - created = models.DateTimeField('创建时间', auto_now_add=True) - updated = models.DateTimeField('更新时间', auto_now=True) - - def __str__(self): - return self.user - - -# 微信错别字 -class Weixin_Wrong(models.Model): - id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) - wrong = models.CharField('错别字', max_length=256, null=True, blank=True) - idea = models.CharField('建议', max_length=256, null=True, blank=True) - site = models.CharField('位置', max_length=256, null=True, blank=True) - weixin = models.ForeignKey(Weixin, on_delete=models.CASCADE, null=True, blank=True) - change = models.BooleanField('是否已修改', null=True, blank=True) - created = models.DateTimeField('创建时间', auto_now_add=True) - updated = models.DateTimeField('更新时间', auto_now=True) - - def __str__(self): - return self.wrong - - -# 微博 -class Weibo(models.Model): - WEIBO_STATUS_CHOICES = ( - ('1', '开启'), - ('0', '关闭') - ) - id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) - code = models.CharField('微博号', max_length=256, null=True, blank=True) - weiboid = models.CharField('微博ID', max_length=256, null=True, blank=True) - alias = models.CharField('别名', max_length=256, null=True, blank=True) - image = models.FileField(upload_to='cover', null=True, blank=True) - organization = models.ForeignKey(Organization, on_delete=models.CASCADE, null=True, blank=True) - status = models.CharField('状态', max_length=256, null=True, blank=True, choices=WEIBO_STATUS_CHOICES) - created = models.DateTimeField('创建时间', auto_now_add=True) - updated = models.DateTimeField('更新时间', auto_now=True) - - def __str__(self): - return self.code - - -# 微博文章采集 -class Weibi_data(models.Model): - id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) - weiboid = models.CharField('微博ID', max_length=256, null=True, blank=True) - content = models.TextField('正文', null=True, blank=True) - url = models.CharField('文章url', max_length=256, null=True, blank=True) - originalimageurl = models.CharField('原始图片url', max_length=256, null=True, blank=True) - transpondimageurl = models.CharField('转发图片url', max_length=256, null=True, blank=True) - original = models.BooleanField('是否原创', null=True, blank=True) - site = models.CharField('发布位置', max_length=256, null=True, blank=True) - date = models.CharField('发布时间', max_length=256, null=True, blank=True) - tool = models.CharField('发布工具', max_length=256, null=True, blank=True) - like = models.CharField('点赞数', max_length=256, null=True, blank=True) - transpond = models.CharField('转发数', max_length=256, null=True, blank=True) - comment = models.CharField('评论数', max_length=256, null=True, blank=True) - title = models.CharField('文章标题', max_length=256, null=True, blank=True) - weibo = models.ForeignKey(Weibo, on_delete=models.CASCADE, null=True, blank=True) - created = models.DateTimeField('创建时间', auto_now_add=True) - updated = models.DateTimeField('更新时间', auto_now=True) - - def __str__(self): - return self.title - - -# 微博错别字 -class Weibo_Wrong(models.Model): - id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) - wrong = models.CharField('错别字', max_length=256, null=True, blank=True) - idea = models.CharField('建议', max_length=256, null=True, blank=True) - site = models.CharField('位置', max_length=256, null=True, blank=True) - weibo = models.ForeignKey(Weibo, on_delete=models.CASCADE, null=True, blank=True) - change = models.BooleanField('是否已修改', null=True, blank=True) - created = models.DateTimeField('创建时间', auto_now_add=True) - updated = models.DateTimeField('更新时间', auto_now=True) - - -# 今日头条 -class Toutiao(models.Model): - TOUTIAO_STATUS_CHOICES = ( - ('1', '开启'), - ('0', '关闭') - ) - id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) - code = models.CharField('头条号', max_length=256, null=True, blank=True) - toutiaoid = models.CharField('头条ID', max_length=256, null=True, blank=True) - alias = models.CharField('别名', max_length=256, null=True, blank=True) - image = models.FileField(upload_to='cover', null=True, blank=True) - organization = models.ForeignKey(Organization, on_delete=models.CASCADE, null=True, blank=True) - status = models.CharField('状态', max_length=256, null=True, blank=True, choices=TOUTIAO_STATUS_CHOICES) - created = models.DateTimeField('创建时间', auto_now_add=True) - updated = models.DateTimeField('更新时间', auto_now=True) - - def __str__(self): - return self.code - - -# 今日头条数据 -class Toutiao_data(models.Model): - id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) - title = models.CharField('标题', max_length=256, null=True, blank=True) - url = models.CharField('链接', max_length=256, null=True, blank=True) - img = models.CharField('缩略图', max_length=256, null=True, blank=True) - count = models.CharField('阅读数', max_length=256, null=True, blank=True) - commentcount = models.CharField('评论数', max_length=256, null=True, blank=True) - reply = models.CharField('作者回复数', max_length=256, null=True, blank=True) - date = models.CharField('时间', max_length=256, null=True, blank=True) - content = models.TextField('正文', null=True, blank=True) - comment = models.TextField('评论', null=True, blank=True) - toutiao = models.ForeignKey(Toutiao, on_delete=models.CASCADE, null=True, blank=True) - created = models.DateTimeField('创建时间', auto_now_add=True) - updated = models.DateTimeField('更新时间', auto_now=True) - - def __str__(self): - return self.title - - -# 今日头条评论 -class Toutiao_comment(models.Model): - id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) - comment = models.TextField('评论', null=True, blank=True) - user = models.CharField('用户', max_length=256, null=True, blank=True) - reply = models.TextField('回复', null=True, blank=True) - toutiao = models.ForeignKey(Toutiao, on_delete=models.CASCADE, null=True, blank=True) - created = models.DateTimeField('创建时间', auto_now_add=True) - updated = models.DateTimeField('更新时间', auto_now=True) - - def __str__(self): - return self.user - - -# 今日头条错别字 -class Toutiao_Wrong(models.Model): - id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) - wrong = models.CharField('错别字', max_length=256, null=True, blank=True) - idea = models.CharField('建议', max_length=256, null=True, blank=True) - site = models.CharField('位置', max_length=256, null=True, blank=True) - toutiao = models.ForeignKey(Toutiao, on_delete=models.CASCADE, null=True, blank=True) - change = models.BooleanField('是否已修改', null=True, blank=True) - created = models.DateTimeField('创建时间', auto_now_add=True) - updated = models.DateTimeField('更新时间', auto_now=True) - - def __str__(self): - return self.wrong - - -# 其他新媒体 -class Qita(models.Model): - QITA_STATUS_CHOICES = ( - ('1', '开启'), - ('0', '关闭') - ) - id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) - type = models.CharField('新媒体类型', max_length=256, null=True, blank=True) - name = models.CharField('新媒体名称', max_length=256, null=True, blank=True) - qitaid = models.CharField('新媒体ID', max_length=256, null=True, blank=True) - alias = models.CharField('别名', max_length=256, null=True, blank=True) - image = models.FileField(upload_to='cover', null=True, blank=True) - organization = models.ForeignKey(Organization, on_delete=models.CASCADE, null=True, blank=True) - status = models.CharField('状态', max_length=256, null=True, blank=True, choices=QITA_STATUS_CHOICES) - created = models.DateTimeField('创建时间', auto_now_add=True) - updated = models.DateTimeField('更新时间', auto_now=True) - - def __str__(self): - return self.name - -#其他新媒体监测 -class Qita_jc(models.Model): - id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) - mewnedia = models.ForeignKey(Qita,on_delete=models.CASCADE) - count = models.CharField('总发文量', max_length=256, null=True, blank=True) - count_jc = models.CharField('监测时间内发文量', max_length=256, null=True, blank=True) - comment = models.CharField('评论数', max_length=256, null=True, blank=True) - reply = models.CharField('作者回复数', max_length=256, null=True, blank=True) - date = models.CharField('最近发文日期', max_length=256, null=True, blank=True) - created = models.DateTimeField('创建时间', auto_now_add=True) - updated = models.DateTimeField('更新时间', auto_now=True) - - def __str__(self): - return self.mewnedia.name -#5级地名库 -class Area_code_2020(models.Model): - code = models.CharField('区划代码',max_length=256,null=True,blank=True) - name = models.CharField('名称',max_length=256,null=True,blank=True) - level = models.CharField('级别1-5,省市县镇村',max_length=256,null=True,blank=True) - pcode = models.CharField('父级区划代码',max_length=256,null=True,blank=True) - - def __str__(self): - return self.name +import uuid + +from django.contrib.auth.models import User +from django.db import models + +# 权限等级 +class Level(models.Model): + id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) + name = models.CharField('等级名', max_length=256, null=True, blank=True) + level = models.IntegerField('级别', blank=True, null=True,default=0) + created = models.DateTimeField('创建时间', auto_now_add=True) + updated = models.DateTimeField('更新时间', auto_now=True) + + + def __str__(self): + return self.name +# Create your models here. +class Group_type(models.Model): + id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) + type = models.CharField('群组类型',max_length=256,null=True,blank=True) + + def __str__(self): + return self.type +# 群组 +class Group(models.Model): + GROUP_STATUS_CHOICES = ( + ('0','关闭'), + ('1','开启') + ) + id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) + name = models.CharField('群组名称', max_length=256, null=True, blank=True) + presentation = models.TextField('群组描述', null=True, blank=True) + image = models.FileField(upload_to='groupimage', null=True, blank=True) + type = models.ForeignKey(Group_type,on_delete=models.CASCADE,null=True,blank=True) + status = models.CharField('状态',max_length=256,null=True,blank=True,choices=GROUP_STATUS_CHOICES) + province = models.CharField('省', max_length=256, null=True, blank=True) + cities = models.CharField('市', max_length=256, null=True, blank=True) + district = models.CharField('县', max_length=256, null=True, blank=True) + town = models.CharField('乡', max_length=256, null=True, blank=True) + village = models.CharField('村', max_length=256, null=True, blank=True) + + created = models.DateTimeField('创建时间', auto_now_add=True) + updated = models.DateTimeField('更新时间', auto_now=True) + + def __str__(self): + return self.name + +#群组管理员 +class Group_admin(models.Model): + id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) + user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True) + group = models.ForeignKey(Group, on_delete=models.CASCADE, null=True, blank=True) + created = models.DateTimeField('创建时间', auto_now_add=True) + updated = models.DateTimeField('更新时间', auto_now=True) + + def __str__(self): + return self.group.name +#群组成员 +class Group_user(models.Model): + id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) + user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True) + group = models.ForeignKey(Group, on_delete=models.CASCADE, null=True, blank=True) + created = models.DateTimeField('创建时间', auto_now_add=True) + updated = models.DateTimeField('更新时间', auto_now=True) + + def __str__(self): + return self.user.username + +#单位类型 +class Organizationtype(models.Model): + id = models.UUIDField('id',primary_key=True,default=uuid.uuid4) + organizationtype = models.CharField('单位类型',blank=True,null=True,max_length=256) + created = models.DateTimeField('创建时间', auto_now_add=True) + updated = models.DateTimeField('更新时间', auto_now=True) + + def __str__(self): + return self.organizationtype + + +# 单位 +class Organization(models.Model): + id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) + name = models.CharField('单位名', max_length=256, null=True, blank=True) + image = models.FileField(upload_to='cover', null=True, blank=True) + organizationtype = models.ForeignKey(Organizationtype,on_delete=models.CASCADE, null=True, blank=True) + province = models.CharField('省',max_length=256,null=True,blank=True) + cities = models.CharField('市',max_length=256,null=True,blank=True) + district = models.CharField('县',max_length=256,null=True,blank=True) + town = models.CharField('乡',max_length=256,null=True,blank=True) + village = models.CharField('村',max_length=256,null=True,blank=True) + # group = models.ForeignKey(Group, on_delete=models.CASCADE, null=True, blank=True) + # level = models.ForeignKey(Level,on_delete=models.CASCADE,null=True,blank=True) + created = models.DateTimeField('创建时间', auto_now_add=True) + updated = models.DateTimeField('更新时间', auto_now=True) + + def __str__(self): + return self.name + + +# 扩展用户表 +class Userprofile(models.Model): + user = models.ForeignKey(User, on_delete=models.CASCADE) + name = models.CharField('姓名', null=True, blank=True, max_length=256) + sex = models.CharField('性别', null=True, blank=True, max_length=256) + image = models.FileField(upload_to='profile', null=True, blank=True) + organization = models.ForeignKey(Organization, on_delete=models.CASCADE, null=True, blank=True) + #用户状态:注册进来默认为0,为未审核状态,审核后status=1 + status = models.IntegerField('用户状态',null=True,blank=True,default=0) + + + def __str__(self): + return self.user.username + + +def create_user_profile(sender, instance, created, **kwargs): + """Create the UserProfile when a new User is saved""" + if created: + profile = Userprofile() + profile.user = instance + profile.save() + + +# 微信公众号 +class Weixin(models.Model): + WEIXIN_STATUS_CHOICES = ( + ('1', '开启'), + ('0', '关闭') + ) + id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) + code = models.CharField('微信公众号', max_length=256, null=True, blank=True) + weixinid = models.CharField('微信ID',max_length=256,null=True,blank=True) + alias = models.CharField('别名',max_length=256,null=True,blank=True) + image = models.FileField(upload_to='cover', null=True, blank=True) + organization = models.ForeignKey(Organization, on_delete=models.CASCADE, null=True, blank=True) + status = models.CharField('状态',max_length=256,null=True,blank=True,choices=WEIXIN_STATUS_CHOICES) + created = models.DateTimeField('创建时间', auto_now_add=True) + updated = models.DateTimeField('更新时间', auto_now=True) + + def __str__(self): + return self.code + + +# 微信文章采集 +class Weixin_data(models.Model): + id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) + title = models.CharField('文章标题', max_length=256, null=True, blank=True) + site = models.CharField('位置', max_length=256, null=True, blank=True) + date = models.CharField('发文时间', max_length=256, null=True, blank=True) + original = models.BooleanField('是否原创', null=True, blank=True) + url = models.CharField('文章链接', max_length=256, null=True, blank=True) + author = models.CharField('作者', max_length=256, null=True, blank=True) + comment = models.CharField('评论数', max_length=256, null=True, blank=True) + reply = models.CharField('作者回复数', max_length=256, null=True, blank=True) + content = models.TextField('正文', null=True, blank=True) + weixin = models.ForeignKey(Weixin, on_delete=models.CASCADE, null=True, blank=True) + created = models.DateTimeField('创建时间', auto_now_add=True) + updated = models.DateTimeField('更新时间', auto_now=True) + + def __str__(self): + return self.title + + +# 微信评论 +class Weixin_comment(models.Model): + id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) + comment = models.TextField('评论', null=True, blank=True) + user = models.CharField('用户', max_length=256, null=True, blank=True) + reply = models.TextField('回复', null=True, blank=True) + weixin = models.ForeignKey(Weixin, on_delete=models.CASCADE, null=True, blank=True) + created = models.DateTimeField('创建时间', auto_now_add=True) + updated = models.DateTimeField('更新时间', auto_now=True) + + def __str__(self): + return self.user + + +# 微信错别字 +class Weixin_Wrong(models.Model): + id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) + wrong = models.CharField('错别字', max_length=256, null=True, blank=True) + idea = models.CharField('建议', max_length=256, null=True, blank=True) + site = models.CharField('位置', max_length=256, null=True, blank=True) + weixin = models.ForeignKey(Weixin, on_delete=models.CASCADE, null=True, blank=True) + change = models.BooleanField('是否已修改', null=True, blank=True) + created = models.DateTimeField('创建时间', auto_now_add=True) + updated = models.DateTimeField('更新时间', auto_now=True) + + def __str__(self): + return self.wrong + + +# 微博 +class Weibo(models.Model): + WEIBO_STATUS_CHOICES = ( + ('1', '开启'), + ('0', '关闭') + ) + id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) + code = models.CharField('微博号', max_length=256, null=True, blank=True) + weiboid = models.CharField('微博ID', max_length=256, null=True, blank=True) + alias = models.CharField('别名', max_length=256, null=True, blank=True) + image = models.FileField(upload_to='cover', null=True, blank=True) + organization = models.ForeignKey(Organization, on_delete=models.CASCADE, null=True, blank=True) + status = models.CharField('状态', max_length=256, null=True, blank=True, choices=WEIBO_STATUS_CHOICES) + created = models.DateTimeField('创建时间', auto_now_add=True) + updated = models.DateTimeField('更新时间', auto_now=True) + + def __str__(self): + return self.code + + +# 微博文章采集 +class Weibi_data(models.Model): + id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) + weiboid = models.CharField('微博ID', max_length=256, null=True, blank=True) + content = models.TextField('正文', null=True, blank=True) + url = models.CharField('文章url', max_length=256, null=True, blank=True) + originalimageurl = models.CharField('原始图片url', max_length=256, null=True, blank=True) + transpondimageurl = models.CharField('转发图片url', max_length=256, null=True, blank=True) + original = models.BooleanField('是否原创', null=True, blank=True) + site = models.CharField('发布位置', max_length=256, null=True, blank=True) + date = models.CharField('发布时间', max_length=256, null=True, blank=True) + tool = models.CharField('发布工具', max_length=256, null=True, blank=True) + like = models.CharField('点赞数', max_length=256, null=True, blank=True) + transpond = models.CharField('转发数', max_length=256, null=True, blank=True) + comment = models.CharField('评论数', max_length=256, null=True, blank=True) + title = models.CharField('文章标题', max_length=256, null=True, blank=True) + weibo = models.ForeignKey(Weibo, on_delete=models.CASCADE, null=True, blank=True) + created = models.DateTimeField('创建时间', auto_now_add=True) + updated = models.DateTimeField('更新时间', auto_now=True) + + def __str__(self): + return self.title + + +# 微博错别字 +class Weibo_Wrong(models.Model): + id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) + wrong = models.CharField('错别字', max_length=256, null=True, blank=True) + idea = models.CharField('建议', max_length=256, null=True, blank=True) + site = models.CharField('位置', max_length=256, null=True, blank=True) + weibo = models.ForeignKey(Weibo, on_delete=models.CASCADE, null=True, blank=True) + change = models.BooleanField('是否已修改', null=True, blank=True) + created = models.DateTimeField('创建时间', auto_now_add=True) + updated = models.DateTimeField('更新时间', auto_now=True) + + +# 今日头条 +class Toutiao(models.Model): + TOUTIAO_STATUS_CHOICES = ( + ('1', '开启'), + ('0', '关闭') + ) + id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) + code = models.CharField('头条号', max_length=256, null=True, blank=True) + toutiaoid = models.CharField('头条ID', max_length=256, null=True, blank=True) + alias = models.CharField('别名', max_length=256, null=True, blank=True) + image = models.FileField(upload_to='cover', null=True, blank=True) + organization = models.ForeignKey(Organization, on_delete=models.CASCADE, null=True, blank=True) + status = models.CharField('状态', max_length=256, null=True, blank=True, choices=TOUTIAO_STATUS_CHOICES) + created = models.DateTimeField('创建时间', auto_now_add=True) + updated = models.DateTimeField('更新时间', auto_now=True) + + def __str__(self): + return self.code + + +# 今日头条数据 +class Toutiao_data(models.Model): + id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) + title = models.CharField('标题', max_length=256, null=True, blank=True) + url = models.CharField('链接', max_length=256, null=True, blank=True) + img = models.CharField('缩略图', max_length=256, null=True, blank=True) + count = models.CharField('阅读数', max_length=256, null=True, blank=True) + commentcount = models.CharField('评论数', max_length=256, null=True, blank=True) + reply = models.CharField('作者回复数', max_length=256, null=True, blank=True) + date = models.CharField('时间', max_length=256, null=True, blank=True) + content = models.TextField('正文', null=True, blank=True) + comment = models.TextField('评论', null=True, blank=True) + toutiao = models.ForeignKey(Toutiao, on_delete=models.CASCADE, null=True, blank=True) + created = models.DateTimeField('创建时间', auto_now_add=True) + updated = models.DateTimeField('更新时间', auto_now=True) + + def __str__(self): + return self.title + + +# 今日头条评论 +class Toutiao_comment(models.Model): + id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) + comment = models.TextField('评论', null=True, blank=True) + user = models.CharField('用户', max_length=256, null=True, blank=True) + reply = models.TextField('回复', null=True, blank=True) + toutiao = models.ForeignKey(Toutiao, on_delete=models.CASCADE, null=True, blank=True) + created = models.DateTimeField('创建时间', auto_now_add=True) + updated = models.DateTimeField('更新时间', auto_now=True) + + def __str__(self): + return self.user + + +# 今日头条错别字 +class Toutiao_Wrong(models.Model): + id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) + wrong = models.CharField('错别字', max_length=256, null=True, blank=True) + idea = models.CharField('建议', max_length=256, null=True, blank=True) + site = models.CharField('位置', max_length=256, null=True, blank=True) + toutiao = models.ForeignKey(Toutiao, on_delete=models.CASCADE, null=True, blank=True) + change = models.BooleanField('是否已修改', null=True, blank=True) + created = models.DateTimeField('创建时间', auto_now_add=True) + updated = models.DateTimeField('更新时间', auto_now=True) + + def __str__(self): + return self.wrong + + +# 其他新媒体 +class Qita(models.Model): + QITA_STATUS_CHOICES = ( + ('1', '开启'), + ('0', '关闭') + ) + id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) + type = models.CharField('新媒体类型', max_length=256, null=True, blank=True) + name = models.CharField('新媒体名称', max_length=256, null=True, blank=True) + qitaid = models.CharField('新媒体ID', max_length=256, null=True, blank=True) + alias = models.CharField('别名', max_length=256, null=True, blank=True) + image = models.FileField(upload_to='cover', null=True, blank=True) + organization = models.ForeignKey(Organization, on_delete=models.CASCADE, null=True, blank=True) + status = models.CharField('状态', max_length=256, null=True, blank=True, choices=QITA_STATUS_CHOICES) + created = models.DateTimeField('创建时间', auto_now_add=True) + updated = models.DateTimeField('更新时间', auto_now=True) + + def __str__(self): + return self.name + +#其他新媒体监测 +class Qita_jc(models.Model): + id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) + mewnedia = models.ForeignKey(Qita,on_delete=models.CASCADE) + count = models.CharField('总发文量', max_length=256, null=True, blank=True) + count_jc = models.CharField('监测时间内发文量', max_length=256, null=True, blank=True) + comment = models.CharField('评论数', max_length=256, null=True, blank=True) + reply = models.CharField('作者回复数', max_length=256, null=True, blank=True) + date = models.CharField('最近发文日期', max_length=256, null=True, blank=True) + created = models.DateTimeField('创建时间', auto_now_add=True) + updated = models.DateTimeField('更新时间', auto_now=True) + + def __str__(self): + return self.mewnedia.name +#5级地名库 +class Area_code_2020(models.Model): + code = models.CharField('区划代码',max_length=256,null=True,blank=True) + name = models.CharField('名称',max_length=256,null=True,blank=True) + level = models.CharField('级别1-5,省市县镇村',max_length=256,null=True,blank=True) + pcode = models.CharField('父级区划代码',max_length=256,null=True,blank=True) + + def __str__(self): + return self.name diff --git a/dashboard/templates/dashboard/base/header.html b/dashboard/templates/dashboard/base/header.html index 2e7d847..80742a1 100644 --- a/dashboard/templates/dashboard/base/header.html +++ b/dashboard/templates/dashboard/base/header.html @@ -1,381 +1,383 @@ -{% load static %} -
-
- -
-
- -
- {% if user.is_authenticated %} - - {% else %} -
- -
- {% endif %} -
-
- -
+{% load static %} +
+
+ +
+
+ + +
+ +
diff --git a/dashboard/templates/dashboard/base/left.html b/dashboard/templates/dashboard/base/left.html index 9f4fd8d..e4f249d 100644 --- a/dashboard/templates/dashboard/base/left.html +++ b/dashboard/templates/dashboard/base/left.html @@ -1,188 +1,194 @@ - + diff --git a/dashboard/templates/dashboard/index.html b/dashboard/templates/dashboard/index.html index 4028a06..741732d 100644 --- a/dashboard/templates/dashboard/index.html +++ b/dashboard/templates/dashboard/index.html @@ -1,550 +1,560 @@ -{% extends 'dashboard/base/base.html' %} -{% load static %} -{% block css %} - - - -{% endblock %} -{% block content %} - - - - -
- - -
- - - - {% include 'dashboard/base/left.html' %} - - - -
- -
-
- New Orders - 2,345 -
-
- ... -
-
- -
-
- Visitors - 345 -
-
- ... -
-
- -
- - -
- - -
-
- -
-
- -
-

政务新媒体监测系统

- - -
-
-
- - -
-
-
-
-
-
- {# #} - -
-

{{ weixin_count }}

- 微信 -
-
-
-
-
- {# #} - -
-

{{ weibo_count }}

- 微博 -
-
-
-
-
- {# #} - -
-

{{ toutiao_count }}

- 今日头条 -
-
-
-
-
- {# #} - -
-

{{ qita_count }}

- 其他新媒体 -
-
-
-
-
- -
- -
- 98.95% - SERVER UP -
- Loading... -
- - -
- 2332 - USERS ONLINE -
- Loading... -
- - -
- 342/0 - ORDERS / SALES -
- Loading... -
- -
- - -
-
- -  PAGE VIEWS    UNIQUE VISITORS - - -        - - -
- - -
-
- -
-
- -  CPU USAGE - - -

-
-
-  LONDON    PARIS -
- -
-
- -
- -
- - -
-
-
-

Visitor's Statistics

-
-
-
-
-
-
-
-

Unique Visitors

- Last Week Rise by 62% -
-
-
-
-

Registrations

- Up by 57% last 7 days -
-
-
-
-

Direct Sales

- Last Month Rise by 22% -
-
-
-
-
-
-
- -
-
- - -
-
-
-
-
-
- -
-
-
-
- - - - -
-
- - - -
-
-
- -
-
-
-
- -
-
-
Smoothing
-
-
-
-
Preview Range
-
-
-
- -
-
- -
-
-
-
- - -
-
- -
- - - -
-

Groups

- - - -

Favourites

- - - -

More Contacts

- -
- -
- - -
- - -
-
- - - - - - -{% endblock %} -{% block add_js %} - - - - - - - - - - - - -{% endblock %} - - +{% extends 'dashboard/base/base.html' %} +{% load static %} +{% block css %} + + + +{% endblock %} +{% block content %} + + + + +
+ + +
+ + + + {% include 'dashboard/base/left.html' %} + + + +
+ +
+
+ New Orders + 2,345 +
+
+ ... +
+
+ +
+
+ Visitors + 345 +
+
+ ... +
+
+ +
+ + +
+ + +
+
+ {% if messages %} + + {% endif %} +
+
+ +
+

政务新媒体监测系统

+ + +
+
+
+ + +
+
+
+
+
+
+ {# #} + +
+

{{ weixin_count }}

+ 微信 +
+
+
+
+
+ {# #} + +
+

{{ weibo_count }}

+ 微博 +
+
+
+
+
+ {# #} + +
+

{{ toutiao_count }}

+ 今日头条 +
+
+
+
+
+ {# #} + +
+

{{ qita_count }}

+ 其他新媒体 +
+
+
+
+
+ +
+ +
+ 98.95% + SERVER UP +
+ Loading... +
+ + +
+ 2332 + USERS ONLINE +
+ Loading... +
+ + +
+ 342/0 + ORDERS / SALES +
+ Loading... +
+ +
+ + +
+
+ +  PAGE VIEWS    UNIQUE VISITORS + + +        + + +
+ + +
+
+ +
+
+ +  CPU USAGE + + +

+
+
+  LONDON    PARIS +
+ +
+
+ +
+ +
+ + +
+
+
+

Visitor's Statistics

+
+
+
+
+
+
+
+

Unique Visitors

+ Last Week Rise by 62% +
+
+
+
+

Registrations

+ Up by 57% last 7 days +
+
+
+
+

Direct Sales

+ Last Month Rise by 22% +
+
+
+
+
+
+
+ +
+
+ + +
+
+
+
+
+
+ +
+
+
+
+ + + + +
+
+ + + +
+
+
+ +
+
+
+
+ +
+
+
Smoothing
+
+
+
+
Preview Range
+
+
+
+ +
+
+ +
+
+
+
+ + +
+
+ +
+ + + +
+

Groups

+ + + +

Favourites

+ + + +

More Contacts

+ +
+ +
+ + +
+ + +
+
+ + + + + + +{% endblock %} +{% block add_js %} + + + + + + + + + + + + +{% endblock %} + + diff --git a/dashboard/templates/dashboard/login.html b/dashboard/templates/dashboard/login.html index 031f799..8256657 100644 --- a/dashboard/templates/dashboard/login.html +++ b/dashboard/templates/dashboard/login.html @@ -1,149 +1,149 @@ -{% extends 'dashboard/base/base.html' %} -{% load static %} -{% block css %} - -{% endblock %} -{% block header %} {% endblock %} -{% block content %} - - - - -
- {% if messages %} - - {% endif %} -
-

Ultra Admin

- -
{% csrf_token %} -

- -

-

- -

-

- - - captcha - - - - - -

-

- -

- - -

- -

- -
- - - -
-
- - - - - -{% endblock %} -{% block add_js %} - -{% endblock %} +{% extends 'dashboard/base/base.html' %} +{% load static %} +{% block css %} + +{% endblock %} +{% block header %} {% endblock %} +{% block content %} + + + + +
+ {% if messages %} + + {% endif %} +
+

Ultra Admin

+ +
{% csrf_token %} +

+ +

+

+ +

+

+ + + captcha + + + + + +

+

+ +

+ + +

+ +

+ +
+ + + +
+
+ + + + + +{% endblock %} +{% block add_js %} + +{% endblock %} diff --git a/dashboard/templates/dashboard/register.html b/dashboard/templates/dashboard/register.html index 640b084..847e4d4 100644 --- a/dashboard/templates/dashboard/register.html +++ b/dashboard/templates/dashboard/register.html @@ -1,188 +1,188 @@ -{% extends 'dashboard/base/base.html' %} -{% load static %} -{% block css %} - -{% endblock %} -{% block header %}{% endblock %} -{% block content %} - - - -
- {% if messages %} - - - {% endif %} -
-

Ultra Admin

- -
{% csrf_token %} -

- -

-

- -

-

- -

- -

- -

-

- -

-

- -

-

- -

-

- -

-

- -

-

- - - captcha - - - - - -

-

- -

- - -

- -

-
- - -
- -
-
- - - - -{% endblock %} -{% block add_js %} - -{% endblock %} - +{% extends 'dashboard/base/base.html' %} +{% load static %} +{% block css %} + +{% endblock %} +{% block header %}{% endblock %} +{% block content %} + + + +
+ {% if messages %} + + + {% endif %} +
+

Ultra Admin

+ +
{% csrf_token %} +

+ +

+

+ +

+

+ +

+ +

+ +

+

+ +

+{#

#} +{# #} +{#

#} +

+ +

+

+ +

+

+ +

+

+ + + captcha + + + + + +

+

+ +

+ + +

+ +

+
+ + +
+ +
+
+ + + + +{% endblock %} +{% block add_js %} + +{% endblock %} + diff --git a/dashboard/views.py b/dashboard/views.py index f24d399..857473f 100644 --- a/dashboard/views.py +++ b/dashboard/views.py @@ -51,8 +51,8 @@ def user_login(request): print(username,password) if username is not None and password is not None: try: - # user = authenticate(username=username, password=password) - user = User.objects.get(Q(username=username) | Q(first_name=username) | Q(email=username)) + user = authenticate(username=username, password=password) + # user = User.objects.get(username=phone) if user is not None: if user.check_password(password): login(request, user) @@ -73,7 +73,7 @@ def register(request): password = None confirm_password = None name = None - phone = None + # phone = None image = None flag = False o = None @@ -94,10 +94,10 @@ def register(request): messages.error(request, '请输入邮箱') else: email = request.POST.get('email') - if not request.POST.get('phone'): - messages.error(request, '请输入电话') - else: - phone = request.POST.get('phone') + # if not request.POST.get('phone'): + # messages.error(request, '请输入电话') + # else: + # phone = request.POST.get('phone') if not request.POST.get('username'): messages.error(request, '请输入用户名') else: @@ -116,9 +116,9 @@ def register(request): else: image = request.FILES.get('image') print(str(image)+"1111111111111111111111111111111111111111111") - if request.POST.get('sex') == 0: + if request.POST.get('sex') == '1': sex = '男' - else: + elif request.POST.get('sex') == '2': sex = '女' captcha_input = request.POST.get('captcha_1') captcha_hashkey = request.POST.get('captcha_0') @@ -137,16 +137,16 @@ def register(request): filter_result = User.objects.filter(username=username) if len(filter_result) > 0: - messages.error(request, '对不起,您输入的用户名已被注册') - return render(request, "dashboard/register.html") + messages.error(request, '对不起,您输入的电话号码已被注册') + return HttpResponseRedirect('/register/') if username is not None and password is not None and confirm_password is not None and email is not None and flag: - user = User.objects.create_user(username, email, password) + user = User.objects.create_user(username,email,password) user.is_active = True - user.is_staff = True - user.first_name = phone + # user.is_staff = True + # user.first_name = phone user.save() - userprofile = Userprofile(name=name,image=image,user_id=user.id,organization_id=o,sex=sex) + userprofile = Userprofile(name=name,image=image,user_id=user.id,organization_id=o,sex=sex,status=0) userprofile.save() messages.success(request, '注册成功,请登录') return HttpResponseRedirect('/login/') diff --git a/management/templates/management/user-management-update.html b/management/templates/management/user-management-update.html new file mode 100644 index 0000000..8e13aab --- /dev/null +++ b/management/templates/management/user-management-update.html @@ -0,0 +1,119 @@ +{% extends 'dashboard/base/base.html' %} +{% load static %} +{% block content %} + + + + +
+ +
+ {% include 'dashboard/base/left.html' %} +
+
+
+ {% if messages %} + + {% endif %} +
+
+ +
+

系统设置

+
+
+
+ +
+
+
+

用户信息

+
+
+
+
+
{% csrf_token %} +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+ +
+
+
+
+
+
+
+
+
+
+ +{% endblock %} + diff --git a/management/templates/management/user-management.html b/management/templates/management/user-management.html index 5bcbdfa..1939180 100644 --- a/management/templates/management/user-management.html +++ b/management/templates/management/user-management.html @@ -1,80 +1,80 @@ -{% extends 'dashboard/base/base.html' %} -{% load static %} -{% block css %} - - -{% endblock %} -{% block content %} - -
-
- {% include 'dashboard/base/left.html' %} -
-
-
-
-
-
-

用户管理

-
-
-
-
-
-
-

成员列表

-
-
-
-
- - - - - - - - - - - - - - {% for u in userallinfo %} - - - - - - - - - - {% endfor %} - -
头像姓名电话单位名称单位类型行政区划操作
{{ u.name }}{{ u.phone }}{{ u.organization }}{{ u.type }}{{ u.administrativedivision }} - 删除 -
- -
-
-
-
-
-
-
-
-
-
- -{% endblock %} -{% block add_js %} - - - -{% endblock %} +{% extends 'dashboard/base/base.html' %} +{% load static %} +{% block css %} + + +{% endblock %} +{% block content %} + +
+
+ {% include 'dashboard/base/left.html' %} +
+
+
+
+
+
+

用户管理

+
+
+
+
+
+
+

成员列表

+
+
+
+
+ + + + + + + + + + + + + + {% for u in userallinfo %} + + + + + + + + + + {% endfor %} + +
头像姓名电话单位名称单位类型行政区划操作
{{ u.name }}{{ u.phone }}{{ u.organization }}{{ u.type }}{{ u.administrativedivision }} + 删除 +
+ +
+
+
+
+
+
+
+
+
+
+ +{% endblock %} +{% block add_js %} + + + +{% endblock %} diff --git a/management/urls.py b/management/urls.py index 13f020e..092e072 100644 --- a/management/urls.py +++ b/management/urls.py @@ -1,47 +1,48 @@ -from django.urls import path - -from management import views - -urlpatterns = [ - # 用户管理 - path('user/management/', views.user_management, name='user-management-management'), - path('user/delete//', views.user_delete, name='user-management-delete'), - # 群组管理 - path('group/management/', views.group_management, name='group-management-management'), - path('group/create/', views.group_create, name='group-management-create'), - path('group/update//', views.group_update, name='group-management-update'), - path('group/delete//', views.group_delete, name='group-management-delete'), - - # 添加群组管理员、成员 - path('group/admin/create//', views.group_admin_create, name='group-admin-create'), - path('group/admin/delete///', views.group_admin_delete, name='group-admin-delete'), - path('group/user/create//', views.group_user_create, name='group-user-create'), - path('group/user/delete///', views.group_user_delete, name='group-user-delete'), - - # 主体单位管理 - path('organization/management/', views.organization_management, name='organization-management-management'), - path('organization/create/', views.organization_create, name='organization-management-create'), - path('organization/delete//', views.organization_delete, name='organization-management-delete'), - path('organization/update//', views.organization_update, name='organization-management-update'), - - #新媒体管理 - path('newmedia/management/create/menu/',views.newmedia_management_create_menu,name='newmedia-management-create-menu'), - path('newmedia/management/edit/menu/',views.newmedia_management_edit_menu,name='newmedia-management-edit-menu'), - path('newmedia/management/create/weixin/',views.newmedia_management_create_weixin,name='newmedia-management-create-weixin'), - path('newmedia/management/create/weibo/',views.newmedia_management_create_weibo,name='newmedia-management-create-weibo'), - path('newmedia/management/create/toutiao/',views.newmedia_management_create_toutiao,name='newmedia-management-create-toutiao'), - path('newmedia/management/create/qita/',views.newmedia_management_create_qita,name='newmedia-management-create-qita'), - path('newmedia/management/edit/weixin/',views.newmedia_management_edit_weixin,name='newmedia-management-edit-weixin'), - path('newmedia/management/edit/weibo/',views.newmedia_management_edit_weibo,name='newmedia-management-edit-weibo'), - path('newmedia/management/edit/toutiao/',views.newmedia_management_edit_toutiao,name='newmedia-management-edit-toutiao'), - path('newmedia/management/edit/qita/',views.newmedia_management_edit_qita,name='newmedia-management-edit-qita'), - path('newmedia/management/update/weixin//',views.newmedia_management_update_weixin,name='newmedia-management-update-weixin'), - path('newmedia/management/update/weibo//',views.newmedia_management_update_weibo,name='newmedia-management-update-weibo'), - path('newmedia/management/update/toutiao//',views.newmedia_management_update_toutiao,name='newmedia-management-update-toutiao'), - path('newmedia/management/update/qita//',views.newmedia_management_update_qita,name='newmedia-management-update-qita'), - path('newmedia/management/delete/weixin//',views.newmedia_management_delete_weixin,name='newmedia-management-delete-weixin'), - path('newmedia/management/delete/weibo//',views.newmedia_management_delete_weibo,name='newmedia-management-delete-weibo'), - path('newmedia/management/delete/toutiao//',views.newmedia_management_delete_toutiao,name='newmedia-management-delete-toutiao'), - path('newmedia/management/delete/qita//',views.newmedia_management_delete_qita,name='newmedia-management-delete-qita'), - -] +from django.urls import path + +from management import views + +urlpatterns = [ + # 用户管理 + path('user/management/', views.user_management, name='user-management-management'), + path('user/delete//', views.user_delete, name='user-management-delete'), + path('user/update//', views.user_update, name='user-management-update'), + # 群组管理 + path('group/management/', views.group_management, name='group-management-management'), + path('group/create/', views.group_create, name='group-management-create'), + path('group/update//', views.group_update, name='group-management-update'), + path('group/delete//', views.group_delete, name='group-management-delete'), + + # 添加群组管理员、成员 + path('group/admin/create//', views.group_admin_create, name='group-admin-create'), + path('group/admin/delete///', views.group_admin_delete, name='group-admin-delete'), + path('group/user/create//', views.group_user_create, name='group-user-create'), + path('group/user/delete///', views.group_user_delete, name='group-user-delete'), + + # 主体单位管理 + path('organization/management/', views.organization_management, name='organization-management-management'), + path('organization/create/', views.organization_create, name='organization-management-create'), + path('organization/delete//', views.organization_delete, name='organization-management-delete'), + path('organization/update//', views.organization_update, name='organization-management-update'), + + #新媒体管理 + path('newmedia/management/create/menu/',views.newmedia_management_create_menu,name='newmedia-management-create-menu'), + path('newmedia/management/edit/menu/',views.newmedia_management_edit_menu,name='newmedia-management-edit-menu'), + path('newmedia/management/create/weixin/',views.newmedia_management_create_weixin,name='newmedia-management-create-weixin'), + path('newmedia/management/create/weibo/',views.newmedia_management_create_weibo,name='newmedia-management-create-weibo'), + path('newmedia/management/create/toutiao/',views.newmedia_management_create_toutiao,name='newmedia-management-create-toutiao'), + path('newmedia/management/create/qita/',views.newmedia_management_create_qita,name='newmedia-management-create-qita'), + path('newmedia/management/edit/weixin/',views.newmedia_management_edit_weixin,name='newmedia-management-edit-weixin'), + path('newmedia/management/edit/weibo/',views.newmedia_management_edit_weibo,name='newmedia-management-edit-weibo'), + path('newmedia/management/edit/toutiao/',views.newmedia_management_edit_toutiao,name='newmedia-management-edit-toutiao'), + path('newmedia/management/edit/qita/',views.newmedia_management_edit_qita,name='newmedia-management-edit-qita'), + path('newmedia/management/update/weixin//',views.newmedia_management_update_weixin,name='newmedia-management-update-weixin'), + path('newmedia/management/update/weibo//',views.newmedia_management_update_weibo,name='newmedia-management-update-weibo'), + path('newmedia/management/update/toutiao//',views.newmedia_management_update_toutiao,name='newmedia-management-update-toutiao'), + path('newmedia/management/update/qita//',views.newmedia_management_update_qita,name='newmedia-management-update-qita'), + path('newmedia/management/delete/weixin//',views.newmedia_management_delete_weixin,name='newmedia-management-delete-weixin'), + path('newmedia/management/delete/weibo//',views.newmedia_management_delete_weibo,name='newmedia-management-delete-weibo'), + path('newmedia/management/delete/toutiao//',views.newmedia_management_delete_toutiao,name='newmedia-management-delete-toutiao'), + path('newmedia/management/delete/qita//',views.newmedia_management_delete_qita,name='newmedia-management-delete-qita'), + +] diff --git a/management/views.py b/management/views.py index 25766e2..53fc29c 100644 --- a/management/views.py +++ b/management/views.py @@ -1,861 +1,912 @@ -import json - -from django.contrib import messages -from django.contrib.auth.models import User -from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage -from django.http import HttpResponse, HttpResponseRedirect -from django.shortcuts import render - -from dashboard.models import Userprofile, Group, Organization, Level, Organizationtype, Area_code_2020, Weixin, Weibo, \ - Toutiao, Qita, Group_type, Group_admin, Group_user - - -def user_management(request): - userpaginator = User.objects.all().order_by('-date_joined') - paginator = Paginator(userpaginator, 6) - page = int(request.GET.get('page', 1)) - try: - userpaginator = paginator.page(page) - except PageNotAnInteger: - userpaginator = paginator.page(1) - except EmptyPage: - userpaginator = paginator.page(paginator.num_pages) - userallinfo = [] - for u in userpaginator: - o = dict() - o['id'] = str(u.id) - o['image'] = u.userprofile_set.get(user_id=u.id).image.url - o['name'] = u.userprofile_set.get(user_id=u.id).name - o['phone'] = u.first_name - o['organization'] = u.userprofile_set.get(user_id=u.id).organization.name - o['type'] = u.userprofile_set.get(user_id=u.id).organization.organizationtype.organizationtype - organization_id = Userprofile.objects.get(user_id=u.id).organization_id - print(organization_id) - o['administrativedivision'] = str(str(Organization.objects.get(id=organization_id).province) + '-' + str( - Organization.objects.get(id=organization_id).cities) + '-' + str( - Organization.objects.get(id=organization_id).district) + '-' + str( - Organization.objects.get(id=organization_id).town) + '-' + str( - Organization.objects.get(id=organization_id).village)).replace('None', '') - userallinfo.append(o) - print(userallinfo) - return render(request, 'management/user-management.html', - {'userallinfo': userallinfo, 'userpaginator': userpaginator}) - - -def user_delete(request, pk): - user = User.objects.get(id=pk) - user.delete() - return HttpResponseRedirect('/management/user/management/') - - -def group_management(request): - group = Group.objects.all().order_by('-created') - paginator = Paginator(group, 6) - page = int(request.GET.get('page', 1)) - try: - group = paginator.page(page) - except PageNotAnInteger: - group = paginator.page(1) - except EmptyPage: - group = paginator.page(paginator.num_pages) - res = [] - for g in group: - o = dict() - o['id'] = str(g.id) - o['image'] = g.image.url - o['name'] = g.name - o['type'] = g.type - o['admin_count'] = Group_admin.objects.filter(group_id=g.id).count() - o['user_count'] = Group_user.objects.filter(group_id=g.id).count() - o['status'] = g.status - res.append(o) - return render(request, 'management/group-management.html', {'res': res, 'group': group}) - - -def group_update(request, pk): - group = Group.objects.get(id=pk) - GROUP_STATUS_CHOICES = Group.GROUP_STATUS_CHOICES - group_status_choices_list = [] - for g in GROUP_STATUS_CHOICES: - group_status_choices_list.append(list(g)[1]) - group_type = Group_type.objects.all() - group_admin = Group_admin.objects.filter(group_id=pk) - print(pk) - g_a_list = [] - for g_a in group_admin: - o = dict() - o['id'] = str(g_a.id) - o['image'] = Userprofile.objects.get(user_id=g_a.user.id).image.url - o['username'] = g_a.user.username - o['name'] = Userprofile.objects.get(user_id=g_a.user.id).name - o['organization'] = Userprofile.objects.get(user_id=g_a.user.id).organization.name - o['administrativedivision'] = str(g_a.group.province) + '-' + str(g_a.group.cities) + '-' + str( - g_a.group.district) + '-' + str(g_a.group.town) + '-' + str(g_a.group.village) - g_a_list.append(o) - group_user = Group_user.objects.filter(group_id=pk) - g_u_list = [] - for g_u in group_user: - i = dict() - i['id'] = str(g_u.id) - i['image'] = Userprofile.objects.get(user_id=g_u.user.id).image.url - i['username'] = g_u.user.username - i['name'] = Userprofile.objects.get(user_id=g_u.user.id).name - i['organization'] = Userprofile.objects.get(user_id=g_u.user.id).organization.name - i['administrativedivision'] = str(g_u.group.province) + '-' + str(g_u.group.cities) + '-' + str( - g_u.group.district) + '-' + str(g_u.group.town) + '-' + str(g_u.group.village) - g_u_list.append(i) - if request.method == 'POST': - name = request.POST.get('name') - presentation = request.POST.get('presentation') - image = request.FILES.get('image') - type = request.POST.get('type') - status = request.POST.get('status') - province = request.POST.get('province') - print(str(province) + "66666666666666666666666666") - if province != '' and province.isdigit(): - province_r = Area_code_2020.objects.get(code=province).name - else: - province_r = province - city = request.POST.get('city') - if city != '' and city.isdigit(): - city_r = Area_code_2020.objects.get(code=city).name - else: - city_r = city - district = request.POST.get('district') - if district != '' and district.isdigit(): - district_r = Area_code_2020.objects.get(code=district).name - else: - district_r = district - town = request.POST.get('town') - if town != '' and town.isdigit(): - town_r = Area_code_2020.objects.get(code=town).name - else: - town_r = town - village = request.POST.get('village') - if village != '' and village.isdigit(): - village_r = Area_code_2020.objects.get(code=village).name - else: - village_r = village - if image is not None: - Group.objects.filter(id=pk).update(name=name, presentation=presentation, type_id=type, status=status, - province=province_r, cities=city_r, district=district_r, town=town_r, - village=village_r) - g = Group.objects.get(id=pk) - g.image = image - g.save() - messages.success(request, '修改成功') - return HttpResponseRedirect('/management/group/management/') - else: - Group.objects.filter(id=pk).update(name=name, presentation=presentation, type_id=type, status=status, - province=province_r, cities=city_r, district=district_r, town=town_r, - village=village_r) - messages.success(request, '修改成功') - return HttpResponseRedirect('/management/group/management/') - return render(request, 'management/group-management-update.html', - {'group': group, 'group_status_choices_list': group_status_choices_list, 'group_type': group_type, - 'g_a_list': g_a_list, 'g_u_list': g_u_list}) - - -def group_create(request): - GROUP_STATUS_CHOICES = Group.GROUP_STATUS_CHOICES - group_status_choices_list = [] - for g in GROUP_STATUS_CHOICES: - group_status_choices_list.append(list(g)[1]) - group_type = Group_type.objects.all() - if request.method == 'POST': - name = request.POST.get('name') - presentation = request.POST.get('presentation') - image = request.FILES.get('image') - type = request.POST.get('type') - status = request.POST.get('status') - province = request.POST.get('province') - if province != '': - province_r = Area_code_2020.objects.get(code=province).name - else: - messages.error(request, '请选择行政区划') - return HttpResponseRedirect('/management/organization/create/') - city = request.POST.get('city') - if city != '': - city_r = Area_code_2020.objects.get(code=city).name - else: - city_r = city - district = request.POST.get('district') - if district != '': - district_r = Area_code_2020.objects.get(code=district).name - else: - district_r = district - town = request.POST.get('town') - if town != '': - town_r = Area_code_2020.objects.get(code=town).name - else: - town_r = town - village = request.POST.get('village') - if village != '': - village_r = Area_code_2020.objects.get(code=village).name - else: - village_r = village - print(name, presentation, image, type, status, province, city, district, town, village) - if name is not None: - group = Group(name=name, presentation=presentation, image=image, type_id=type, status=status, - province=province_r, cities=city_r, district=district_r, town=town_r, village=village_r) - group.save() - messages.success(request, '添加成功') - else: - messages.error(request, '群组名不能为空') - return HttpResponseRedirect('/management/group/management/') - return render(request, 'management/group-management-create.html', - {'group_status_choices_list': group_status_choices_list, 'group_type': group_type}) - - -def group_admin_create(request, pk): - if request.method == 'POST': - user = request.POST.get("user") - print(user) - results = Group_admin.objects.filter(user_id=user, group_id=pk).count() - if results != 0: - messages.success(request, "该管理员已经存在") - return HttpResponseRedirect('/management/group/update/%s/' % (pk)) - group_admin = Group_admin(user_id=user, group_id=pk) - group_admin.save() - messages.success(request, "添加成功") - return HttpResponseRedirect('/management/group/update/%s/' % (pk)) - group = Group.objects.get(id=pk).name - user = User.objects.all() - return render(request, 'management/group-admin-create.html', {'usee': user, 'group': group, 'pk': pk}) - - -def group_admin_delete(request, pk, group_pk): - group_admin = Group_admin.objects.get(id=pk) - group_admin.delete() - messages.success(request, '删除成功') - return HttpResponseRedirect('/management/group/update/%s/' % (group_pk)) - - -def group_user_create(request, pk): - if request.method == 'POST': - user = request.POST.get('user') - results = Group_user.objects.filter(user_id=user, group_id=pk).count() - if results != 0: - messages.success(request, "该成员已经存在") - return HttpResponseRedirect('/management/group/update/%s/' % (pk)) - group_user = Group_user(user_id=user, group_id=pk) - group_user.save() - messages.success(request, '添加成功') - return HttpResponseRedirect('/management/group/update/%s' % (pk)) - group = Group.objects.get(id=pk).name - user = User.objects.all() - return render(request, 'management/group-user-create.html', {'usee': user, 'group': group, 'pk': pk}) - - -def group_user_delete(request, pk, group_pk): - group_user = Group_user.objects.get(id=pk) - group_user.delete() - messages.success(request, '删除成功') - return HttpResponseRedirect('/management/group/update/%s/' % (group_pk)) - - -def group_delete(request, pk): - group = Group.objects.get(id=pk) - group.delete() - messages.success(request, '删除成功') - return HttpResponseRedirect('/management/group/management/') - - -def organization_management(request): - organization = Organization.objects.all().order_by('-created') - paginator = Paginator(organization, 6) - page = int(request.GET.get('page', 1)) - try: - organization = paginator.page(page) - except PageNotAnInteger: - organization = paginator.page(1) - except EmptyPage: - organization = paginator.page(paginator.num_pages) - res = [] - for i in organization: - o = dict() - o['id'] = str(i.id) - o['name'] = i.name - o['image'] = i.image.url - o['organizationtype'] = i.organizationtype.organizationtype - o['administrativedivision'] = str(i.province) + '-' + str(i.cities) + '-' + str(i.district) + '-' + str( - i.town) + '-' + str(i.village) - o['usercount'] = Userprofile.objects.filter(organization_id=i.id).count() - o['mediacount'] = Weixin.objects.filter(organization_id=i.id).count() + Weibo.objects.filter( - organization_id=i.id).count() + Toutiao.objects.filter(organization_id=i.id).count() + Qita.objects.filter( - organization_id=i.id).count() - res.append(o) - - return render(request, 'management/organization-management.html', {"organization": organization, 'res': res}) - - -def organization_delete(request, pk): - organization = Organization.objects.get(id=pk) - organization.delete() - messages.success(request, '删除成功') - return HttpResponseRedirect('/management/organization/management/') - - -def organization_update(request, pk): - organization = Organization.objects.get(id=pk) - organizationtype = Organizationtype.objects.all() - if request.method == 'POST': - name = request.POST.get('name') - image = request.FILES.get('image') - organizationtype = request.POST.get('organizationtype') - province = request.POST.get('province') - if province != '' and province.isdigit(): - province_r = Area_code_2020.objects.get(code=province).name - else: - province_r = province - city = request.POST.get('city') - if city != '' and city.isdigit(): - city_r = Area_code_2020.objects.get(code=city).name - else: - city_r = city - district = request.POST.get('district') - if district != '' and district.isdigit(): - district_r = Area_code_2020.objects.get(code=district).name - else: - district_r = district - town = request.POST.get('town') - if town != '' and town.isdigit(): - town_r = Area_code_2020.objects.get(code=town).name - else: - town_r = town - village = request.POST.get('village') - if village != '' and village.isdigit(): - village_r = Area_code_2020.objects.get(code=village).name - else: - village_r = village - if name is not None: - if image is not None: - Organization.objects.filter(id=pk).update(name=name, organizationtype_id=organizationtype, - province=province_r, cities=city_r, district=district_r, - town=town_r, village=village_r) - o = Organization.objects.get(id=pk) - o.image = image - o.save() - messages.success(request, '修改成功') - return HttpResponseRedirect('/management/organization/management/') - else: - Organization.objects.filter(id=pk).update(name=name, organizationtype_id=organizationtype, - province=province_r, cities=city_r, district=district_r, - town=town_r, village=village_r) - messages.success(request, '修改成功') - return HttpResponseRedirect('/management/organization/management/') - return render(request, 'management/organization-management-update.html', - {'organization': organization, 'organizationtype': organizationtype}) - - -def organization_create(request): - organizationtype = Organizationtype.objects.all() - if request.method == 'POST': - name = request.POST.get('name') - image = request.FILES.get('image') - organizationtype = request.POST.get('organizationtype') - province = request.POST.get('province') - if province != '': - province_r = Area_code_2020.objects.get(code=province).name - else: - messages.error(request, '请选择行政区划') - return HttpResponseRedirect('/management/organization/create/') - city = request.POST.get('city') - if city != '': - city_r = Area_code_2020.objects.get(code=city).name - else: - city_r = city - district = request.POST.get('district') - if district != '': - district_r = Area_code_2020.objects.get(code=district).name - else: - district_r = district - town = request.POST.get('town') - if town != '': - town_r = Area_code_2020.objects.get(code=town).name - else: - town_r = town - village = request.POST.get('village') - if village != '': - village_r = Area_code_2020.objects.get(code=village).name - else: - village_r = village - print(province, city) - if name is not None: - organization = Organization(name=name, image=image, organizationtype_id=organizationtype, - province=province_r, cities=city_r, district=district_r, town=town_r, - village=village_r) - organization.save() - messages.success(request, '添加成功') - else: - messages.error(request, '单位名不能为空') - return HttpResponseRedirect('/management/organization/management/') - return render(request, 'management/organization-management-create.html', {'organizationtype': organizationtype}) - - -def newmedia_management_create_menu(request): - return render(request, 'management/newmedia-management-create-menu.html') - - -def newmedia_management_create_weixin(request): - WEIXIN_STATUS_CHOICES = Weixin.WEIXIN_STATUS_CHOICES - weixin_status_choices_list = [] - for w in WEIXIN_STATUS_CHOICES: - weixin_status_choices_list.append(list(w)[1]) - organization = Organization.objects.all() - if request.method == 'POST': - code = request.POST.get('code') - weixinid = request.POST.get('weixinid') - alias = request.POST.get('alias') - image = request.FILES.get('image') - organization = request.POST.get('organization') - status = request.POST.get('status') - if code is not None: - if organization is not None: - if image is not None: - weixin = Weixin(code=code, weixinid=weixinid, alias=alias, image=image, - organization_id=organization, status=status) - weixin.save() - messages.success(request, '创建成功') - return HttpResponseRedirect('/management/newmedia/management/create/weixin/') - else: - weixin = Weixin(code=code, weixinid=weixinid, alias=alias, image='weixin.png', - organization_id=organization, status=status) - weixin.save() - messages.success(request, '创建成功') - return HttpResponseRedirect('/management/newmedia/management/create/weixin/') - else: - messages.success(request, "请选择单位") - return render(request, 'management/newmedia-management-create-weixin.html', - {'weixin_status_choices_list': weixin_status_choices_list, "organization": organization}) - else: - messages.success(request, "微信公众号不能为空") - return render(request, 'management/newmedia-management-create-weixin.html', - {'weixin_status_choices_list': weixin_status_choices_list, "organization": organization}) - return render(request, 'management/newmedia-management-create-weixin.html', - {'weixin_status_choices_list': weixin_status_choices_list, "organization": organization}) - - -def newmedia_management_create_weibo(request): - WEIBO_STATUS_CHOICES = Weibo.WEIBO_STATUS_CHOICES - weibo_status_choices_list = [] - for w in WEIBO_STATUS_CHOICES: - weibo_status_choices_list.append(list(w)[1]) - organization = Organization.objects.all() - if request.method == 'POST': - code = request.POST.get('code') - weiboid = request.POST.get('weiboid') - print(str(weiboid) + "11111111111111111111111111111111111111") - alias = request.POST.get('alias') - image = request.FILES.get('image') - organization = request.POST.get('organization') - status = request.POST.get('status') - if code is not None: - if organization is not None: - if image is not None: - weibo = Weibo(code=code, weiboid=weiboid, alias=alias, image=image, - organization_id=organization, status=status) - weibo.save() - messages.success(request, '创建成功') - return HttpResponseRedirect('/management/newmedia/management/create/weibo/') - else: - weibo = Weibo(code=code, weiboid=weiboid, alias=alias, image='weibo.png', - organization_id=organization, status=status) - weibo.save() - messages.success(request, '创建成功') - return HttpResponseRedirect('/management/newmedia/management/create/weibo/') - else: - messages.success(request, "请选择单位") - return render(request, 'management/newmedia-management-create-weibo.html', - {'weibo_status_choices_list': weibo_status_choices_list, "organization": organization}) - else: - messages.success(request, "微博号不能为空") - return render(request, 'management/newmedia-management-create-weibo.html', - {'weixin_status_choices_list': weibo_status_choices_list, "organization": organization}) - return render(request, 'management/newmedia-management-create-weibo.html', - {'weibo_status_choices_list': weibo_status_choices_list, "organization": organization}) - - -def newmedia_management_create_toutiao(request): - TOUTIAO_STATUS_CHOICES = Toutiao.TOUTIAO_STATUS_CHOICES - toutiao_status_choices_list = [] - for w in TOUTIAO_STATUS_CHOICES: - toutiao_status_choices_list.append(list(w)[1]) - organization = Organization.objects.all() - if request.method == 'POST': - code = request.POST.get('code') - toutiaoid = request.POST.get('toutiaoid') - alias = request.POST.get('alias') - image = request.FILES.get('image') - organization = request.POST.get('organization') - status = request.POST.get('status') - if code is not None: - if organization is not None: - if image is not None: - toutiao = Toutiao(code=code, toutiaoid=toutiaoid, alias=alias, image=image, - organization_id=organization, status=status) - toutiao.save() - messages.success(request, '创建成功') - return HttpResponseRedirect('/management/newmedia/management/create/toutiao/') - else: - toutiao = Toutiao(code=code, toutiaoid=toutiaoid, alias=alias, image='toutiao.png', - organization_id=organization, status=status) - toutiao.save() - messages.success(request, '创建成功') - return HttpResponseRedirect('/management/newmedia/management/create/toutiao/') - else: - messages.success(request, "请选择单位") - return render(request, 'management/newmedia-management-create-toutiao.html', - {'toutiao_status_choices_list': toutiao_status_choices_list, - "organization": organization}) - else: - messages.success(request, "头条号不能为空") - return render(request, 'management/newmedia-management-create-toutiao.html', - {'toutiao_status_choices_list': toutiao_status_choices_list, "organization": organization}) - return render(request, 'management/newmedia-management-create-toutiao.html', - {'toutiao_status_choices_list': toutiao_status_choices_list, "organization": organization}) - - -def newmedia_management_create_qita(request): - QITA_STATUS_CHOICES = Qita.QITA_STATUS_CHOICES - qita_status_choices_list = [] - for w in QITA_STATUS_CHOICES: - qita_status_choices_list.append(list(w)[1]) - organization = Organization.objects.all() - if request.method == 'POST': - type = request.POST.get('type') - name = request.POST.get('name') - qitaid = request.POST.get('qitaid') - alias = request.POST.get('alias') - image = request.FILES.get('image') - organization = request.POST.get('organization') - status = request.POST.get('status') - if name is not None: - if organization is not None: - if image is not None: - qita = Qita(type=type, name=name, qitaid=qitaid, alias=alias, image=image, - organization_id=organization, status=status) - qita.save() - messages.success(request, '创建成功') - return HttpResponseRedirect('/management/newmedia/management/create/qita/') - else: - qita = Qita(type=type, name=name, qitaid=qitaid, alias=alias, image='qita.png', - organization_id=organization, status=status) - qita.save() - messages.success(request, '创建成功') - return HttpResponseRedirect('/management/newmedia/management/create/qita/') - else: - messages.success(request, "请选择单位") - return render(request, 'management/newmedia-management-create-qita.html', - {'qita_status_choices_list': qita_status_choices_list, "organization": organization}) - else: - messages.success(request, "新媒体名称不能为空") - return render(request, 'management/newmedia-management-create-qita.html', - {'qita_status_choices_list': qita_status_choices_list, "organization": organization}) - return render(request, 'management/newmedia-management-create-qita.html', - {'qita_status_choices_list': qita_status_choices_list, "organization": organization}) - - -def newmedia_management_edit_menu(request): - return render(request, 'management/newmedia-management-edit-menu.html') - - -def newmedia_management_edit_weixin(request): - weixin = Weixin.objects.all().order_by('-created') - paginator = Paginator(weixin, 6) - page = int(request.GET.get('page', 1)) - try: - weixin = paginator.page(page) - except PageNotAnInteger: - weixin = paginator.page(1) - except EmptyPage: - weixin = paginator.page(paginator.num_pages) - res = [] - for w in weixin: - o = dict() - o['id'] = str(w.id) - o['image'] = w.image - o['code'] = w.code - o['weixinid'] = w.weixinid - o['organization'] = w.organization.name - o['organization_type'] = w.organization.organizationtype.organizationtype - o['administrativedivision'] = str(w.organization.province) + '-' + str(w.organization.cities) + '-' + str( - w.organization.district) + '-' + str(w.organization.town) + '-' + str(w.organization.village) - o['status'] = w.status - res.append(o) - return render(request, 'management/newmedia-management-edit-weixin.html', {'weixin': weixin, 'res': res}) - - -def newmedia_management_edit_weibo(request): - weibo = Weibo.objects.all().order_by('-created') - paginator = Paginator(weibo, 6) - page = int(request.GET.get('page', 1)) - try: - weibo = paginator.page(page) - except PageNotAnInteger: - weibo = paginator.page(1) - except EmptyPage: - weibo = paginator.page(paginator.num_pages) - res = [] - for w in weibo: - o = dict() - o['id'] = str(w.id) - o['image'] = w.image - o['code'] = w.code - o['weiboid'] = w.weiboid - o['organization'] = w.organization.name - o['organization_type'] = w.organization.organizationtype.organizationtype - o['administrativedivision'] = str(w.organization.province) + '-' + str(w.organization.cities) + '-' + str( - w.organization.district) + '-' + str(w.organization.town) + '-' + str(w.organization.village) - o['status'] = w.status - res.append(o) - return render(request, 'management/newmedia-management-edit-weibo.html', {'weibo': weibo, 'res': res}) - - -def newmedia_management_edit_toutiao(request): - toutiao = Toutiao.objects.all().order_by('-created') - paginator = Paginator(toutiao, 6) - page = int(request.GET.get('page', 1)) - try: - toutiao = paginator.page(page) - except PageNotAnInteger: - toutiao = paginator.page(1) - except EmptyPage: - toutiao = paginator.page(paginator.num_pages) - res = [] - for w in toutiao: - o = dict() - o['id'] = str(w.id) - o['image'] = w.image - o['code'] = w.code - o['toutiaoid'] = w.toutiaoid - o['organization'] = w.organization.name - o['organization_type'] = w.organization.organizationtype.organizationtype - o['administrativedivision'] = str(w.organization.province) + '-' + str(w.organization.cities) + '-' + str( - w.organization.district) + '-' + str(w.organization.town) + '-' + str(w.organization.village) - o['status'] = w.status - res.append(o) - return render(request, 'management/newmedia-management-edit-toutiao.html', {'toutiao': toutiao, 'res': res}) - - -def newmedia_management_edit_qita(request): - qita = Qita.objects.all().order_by('-created') - paginator = Paginator(qita, 6) - page = int(request.GET.get('page', 1)) - try: - qita = paginator.page(page) - except PageNotAnInteger: - qita = paginator.page(1) - except EmptyPage: - qita = paginator.page(paginator.num_pages) - res = [] - for w in qita: - o = dict() - o['id'] = str(w.id) - o['image'] = w.image - o['type'] = w.type - o['name'] = w.name - o['qitaid'] = w.qitaid - o['organization'] = w.organization.name - o['organization_type'] = w.organization.organizationtype.organizationtype - o['administrativedivision'] = str(w.organization.province) + '-' + str(w.organization.cities) + '-' + str( - w.organization.district) + '-' + str(w.organization.town) + '-' + str(w.organization.village) - o['status'] = w.status - res.append(o) - return render(request, 'management/newmedia-management-edit-qita.html', {'qita': qita, 'res': res}) - - -def newmedia_management_update_weixin(request, pk): - WEIXIN_STATUS_CHOICES = Weixin.WEIXIN_STATUS_CHOICES - weixin_status_choices_list = [] - for w in WEIXIN_STATUS_CHOICES: - weixin_status_choices_list.append(list(w)[1]) - weixin = Weixin.objects.get(id=pk) - organization = Organization.objects.all() - if request.method == 'POST': - code = request.POST.get('code') - weixinid = request.POST.get('weixinid') - alias = request.POST.get('alias') - image = request.FILES.get('image') - organization = request.POST.get('organization') - status = request.POST.get('status') - if code is not None: - if organization is not None: - if image is not None: - Weixin.objects.filter(id=pk).update(code=code, weixinid=weixinid, alias=alias, - organization_id=organization, status=status) - weixin.image = image - weixin.save() - messages.success(request, '修改成功') - return HttpResponseRedirect('/management/newmedia/management/edit/weixin/') - else: - Weixin.objects.filter(id=pk).update(code=code, weixinid=weixinid, alias=alias, - organization_id=organization, status=status) - messages.success(request, '修改成功') - return HttpResponseRedirect('/management/newmedia/management/edit/weixin/') - else: - messages.success(request, "请选择单位") - return render(request, 'management/newmedia-management-update-weixin.html', - {'weixin': weixin, 'organization': organization, - 'weixin_status_choices_list': weixin_status_choices_list}) - else: - messages.success(request, "微信公众号不能为空") - return render(request, 'management/newmedia-management-update-weixin.html', - {'weixin': weixin, 'organization': organization, - 'weixin_status_choices_list': weixin_status_choices_list}) - return render(request, 'management/newmedia-management-update-weixin.html', - {'weixin': weixin, 'organization': organization, - 'weixin_status_choices_list': weixin_status_choices_list}) - -def newmedia_management_update_weibo(request, pk): - WEIBO_STATUS_CHOICES = Weibo.WEIBO_STATUS_CHOICES - weibo_status_choices_list = [] - for w in WEIBO_STATUS_CHOICES: - weibo_status_choices_list.append(list(w)[1]) - weibo = Weibo.objects.get(id=pk) - organization = Organization.objects.all() - if request.method == 'POST': - code = request.POST.get('code') - weiboid = request.POST.get('weiboid') - alias = request.POST.get('alias') - image = request.FILES.get('image') - organization = request.POST.get('organization') - status = request.POST.get('status') - if code is not None: - if organization is not None: - if image is not None: - Weibo.objects.filter(id=pk).update(code=code, weiboid=weiboid, alias=alias, - organization_id=organization, status=status) - weibo.image = image - weibo.save() - messages.success(request, '修改成功') - return HttpResponseRedirect('/management/newmedia/management/edit/weibo/') - else: - Weibo.objects.filter(id=pk).update(code=code, weiboid=weiboid, alias=alias, - organization_id=organization, status=status) - messages.success(request, '修改成功') - return HttpResponseRedirect('/management/newmedia/management/edit/weibo/') - else: - messages.success(request, "请选择单位") - return render(request, 'management/newmedia-management-update-weibo.html', - {'weibo': weibo, 'organization': organization, - 'weibo_status_choices_list': weibo_status_choices_list}) - else: - messages.success(request, "微博号不能为空") - return render(request, 'management/newmedia-management-update-weibo.html', - {'weibo': weibo, 'organization': organization, - 'weibo_status_choices_list': weibo_status_choices_list}) - return render(request, 'management/newmedia-management-update-weibo.html', - {'weibo': weibo, 'organization': organization, - 'weibo_status_choices_list': weibo_status_choices_list}) - - -def newmedia_management_update_toutiao(request, pk): - TOUTIAO_STATUS_CHOICES = Toutiao.TOUTIAO_STATUS_CHOICES - toutiao_status_choices_list = [] - for w in TOUTIAO_STATUS_CHOICES: - toutiao_status_choices_list.append(list(w)[1]) - toutiao = Toutiao.objects.get(id=pk) - organization = Organization.objects.all() - if request.method == 'POST': - code = request.POST.get('code') - toutiaoid = request.POST.get('toutiaoid') - alias = request.POST.get('alias') - image = request.FILES.get('image') - organization = request.POST.get('organization') - status = request.POST.get('status') - if code is not None: - if organization is not None: - if image is not None: - Toutiao.objects.filter(id=pk).update(code=code, toutiaoid=toutiaoid, alias=alias, - organization_id=organization, status=status) - toutiao.image = image - toutiao.save() - messages.success(request, '修改成功') - return HttpResponseRedirect('/management/newmedia/management/edit/toutiao/') - else: - Toutiao.objects.filter(id=pk).update(code=code, toutiaoid=toutiaoid, alias=alias, - organization_id=organization, status=status) - messages.success(request, '修改成功') - return HttpResponseRedirect('/management/newmedia/management/edit/toutiao/') - else: - messages.success(request, "请选择单位") - return render(request, 'management/newmedia-management-update-toutiao.html', - {'toutiao': toutiao, 'organization': organization, - 'toutiao_status_choices_list': toutiao_status_choices_list}) - else: - messages.success(request, "头条号不能为空") - return render(request, 'management/newmedia-management-update-toutiao.html', - {'toutiao': toutiao, 'organization': organization, - 'toutiao_status_choices_list': toutiao_status_choices_list}) - return render(request, 'management/newmedia-management-update-toutiao.html', - {'toutiao': toutiao, 'organization': organization, - 'toutiao_status_choices_list': toutiao_status_choices_list}) - - -def newmedia_management_update_qita(request, pk): - QITA_STATUS_CHOICES = Qita.QITA_STATUS_CHOICES - qita_status_choices_list = [] - for w in QITA_STATUS_CHOICES: - qita_status_choices_list.append(list(w)[1]) - organization = Organization.objects.all() - qita = Qita.objects.get(id=pk) - if request.method == 'POST': - type = request.POST.get('type') - name = request.POST.get('name') - qitaid = request.POST.get('qitaid') - alias = request.POST.get('alias') - image = request.FILES.get('image') - organization = request.POST.get('organization') - status = request.POST.get('status') - if name is not None: - if organization is not None: - if image is not None: - Qita.objects.filter(id=pk).update(type=type, name=name, qitaid=qitaid, alias=alias, - organization_id=organization, status=status) - qita.image = image - qita.save() - messages.success(request, '修改成功') - return HttpResponseRedirect('/management/newmedia/management/edit/qita/') - else: - Qita.objects.filter(id=pk).update(type=type, name=name, qitaid=qitaid, alias=alias, - organization_id=organization, status=status) - messages.success(request, '修改成功') - return HttpResponseRedirect('/management/newmedia/management/edit/qita/') - else: - messages.success(request, "请选择单位") - return render(request, 'management/newmedia-management-update-qita.html', - {'qita': qita, 'organization': organization, - 'qita_status_choices_list': qita_status_choices_list}) - else: - messages.success(request, "新媒体名称不能为空") - return render(request, 'management/newmedia-management-update-qita.html', - {'qita': qita, 'organization': organization, - 'qita_status_choices_list': qita_status_choices_list}) - return render(request, 'management/newmedia-management-update-qita.html', - {'qita': qita, 'organization': organization, - 'qita_status_choices_list': qita_status_choices_list}) - -def newmedia_management_delete_weixin(request,pk): - weixin = Weixin.objects.get(id=pk) - weixin.delete() - messages.success(request,"删除成功") - return HttpResponseRedirect('/management/newmedia/management/edit/weixin/') - -def newmedia_management_delete_weibo(request,pk): - weibo = Weibo.objects.get(id=pk) - weibo.delete() - messages.success(request,"删除成功") - return HttpResponseRedirect('/management/newmedia/management/edit/weibo/') - -def newmedia_management_delete_toutiao(request,pk): - toutiao = Toutiao.objects.get(id=pk) - toutiao.delete() - messages.success(request,"删除成功") - return HttpResponseRedirect('/management/newmedia/management/edit/toutiao/') - -def newmedia_management_delete_qita(request,pk): - qita = Qita.objects.get(id=pk) - qita.delete() - messages.success(request,"删除成功") - return HttpResponseRedirect('/management/newmedia/management/edit/qita/') +import json + +from django.contrib import messages +from django.contrib.auth.hashers import make_password +from django.contrib.auth.models import User +from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage +from django.http import HttpResponse, HttpResponseRedirect +from django.shortcuts import render + +from dashboard.models import Userprofile, Group, Organization, Level, Organizationtype, Area_code_2020, Weixin, Weibo, \ + Toutiao, Qita, Group_type, Group_admin, Group_user + + +def user_management(request): + userpaginator = User.objects.all().order_by('-date_joined') + paginator = Paginator(userpaginator, 6) + page = int(request.GET.get('page', 1)) + try: + userpaginator = paginator.page(page) + except PageNotAnInteger: + userpaginator = paginator.page(1) + except EmptyPage: + userpaginator = paginator.page(paginator.num_pages) + userallinfo = [] + for u in userpaginator: + o = dict() + o['id'] = str(u.id) + o['image'] = u.userprofile_set.get(user_id=u.id).image + o['name'] = u.userprofile_set.get(user_id=u.id).name + o['phone'] = u.username + o['organization'] = u.userprofile_set.get(user_id=u.id).organization.name + o['type'] = u.userprofile_set.get(user_id=u.id).organization.organizationtype.organizationtype + organization_id = Userprofile.objects.get(user_id=u.id).organization_id + print(organization_id) + o['administrativedivision'] = str(str(Organization.objects.get(id=organization_id).province) + '-' + str( + Organization.objects.get(id=organization_id).cities) + '-' + str( + Organization.objects.get(id=organization_id).district) + '-' + str( + Organization.objects.get(id=organization_id).town) + '-' + str( + Organization.objects.get(id=organization_id).village)).replace('None', '') + userallinfo.append(o) + print(userallinfo) + return render(request, 'management/user-management.html', + {'userallinfo': userallinfo, 'userpaginator': userpaginator}) + + +def user_delete(request, pk): + user = User.objects.get(id=pk) + user.delete() + return HttpResponseRedirect('/management/user/management/') + + +def user_update(request, pk): + user = User.objects.get(id=pk) + userprofile = Userprofile.objects.get(user_id=user.id) + organization = Organization.objects.all() + if request.method == 'POST': + organization_id = request.POST.get('organization') + name = request.POST.get('name') + email = request.POST.get('email') + username = request.POST.get('username') + image = request.FILES.get('image') + passwordold = request.POST.get('passwordold') + passwordnew = request.POST.get('passwordnew') + confirm_password = request.POST.get('confirm_password') + if passwordold is not None and passwordnew is not None and confirm_password is not None: + if passwordnew == confirm_password: + user.email = email + user.username = username + user.password = make_password(passwordnew) + userprofile.organization_id = organization_id + userprofile.name = name + if image is not None: + userprofile.image = image + user.save() + userprofile.save() + messages.success(request,"修改成功") + return HttpResponseRedirect("/") + else: + messages.error(request,'两次输入密码不一致') + return HttpResponseRedirect('/management/user/update/%s/' % (pk)) + else: + user.email = email + user.username = username + userprofile.organization_id = organization_id + userprofile.name = name + if image is not None: + userprofile.image = image + user.save() + userprofile.save() + messages.success(request, "修改成功") + return HttpResponseRedirect("/") + + return render(request, 'management/user-management-update.html', + {'usee': user, 'userprofile': userprofile, 'organization': organization}) + + +def group_management(request): + group = Group.objects.all().order_by('-created') + paginator = Paginator(group, 6) + page = int(request.GET.get('page', 1)) + try: + group = paginator.page(page) + except PageNotAnInteger: + group = paginator.page(1) + except EmptyPage: + group = paginator.page(paginator.num_pages) + res = [] + for g in group: + o = dict() + o['id'] = str(g.id) + o['image'] = g.image.url + o['name'] = g.name + o['type'] = g.type + o['admin_count'] = Group_admin.objects.filter(group_id=g.id).count() + o['user_count'] = Group_user.objects.filter(group_id=g.id).count() + o['status'] = g.status + res.append(o) + return render(request, 'management/group-management.html', {'res': res, 'group': group}) + + +def group_update(request, pk): + group = Group.objects.get(id=pk) + GROUP_STATUS_CHOICES = Group.GROUP_STATUS_CHOICES + group_status_choices_list = [] + for g in GROUP_STATUS_CHOICES: + group_status_choices_list.append(list(g)[1]) + group_type = Group_type.objects.all() + group_admin = Group_admin.objects.filter(group_id=pk) + print(pk) + g_a_list = [] + for g_a in group_admin: + o = dict() + o['id'] = str(g_a.id) + o['image'] = Userprofile.objects.get(user_id=g_a.user.id).image.url + o['username'] = g_a.user.username + o['name'] = Userprofile.objects.get(user_id=g_a.user.id).name + o['organization'] = Userprofile.objects.get(user_id=g_a.user.id).organization.name + o['administrativedivision'] = str(g_a.group.province) + '-' + str(g_a.group.cities) + '-' + str( + g_a.group.district) + '-' + str(g_a.group.town) + '-' + str(g_a.group.village) + g_a_list.append(o) + group_user = Group_user.objects.filter(group_id=pk) + g_u_list = [] + for g_u in group_user: + i = dict() + i['id'] = str(g_u.id) + i['image'] = Userprofile.objects.get(user_id=g_u.user.id).image.url + i['username'] = g_u.user.username + i['name'] = Userprofile.objects.get(user_id=g_u.user.id).name + i['organization'] = Userprofile.objects.get(user_id=g_u.user.id).organization.name + i['administrativedivision'] = str(g_u.group.province) + '-' + str(g_u.group.cities) + '-' + str( + g_u.group.district) + '-' + str(g_u.group.town) + '-' + str(g_u.group.village) + g_u_list.append(i) + if request.method == 'POST': + name = request.POST.get('name') + presentation = request.POST.get('presentation') + image = request.FILES.get('image') + type = request.POST.get('type') + status = request.POST.get('status') + province = request.POST.get('province') + print(str(province) + "66666666666666666666666666") + if province != '' and province.isdigit(): + province_r = Area_code_2020.objects.get(code=province).name + else: + province_r = province + city = request.POST.get('city') + if city != '' and city.isdigit(): + city_r = Area_code_2020.objects.get(code=city).name + else: + city_r = city + district = request.POST.get('district') + if district != '' and district.isdigit(): + district_r = Area_code_2020.objects.get(code=district).name + else: + district_r = district + town = request.POST.get('town') + if town != '' and town.isdigit(): + town_r = Area_code_2020.objects.get(code=town).name + else: + town_r = town + village = request.POST.get('village') + if village != '' and village.isdigit(): + village_r = Area_code_2020.objects.get(code=village).name + else: + village_r = village + if image is not None: + Group.objects.filter(id=pk).update(name=name, presentation=presentation, type_id=type, status=status, + province=province_r, cities=city_r, district=district_r, town=town_r, + village=village_r) + g = Group.objects.get(id=pk) + g.image = image + g.save() + messages.success(request, '修改成功') + return HttpResponseRedirect('/management/group/management/') + else: + Group.objects.filter(id=pk).update(name=name, presentation=presentation, type_id=type, status=status, + province=province_r, cities=city_r, district=district_r, town=town_r, + village=village_r) + messages.success(request, '修改成功') + return HttpResponseRedirect('/management/group/management/') + return render(request, 'management/group-management-update.html', + {'group': group, 'group_status_choices_list': group_status_choices_list, 'group_type': group_type, + 'g_a_list': g_a_list, 'g_u_list': g_u_list}) + + +def group_create(request): + GROUP_STATUS_CHOICES = Group.GROUP_STATUS_CHOICES + group_status_choices_list = [] + for g in GROUP_STATUS_CHOICES: + group_status_choices_list.append(list(g)[1]) + group_type = Group_type.objects.all() + if request.method == 'POST': + name = request.POST.get('name') + presentation = request.POST.get('presentation') + image = request.FILES.get('image') + type = request.POST.get('type') + status = request.POST.get('status') + province = request.POST.get('province') + if province != '': + province_r = Area_code_2020.objects.get(code=province).name + else: + messages.error(request, '请选择行政区划') + return HttpResponseRedirect('/management/organization/create/') + city = request.POST.get('city') + if city != '': + city_r = Area_code_2020.objects.get(code=city).name + else: + city_r = city + district = request.POST.get('district') + if district != '': + district_r = Area_code_2020.objects.get(code=district).name + else: + district_r = district + town = request.POST.get('town') + if town != '': + town_r = Area_code_2020.objects.get(code=town).name + else: + town_r = town + village = request.POST.get('village') + if village != '': + village_r = Area_code_2020.objects.get(code=village).name + else: + village_r = village + print(name, presentation, image, type, status, province, city, district, town, village) + if name is not None: + group = Group(name=name, presentation=presentation, image=image, type_id=type, status=status, + province=province_r, cities=city_r, district=district_r, town=town_r, village=village_r) + group.save() + messages.success(request, '添加成功') + else: + messages.error(request, '群组名不能为空') + return HttpResponseRedirect('/management/group/management/') + return render(request, 'management/group-management-create.html', + {'group_status_choices_list': group_status_choices_list, 'group_type': group_type}) + + +def group_admin_create(request, pk): + if request.method == 'POST': + user = request.POST.get("user") + print(user) + results = Group_admin.objects.filter(user_id=user, group_id=pk).count() + if results != 0: + messages.success(request, "该管理员已经存在") + return HttpResponseRedirect('/management/group/update/%s/' % (pk)) + group_admin = Group_admin(user_id=user, group_id=pk) + group_admin.save() + messages.success(request, "添加成功") + return HttpResponseRedirect('/management/group/update/%s/' % (pk)) + group = Group.objects.get(id=pk).name + user = User.objects.all() + return render(request, 'management/group-admin-create.html', {'usee': user, 'group': group, 'pk': pk}) + + +def group_admin_delete(request, pk, group_pk): + group_admin = Group_admin.objects.get(id=pk) + group_admin.delete() + messages.success(request, '删除成功') + return HttpResponseRedirect('/management/group/update/%s/' % (group_pk)) + + +def group_user_create(request, pk): + if request.method == 'POST': + user = request.POST.get('user') + results = Group_user.objects.filter(user_id=user, group_id=pk).count() + if results != 0: + messages.success(request, "该成员已经存在") + return HttpResponseRedirect('/management/group/update/%s/' % (pk)) + group_user = Group_user(user_id=user, group_id=pk) + group_user.save() + messages.success(request, '添加成功') + return HttpResponseRedirect('/management/group/update/%s' % (pk)) + group = Group.objects.get(id=pk).name + user = User.objects.all() + return render(request, 'management/group-user-create.html', {'usee': user, 'group': group, 'pk': pk}) + + +def group_user_delete(request, pk, group_pk): + group_user = Group_user.objects.get(id=pk) + group_user.delete() + messages.success(request, '删除成功') + return HttpResponseRedirect('/management/group/update/%s/' % (group_pk)) + + +def group_delete(request, pk): + group = Group.objects.get(id=pk) + group.delete() + messages.success(request, '删除成功') + return HttpResponseRedirect('/management/group/management/') + + +def organization_management(request): + organization = Organization.objects.all().order_by('-created') + paginator = Paginator(organization, 6) + page = int(request.GET.get('page', 1)) + try: + organization = paginator.page(page) + except PageNotAnInteger: + organization = paginator.page(1) + except EmptyPage: + organization = paginator.page(paginator.num_pages) + res = [] + for i in organization: + o = dict() + o['id'] = str(i.id) + o['name'] = i.name + o['image'] = i.image.url + o['organizationtype'] = i.organizationtype.organizationtype + o['administrativedivision'] = str(i.province) + '-' + str(i.cities) + '-' + str(i.district) + '-' + str( + i.town) + '-' + str(i.village) + o['usercount'] = Userprofile.objects.filter(organization_id=i.id).count() + o['mediacount'] = Weixin.objects.filter(organization_id=i.id).count() + Weibo.objects.filter( + organization_id=i.id).count() + Toutiao.objects.filter(organization_id=i.id).count() + Qita.objects.filter( + organization_id=i.id).count() + res.append(o) + + return render(request, 'management/organization-management.html', {"organization": organization, 'res': res}) + + +def organization_delete(request, pk): + organization = Organization.objects.get(id=pk) + organization.delete() + messages.success(request, '删除成功') + return HttpResponseRedirect('/management/organization/management/') + + +def organization_update(request, pk): + organization = Organization.objects.get(id=pk) + organizationtype = Organizationtype.objects.all() + if request.method == 'POST': + name = request.POST.get('name') + image = request.FILES.get('image') + organizationtype = request.POST.get('organizationtype') + province = request.POST.get('province') + if province != '' and province.isdigit(): + province_r = Area_code_2020.objects.get(code=province).name + else: + province_r = province + city = request.POST.get('city') + if city != '' and city.isdigit(): + city_r = Area_code_2020.objects.get(code=city).name + else: + city_r = city + district = request.POST.get('district') + if district != '' and district.isdigit(): + district_r = Area_code_2020.objects.get(code=district).name + else: + district_r = district + town = request.POST.get('town') + if town != '' and town.isdigit(): + town_r = Area_code_2020.objects.get(code=town).name + else: + town_r = town + village = request.POST.get('village') + if village != '' and village.isdigit(): + village_r = Area_code_2020.objects.get(code=village).name + else: + village_r = village + if name is not None: + if image is not None: + Organization.objects.filter(id=pk).update(name=name, organizationtype_id=organizationtype, + province=province_r, cities=city_r, district=district_r, + town=town_r, village=village_r) + o = Organization.objects.get(id=pk) + o.image = image + o.save() + messages.success(request, '修改成功') + return HttpResponseRedirect('/management/organization/management/') + else: + Organization.objects.filter(id=pk).update(name=name, organizationtype_id=organizationtype, + province=province_r, cities=city_r, district=district_r, + town=town_r, village=village_r) + messages.success(request, '修改成功') + return HttpResponseRedirect('/management/organization/management/') + return render(request, 'management/organization-management-update.html', + {'organization': organization, 'organizationtype': organizationtype}) + + +def organization_create(request): + organizationtype = Organizationtype.objects.all() + if request.method == 'POST': + name = request.POST.get('name') + image = request.FILES.get('image') + organizationtype = request.POST.get('organizationtype') + province = request.POST.get('province') + if province != '': + province_r = Area_code_2020.objects.get(code=province).name + else: + messages.error(request, '请选择行政区划') + return HttpResponseRedirect('/management/organization/create/') + city = request.POST.get('city') + if city != '': + city_r = Area_code_2020.objects.get(code=city).name + else: + city_r = city + district = request.POST.get('district') + if district != '': + district_r = Area_code_2020.objects.get(code=district).name + else: + district_r = district + town = request.POST.get('town') + if town != '': + town_r = Area_code_2020.objects.get(code=town).name + else: + town_r = town + village = request.POST.get('village') + if village != '': + village_r = Area_code_2020.objects.get(code=village).name + else: + village_r = village + print(province, city) + if name is not None: + organization = Organization(name=name, image=image, organizationtype_id=organizationtype, + province=province_r, cities=city_r, district=district_r, town=town_r, + village=village_r) + organization.save() + messages.success(request, '添加成功') + else: + messages.error(request, '单位名不能为空') + return HttpResponseRedirect('/management/organization/management/') + return render(request, 'management/organization-management-create.html', {'organizationtype': organizationtype}) + + +def newmedia_management_create_menu(request): + return render(request, 'management/newmedia-management-create-menu.html') + + +def newmedia_management_create_weixin(request): + WEIXIN_STATUS_CHOICES = Weixin.WEIXIN_STATUS_CHOICES + weixin_status_choices_list = [] + for w in WEIXIN_STATUS_CHOICES: + weixin_status_choices_list.append(list(w)[1]) + organization = Organization.objects.all() + if request.method == 'POST': + code = request.POST.get('code') + weixinid = request.POST.get('weixinid') + alias = request.POST.get('alias') + image = request.FILES.get('image') + organization = request.POST.get('organization') + status = request.POST.get('status') + if code is not None: + if organization is not None: + if image is not None: + weixin = Weixin(code=code, weixinid=weixinid, alias=alias, image=image, + organization_id=organization, status=status) + weixin.save() + messages.success(request, '创建成功') + return HttpResponseRedirect('/management/newmedia/management/create/weixin/') + else: + weixin = Weixin(code=code, weixinid=weixinid, alias=alias, image='weixin.png', + organization_id=organization, status=status) + weixin.save() + messages.success(request, '创建成功') + return HttpResponseRedirect('/management/newmedia/management/create/weixin/') + else: + messages.success(request, "请选择单位") + return render(request, 'management/newmedia-management-create-weixin.html', + {'weixin_status_choices_list': weixin_status_choices_list, "organization": organization}) + else: + messages.success(request, "微信公众号不能为空") + return render(request, 'management/newmedia-management-create-weixin.html', + {'weixin_status_choices_list': weixin_status_choices_list, "organization": organization}) + return render(request, 'management/newmedia-management-create-weixin.html', + {'weixin_status_choices_list': weixin_status_choices_list, "organization": organization}) + + +def newmedia_management_create_weibo(request): + WEIBO_STATUS_CHOICES = Weibo.WEIBO_STATUS_CHOICES + weibo_status_choices_list = [] + for w in WEIBO_STATUS_CHOICES: + weibo_status_choices_list.append(list(w)[1]) + organization = Organization.objects.all() + if request.method == 'POST': + code = request.POST.get('code') + weiboid = request.POST.get('weiboid') + print(str(weiboid) + "11111111111111111111111111111111111111") + alias = request.POST.get('alias') + image = request.FILES.get('image') + organization = request.POST.get('organization') + status = request.POST.get('status') + if code is not None: + if organization is not None: + if image is not None: + weibo = Weibo(code=code, weiboid=weiboid, alias=alias, image=image, + organization_id=organization, status=status) + weibo.save() + messages.success(request, '创建成功') + return HttpResponseRedirect('/management/newmedia/management/create/weibo/') + else: + weibo = Weibo(code=code, weiboid=weiboid, alias=alias, image='weibo.png', + organization_id=organization, status=status) + weibo.save() + messages.success(request, '创建成功') + return HttpResponseRedirect('/management/newmedia/management/create/weibo/') + else: + messages.success(request, "请选择单位") + return render(request, 'management/newmedia-management-create-weibo.html', + {'weibo_status_choices_list': weibo_status_choices_list, "organization": organization}) + else: + messages.success(request, "微博号不能为空") + return render(request, 'management/newmedia-management-create-weibo.html', + {'weixin_status_choices_list': weibo_status_choices_list, "organization": organization}) + return render(request, 'management/newmedia-management-create-weibo.html', + {'weibo_status_choices_list': weibo_status_choices_list, "organization": organization}) + + +def newmedia_management_create_toutiao(request): + TOUTIAO_STATUS_CHOICES = Toutiao.TOUTIAO_STATUS_CHOICES + toutiao_status_choices_list = [] + for w in TOUTIAO_STATUS_CHOICES: + toutiao_status_choices_list.append(list(w)[1]) + organization = Organization.objects.all() + if request.method == 'POST': + code = request.POST.get('code') + toutiaoid = request.POST.get('toutiaoid') + alias = request.POST.get('alias') + image = request.FILES.get('image') + organization = request.POST.get('organization') + status = request.POST.get('status') + if code is not None: + if organization is not None: + if image is not None: + toutiao = Toutiao(code=code, toutiaoid=toutiaoid, alias=alias, image=image, + organization_id=organization, status=status) + toutiao.save() + messages.success(request, '创建成功') + return HttpResponseRedirect('/management/newmedia/management/create/toutiao/') + else: + toutiao = Toutiao(code=code, toutiaoid=toutiaoid, alias=alias, image='toutiao.png', + organization_id=organization, status=status) + toutiao.save() + messages.success(request, '创建成功') + return HttpResponseRedirect('/management/newmedia/management/create/toutiao/') + else: + messages.success(request, "请选择单位") + return render(request, 'management/newmedia-management-create-toutiao.html', + {'toutiao_status_choices_list': toutiao_status_choices_list, + "organization": organization}) + else: + messages.success(request, "头条号不能为空") + return render(request, 'management/newmedia-management-create-toutiao.html', + {'toutiao_status_choices_list': toutiao_status_choices_list, "organization": organization}) + return render(request, 'management/newmedia-management-create-toutiao.html', + {'toutiao_status_choices_list': toutiao_status_choices_list, "organization": organization}) + + +def newmedia_management_create_qita(request): + QITA_STATUS_CHOICES = Qita.QITA_STATUS_CHOICES + qita_status_choices_list = [] + for w in QITA_STATUS_CHOICES: + qita_status_choices_list.append(list(w)[1]) + organization = Organization.objects.all() + if request.method == 'POST': + type = request.POST.get('type') + name = request.POST.get('name') + qitaid = request.POST.get('qitaid') + alias = request.POST.get('alias') + image = request.FILES.get('image') + organization = request.POST.get('organization') + status = request.POST.get('status') + if name is not None: + if organization is not None: + if image is not None: + qita = Qita(type=type, name=name, qitaid=qitaid, alias=alias, image=image, + organization_id=organization, status=status) + qita.save() + messages.success(request, '创建成功') + return HttpResponseRedirect('/management/newmedia/management/create/qita/') + else: + qita = Qita(type=type, name=name, qitaid=qitaid, alias=alias, image='qita.png', + organization_id=organization, status=status) + qita.save() + messages.success(request, '创建成功') + return HttpResponseRedirect('/management/newmedia/management/create/qita/') + else: + messages.success(request, "请选择单位") + return render(request, 'management/newmedia-management-create-qita.html', + {'qita_status_choices_list': qita_status_choices_list, "organization": organization}) + else: + messages.success(request, "新媒体名称不能为空") + return render(request, 'management/newmedia-management-create-qita.html', + {'qita_status_choices_list': qita_status_choices_list, "organization": organization}) + return render(request, 'management/newmedia-management-create-qita.html', + {'qita_status_choices_list': qita_status_choices_list, "organization": organization}) + + +def newmedia_management_edit_menu(request): + return render(request, 'management/newmedia-management-edit-menu.html') + + +def newmedia_management_edit_weixin(request): + weixin = Weixin.objects.all().order_by('-created') + paginator = Paginator(weixin, 6) + page = int(request.GET.get('page', 1)) + try: + weixin = paginator.page(page) + except PageNotAnInteger: + weixin = paginator.page(1) + except EmptyPage: + weixin = paginator.page(paginator.num_pages) + res = [] + for w in weixin: + o = dict() + o['id'] = str(w.id) + o['image'] = w.image + o['code'] = w.code + o['weixinid'] = w.weixinid + o['organization'] = w.organization.name + o['organization_type'] = w.organization.organizationtype.organizationtype + o['administrativedivision'] = str(w.organization.province) + '-' + str(w.organization.cities) + '-' + str( + w.organization.district) + '-' + str(w.organization.town) + '-' + str(w.organization.village) + o['status'] = w.status + res.append(o) + return render(request, 'management/newmedia-management-edit-weixin.html', {'weixin': weixin, 'res': res}) + + +def newmedia_management_edit_weibo(request): + weibo = Weibo.objects.all().order_by('-created') + paginator = Paginator(weibo, 6) + page = int(request.GET.get('page', 1)) + try: + weibo = paginator.page(page) + except PageNotAnInteger: + weibo = paginator.page(1) + except EmptyPage: + weibo = paginator.page(paginator.num_pages) + res = [] + for w in weibo: + o = dict() + o['id'] = str(w.id) + o['image'] = w.image + o['code'] = w.code + o['weiboid'] = w.weiboid + o['organization'] = w.organization.name + o['organization_type'] = w.organization.organizationtype.organizationtype + o['administrativedivision'] = str(w.organization.province) + '-' + str(w.organization.cities) + '-' + str( + w.organization.district) + '-' + str(w.organization.town) + '-' + str(w.organization.village) + o['status'] = w.status + res.append(o) + return render(request, 'management/newmedia-management-edit-weibo.html', {'weibo': weibo, 'res': res}) + + +def newmedia_management_edit_toutiao(request): + toutiao = Toutiao.objects.all().order_by('-created') + paginator = Paginator(toutiao, 6) + page = int(request.GET.get('page', 1)) + try: + toutiao = paginator.page(page) + except PageNotAnInteger: + toutiao = paginator.page(1) + except EmptyPage: + toutiao = paginator.page(paginator.num_pages) + res = [] + for w in toutiao: + o = dict() + o['id'] = str(w.id) + o['image'] = w.image + o['code'] = w.code + o['toutiaoid'] = w.toutiaoid + o['organization'] = w.organization.name + o['organization_type'] = w.organization.organizationtype.organizationtype + o['administrativedivision'] = str(w.organization.province) + '-' + str(w.organization.cities) + '-' + str( + w.organization.district) + '-' + str(w.organization.town) + '-' + str(w.organization.village) + o['status'] = w.status + res.append(o) + return render(request, 'management/newmedia-management-edit-toutiao.html', {'toutiao': toutiao, 'res': res}) + + +def newmedia_management_edit_qita(request): + qita = Qita.objects.all().order_by('-created') + paginator = Paginator(qita, 6) + page = int(request.GET.get('page', 1)) + try: + qita = paginator.page(page) + except PageNotAnInteger: + qita = paginator.page(1) + except EmptyPage: + qita = paginator.page(paginator.num_pages) + res = [] + for w in qita: + o = dict() + o['id'] = str(w.id) + o['image'] = w.image + o['type'] = w.type + o['name'] = w.name + o['qitaid'] = w.qitaid + o['organization'] = w.organization.name + o['organization_type'] = w.organization.organizationtype.organizationtype + o['administrativedivision'] = str(w.organization.province) + '-' + str(w.organization.cities) + '-' + str( + w.organization.district) + '-' + str(w.organization.town) + '-' + str(w.organization.village) + o['status'] = w.status + res.append(o) + return render(request, 'management/newmedia-management-edit-qita.html', {'qita': qita, 'res': res}) + + +def newmedia_management_update_weixin(request, pk): + WEIXIN_STATUS_CHOICES = Weixin.WEIXIN_STATUS_CHOICES + weixin_status_choices_list = [] + for w in WEIXIN_STATUS_CHOICES: + weixin_status_choices_list.append(list(w)[1]) + weixin = Weixin.objects.get(id=pk) + organization = Organization.objects.all() + if request.method == 'POST': + code = request.POST.get('code') + weixinid = request.POST.get('weixinid') + alias = request.POST.get('alias') + image = request.FILES.get('image') + organization = request.POST.get('organization') + status = request.POST.get('status') + if code is not None: + if organization is not None: + if image is not None: + Weixin.objects.filter(id=pk).update(code=code, weixinid=weixinid, alias=alias, + organization_id=organization, status=status) + weixin.image = image + weixin.save() + messages.success(request, '修改成功') + return HttpResponseRedirect('/management/newmedia/management/edit/weixin/') + else: + Weixin.objects.filter(id=pk).update(code=code, weixinid=weixinid, alias=alias, + organization_id=organization, status=status) + messages.success(request, '修改成功') + return HttpResponseRedirect('/management/newmedia/management/edit/weixin/') + else: + messages.success(request, "请选择单位") + return render(request, 'management/newmedia-management-update-weixin.html', + {'weixin': weixin, 'organization': organization, + 'weixin_status_choices_list': weixin_status_choices_list}) + else: + messages.success(request, "微信公众号不能为空") + return render(request, 'management/newmedia-management-update-weixin.html', + {'weixin': weixin, 'organization': organization, + 'weixin_status_choices_list': weixin_status_choices_list}) + return render(request, 'management/newmedia-management-update-weixin.html', + {'weixin': weixin, 'organization': organization, + 'weixin_status_choices_list': weixin_status_choices_list}) + + +def newmedia_management_update_weibo(request, pk): + WEIBO_STATUS_CHOICES = Weibo.WEIBO_STATUS_CHOICES + weibo_status_choices_list = [] + for w in WEIBO_STATUS_CHOICES: + weibo_status_choices_list.append(list(w)[1]) + weibo = Weibo.objects.get(id=pk) + organization = Organization.objects.all() + if request.method == 'POST': + code = request.POST.get('code') + weiboid = request.POST.get('weiboid') + alias = request.POST.get('alias') + image = request.FILES.get('image') + organization = request.POST.get('organization') + status = request.POST.get('status') + if code is not None: + if organization is not None: + if image is not None: + Weibo.objects.filter(id=pk).update(code=code, weiboid=weiboid, alias=alias, + organization_id=organization, status=status) + weibo.image = image + weibo.save() + messages.success(request, '修改成功') + return HttpResponseRedirect('/management/newmedia/management/edit/weibo/') + else: + Weibo.objects.filter(id=pk).update(code=code, weiboid=weiboid, alias=alias, + organization_id=organization, status=status) + messages.success(request, '修改成功') + return HttpResponseRedirect('/management/newmedia/management/edit/weibo/') + else: + messages.success(request, "请选择单位") + return render(request, 'management/newmedia-management-update-weibo.html', + {'weibo': weibo, 'organization': organization, + 'weibo_status_choices_list': weibo_status_choices_list}) + else: + messages.success(request, "微博号不能为空") + return render(request, 'management/newmedia-management-update-weibo.html', + {'weibo': weibo, 'organization': organization, + 'weibo_status_choices_list': weibo_status_choices_list}) + return render(request, 'management/newmedia-management-update-weibo.html', + {'weibo': weibo, 'organization': organization, + 'weibo_status_choices_list': weibo_status_choices_list}) + + +def newmedia_management_update_toutiao(request, pk): + TOUTIAO_STATUS_CHOICES = Toutiao.TOUTIAO_STATUS_CHOICES + toutiao_status_choices_list = [] + for w in TOUTIAO_STATUS_CHOICES: + toutiao_status_choices_list.append(list(w)[1]) + toutiao = Toutiao.objects.get(id=pk) + organization = Organization.objects.all() + if request.method == 'POST': + code = request.POST.get('code') + toutiaoid = request.POST.get('toutiaoid') + alias = request.POST.get('alias') + image = request.FILES.get('image') + organization = request.POST.get('organization') + status = request.POST.get('status') + if code is not None: + if organization is not None: + if image is not None: + Toutiao.objects.filter(id=pk).update(code=code, toutiaoid=toutiaoid, alias=alias, + organization_id=organization, status=status) + toutiao.image = image + toutiao.save() + messages.success(request, '修改成功') + return HttpResponseRedirect('/management/newmedia/management/edit/toutiao/') + else: + Toutiao.objects.filter(id=pk).update(code=code, toutiaoid=toutiaoid, alias=alias, + organization_id=organization, status=status) + messages.success(request, '修改成功') + return HttpResponseRedirect('/management/newmedia/management/edit/toutiao/') + else: + messages.success(request, "请选择单位") + return render(request, 'management/newmedia-management-update-toutiao.html', + {'toutiao': toutiao, 'organization': organization, + 'toutiao_status_choices_list': toutiao_status_choices_list}) + else: + messages.success(request, "头条号不能为空") + return render(request, 'management/newmedia-management-update-toutiao.html', + {'toutiao': toutiao, 'organization': organization, + 'toutiao_status_choices_list': toutiao_status_choices_list}) + return render(request, 'management/newmedia-management-update-toutiao.html', + {'toutiao': toutiao, 'organization': organization, + 'toutiao_status_choices_list': toutiao_status_choices_list}) + + +def newmedia_management_update_qita(request, pk): + QITA_STATUS_CHOICES = Qita.QITA_STATUS_CHOICES + qita_status_choices_list = [] + for w in QITA_STATUS_CHOICES: + qita_status_choices_list.append(list(w)[1]) + organization = Organization.objects.all() + qita = Qita.objects.get(id=pk) + if request.method == 'POST': + type = request.POST.get('type') + name = request.POST.get('name') + qitaid = request.POST.get('qitaid') + alias = request.POST.get('alias') + image = request.FILES.get('image') + organization = request.POST.get('organization') + status = request.POST.get('status') + if name is not None: + if organization is not None: + if image is not None: + Qita.objects.filter(id=pk).update(type=type, name=name, qitaid=qitaid, alias=alias, + organization_id=organization, status=status) + qita.image = image + qita.save() + messages.success(request, '修改成功') + return HttpResponseRedirect('/management/newmedia/management/edit/qita/') + else: + Qita.objects.filter(id=pk).update(type=type, name=name, qitaid=qitaid, alias=alias, + organization_id=organization, status=status) + messages.success(request, '修改成功') + return HttpResponseRedirect('/management/newmedia/management/edit/qita/') + else: + messages.success(request, "请选择单位") + return render(request, 'management/newmedia-management-update-qita.html', + {'qita': qita, 'organization': organization, + 'qita_status_choices_list': qita_status_choices_list}) + else: + messages.success(request, "新媒体名称不能为空") + return render(request, 'management/newmedia-management-update-qita.html', + {'qita': qita, 'organization': organization, + 'qita_status_choices_list': qita_status_choices_list}) + return render(request, 'management/newmedia-management-update-qita.html', + {'qita': qita, 'organization': organization, + 'qita_status_choices_list': qita_status_choices_list}) + + +def newmedia_management_delete_weixin(request, pk): + weixin = Weixin.objects.get(id=pk) + weixin.delete() + messages.success(request, "删除成功") + return HttpResponseRedirect('/management/newmedia/management/edit/weixin/') + + +def newmedia_management_delete_weibo(request, pk): + weibo = Weibo.objects.get(id=pk) + weibo.delete() + messages.success(request, "删除成功") + return HttpResponseRedirect('/management/newmedia/management/edit/weibo/') + + +def newmedia_management_delete_toutiao(request, pk): + toutiao = Toutiao.objects.get(id=pk) + toutiao.delete() + messages.success(request, "删除成功") + return HttpResponseRedirect('/management/newmedia/management/edit/toutiao/') + + +def newmedia_management_delete_qita(request, pk): + qita = Qita.objects.get(id=pk) + qita.delete() + messages.success(request, "删除成功") + return HttpResponseRedirect('/management/newmedia/management/edit/qita/') diff --git a/static/upload/cover/20181201110659913.PNG b/media/upload/cover/20181201110659913.PNG similarity index 100% rename from static/upload/cover/20181201110659913.PNG rename to media/upload/cover/20181201110659913.PNG diff --git a/static/upload/cover/20181201110659913_85e25PV.PNG b/media/upload/cover/20181201110659913_85e25PV.PNG similarity index 100% rename from static/upload/cover/20181201110659913_85e25PV.PNG rename to media/upload/cover/20181201110659913_85e25PV.PNG diff --git a/static/upload/cover/20181201110659913_ie84dq3.PNG b/media/upload/cover/20181201110659913_ie84dq3.PNG similarity index 100% rename from static/upload/cover/20181201110659913_ie84dq3.PNG rename to media/upload/cover/20181201110659913_ie84dq3.PNG diff --git a/static/upload/cover/weibo.png b/media/upload/cover/weibo.png similarity index 100% rename from static/upload/cover/weibo.png rename to media/upload/cover/weibo.png diff --git a/static/upload/cover/weixin.png b/media/upload/cover/weixin.png similarity index 100% rename from static/upload/cover/weixin.png rename to media/upload/cover/weixin.png diff --git a/static/upload/cover/weixin_T3Y4A36.png b/media/upload/cover/weixin_T3Y4A36.png similarity index 100% rename from static/upload/cover/weixin_T3Y4A36.png rename to media/upload/cover/weixin_T3Y4A36.png diff --git a/static/upload/cover/weixin_TC0D6fQ.png b/media/upload/cover/weixin_TC0D6fQ.png similarity index 100% rename from static/upload/cover/weixin_TC0D6fQ.png rename to media/upload/cover/weixin_TC0D6fQ.png diff --git a/static/upload/cover/微信图片_20200724112643.jpg b/media/upload/cover/微信图片_20200724112643.jpg similarity index 100% rename from static/upload/cover/微信图片_20200724112643.jpg rename to media/upload/cover/微信图片_20200724112643.jpg diff --git a/static/upload/cover/微信图片_20200724112643_deab8x0.jpg b/media/upload/cover/微信图片_20200724112643_deab8x0.jpg similarity index 100% rename from static/upload/cover/微信图片_20200724112643_deab8x0.jpg rename to media/upload/cover/微信图片_20200724112643_deab8x0.jpg diff --git a/static/upload/groupimage/20181201110659913.PNG b/media/upload/groupimage/20181201110659913.PNG similarity index 100% rename from static/upload/groupimage/20181201110659913.PNG rename to media/upload/groupimage/20181201110659913.PNG diff --git a/static/upload/groupimage/微信图片_20200724112643.jpg b/media/upload/groupimage/微信图片_20200724112643.jpg similarity index 100% rename from static/upload/groupimage/微信图片_20200724112643.jpg rename to media/upload/groupimage/微信图片_20200724112643.jpg diff --git a/static/upload/profile/20181201110659913.PNG b/media/upload/profile/20181201110659913.PNG similarity index 100% rename from static/upload/profile/20181201110659913.PNG rename to media/upload/profile/20181201110659913.PNG diff --git a/static/upload/profile/微信图片_20200724112643.jpg b/media/upload/profile/微信图片_20200724112643.jpg similarity index 100% rename from static/upload/profile/微信图片_20200724112643.jpg rename to media/upload/profile/微信图片_20200724112643.jpg diff --git a/media/upload/profile/微信图片_20200724112643_4e2NSOO.jpg b/media/upload/profile/微信图片_20200724112643_4e2NSOO.jpg new file mode 100644 index 0000000000000000000000000000000000000000..00f7364e8d1438e840bfaca6b494595153ce9bee GIT binary patch literal 23938 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 Z&_h6gdQ=U&713{I6cB*N-2eOG{{Vlvcc=gW literal 0 HcmV?d00001 diff --git a/media/upload/profile/微信图片_20200724112643_6VlW7BD.jpg b/media/upload/profile/微信图片_20200724112643_6VlW7BD.jpg new file mode 100644 index 0000000000000000000000000000000000000000..00f7364e8d1438e840bfaca6b494595153ce9bee GIT binary patch literal 23938 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 Z&_h6gdQ=U&713{I6cB*N-2eOG{{Vlvcc=gW literal 0 HcmV?d00001 diff --git a/media/upload/profile/微信图片_20200724112643_CkX05Bp.jpg b/media/upload/profile/微信图片_20200724112643_CkX05Bp.jpg new file mode 100644 index 0000000000000000000000000000000000000000..00f7364e8d1438e840bfaca6b494595153ce9bee GIT binary patch literal 23938 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 Z&_h6gdQ=U&713{I6cB*N-2eOG{{Vlvcc=gW literal 0 HcmV?d00001 diff --git a/media/upload/profile/微信图片_20200724112643_Umb7HT3.jpg b/media/upload/profile/微信图片_20200724112643_Umb7HT3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..00f7364e8d1438e840bfaca6b494595153ce9bee GIT binary patch literal 23938 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 Z&_h6gdQ=U&713{I6cB*N-2eOG{{Vlvcc=gW literal 0 HcmV?d00001 diff --git a/media/upload/profile/微信图片_20200724112643_pakJc7t.jpg b/media/upload/profile/微信图片_20200724112643_pakJc7t.jpg new file mode 100644 index 0000000000000000000000000000000000000000..00f7364e8d1438e840bfaca6b494595153ce9bee GIT binary patch literal 23938 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 Z&_h6gdQ=U&713{I6cB*N-2eOG{{Vlvcc=gW literal 0 HcmV?d00001 diff --git a/static/upload/qita.png b/media/upload/qita.png similarity index 100% rename from static/upload/qita.png rename to media/upload/qita.png diff --git a/static/upload/toutiao.png b/media/upload/toutiao.png similarity index 100% rename from static/upload/toutiao.png rename to media/upload/toutiao.png diff --git a/static/upload/weibo.png b/media/upload/weibo.png similarity index 100% rename from static/upload/weibo.png rename to media/upload/weibo.png diff --git a/static/upload/weixin.png b/media/upload/weixin.png similarity index 100% rename from static/upload/weixin.png rename to media/upload/weixin.png diff --git a/static/js/scripts.js b/static/js/scripts.js index f8b1a0f..0c51786 100644 --- a/static/js/scripts.js +++ b/static/js/scripts.js @@ -1,3638 +1,3638 @@ -/** - * @Package: Ultra Admin HTML Theme - * @Since: Ultra 1.0 - * This file is part of Ultra Admin Theme HTML package. - */ - - -jQuery(function($) { - - 'use strict'; - - var ULTRA_SETTINGS = window.ULTRA_SETTINGS || {}; - - - - - - /*-------------------------------- - Window Based Layout - --------------------------------*/ - ULTRA_SETTINGS.windowBasedLayout = function() { - var width = window.innerWidth; - //console.log(width); - - if ($("body").hasClass("chat-open") || $("body").hasClass("sidebar-collapse")) { - - ULTRA_SETTINGS.mainmenuCollapsed(); - - } else if (width < 1025) { - - // small window - $(".page-topbar").addClass("sidebar_shift").removeClass("chat_shift"); - $(".page-sidebar").addClass("collapseit").removeClass("expandit"); - $("#main-content").addClass("sidebar_shift").removeClass("chat_shift"); - $(".page-chatapi").removeClass("showit").addClass("hideit"); - $(".chatapi-windows").removeClass("showit").addClass("hideit"); - ULTRA_SETTINGS.mainmenuCollapsed(); - - } else { - - // large window - $(".page-topbar").removeClass("sidebar_shift chat_shift"); - $(".page-sidebar").removeClass("collapseit chat_shift"); - $("#main-content").removeClass("sidebar_shift chat_shift"); - ULTRA_SETTINGS.mainmenuScroll(); - } - - - } - - - - /*-------------------------------- - CHAT API - --------------------------------*/ - ULTRA_SETTINGS.chatAPI = function() { - - - $('.page-topbar .toggle_chat').on('click', function() { - var chatarea = $(".page-chatapi"); - var chatwindow = $(".chatapi-windows"); - var topbar = $(".page-topbar"); - var mainarea = $("#main-content"); - var menuarea = $(".page-sidebar"); - - if (chatarea.hasClass("hideit")) { - chatarea.addClass("showit").removeClass("hideit"); - chatwindow.addClass("showit").removeClass("hideit"); - topbar.addClass("chat_shift"); - mainarea.addClass("chat_shift"); - menuarea.addClass("chat_shift"); - ULTRA_SETTINGS.mainmenuCollapsed(); - } else { - chatarea.addClass("hideit").removeClass("showit"); - chatwindow.addClass("hideit").removeClass("showit"); - topbar.removeClass("chat_shift"); - mainarea.removeClass("chat_shift"); - menuarea.removeClass("chat_shift"); - //ULTRA_SETTINGS.mainmenuScroll(); - ULTRA_SETTINGS.windowBasedLayout(); - } - }); - - $('.page-topbar .sidebar_toggle').on('click', function() { - var chatarea = $(".page-chatapi"); - var chatwindow = $(".chatapi-windows"); - var topbar = $(".page-topbar"); - var mainarea = $("#main-content"); - var menuarea = $(".page-sidebar"); - - if (menuarea.hasClass("collapseit") || menuarea.hasClass("chat_shift")) { - menuarea.addClass("expandit").removeClass("collapseit").removeClass("chat_shift"); - topbar.removeClass("sidebar_shift").removeClass("chat_shift"); - mainarea.removeClass("sidebar_shift").removeClass("chat_shift"); - chatarea.addClass("hideit").removeClass("showit"); - chatwindow.addClass("hideit").removeClass("showit"); - ULTRA_SETTINGS.mainmenuScroll(); - } else { - menuarea.addClass("collapseit").removeClass("expandit").removeClass("chat_shift"); - topbar.addClass("sidebar_shift").removeClass("chat_shift"); - mainarea.addClass("sidebar_shift").removeClass("chat_shift"); - ULTRA_SETTINGS.mainmenuCollapsed(); - } - }); - - }; - - - /*-------------------------------- - CHAT API Scroll - --------------------------------*/ - ULTRA_SETTINGS.chatApiScroll = function() { - - var topsearch = $(".page-chatapi .search-bar").height(); - var height = window.innerHeight - topsearch; - $('.chat-wrapper').height(height).perfectScrollbar({ - suppressScrollX: true - }); - }; - - - /*-------------------------------- - CHAT API window - --------------------------------*/ - ULTRA_SETTINGS.chatApiWindow = function() { - - var chatarea = $(".page-chatapi"); - - $('.page-chatapi .user-row').on('click', function() { - - var name = $(this).find(".user-info h4 a").html(); - var img = $(this).find(".user-img a img").attr("src"); - var id = $(this).attr("data-user-id"); - var status = $(this).find(".user-info .status").attr("data-status"); - - if ($(this).hasClass("active")) { - $(this).toggleClass("active"); - - $(".chatapi-windows #user-window" + id).hide(); - - } else { - $(this).toggleClass("active"); - - if ($(".chatapi-windows #user-window" + id).length) { - - $(".chatapi-windows #user-window" + id).removeClass("minimizeit").show(); - - } else { - var msg = chatformat_msg('Wow! What a Beautiful theme!', 'receive', name); - msg += chatformat_msg('Yes! Ultra Admin Theme ;)', 'sent', 'You'); - var html = "
"; - html += "
" + name + "
"; - html += "
" + msg + "
"; - html += "
"; - html += "
"; - $(".chatapi-windows").append(html); - } - } - - }); - - $(document).on('click', ".chatapi-windows .user-window .controlbar .closeit", function(e) { - var id = $(this).attr("data-user-id"); - $(".chatapi-windows #user-window" + id).hide(); - $(".page-chatapi .user-row#chat_user_" + id).removeClass("active"); - }); - - $(document).on('click', ".chatapi-windows .user-window .controlbar img, .chatapi-windows .user-window .controlbar .minimizeit", function(e) { - var id = $(this).attr("data-user-id"); - - if (!$(".chatapi-windows #user-window" + id).hasClass("minimizeit")) { - $(".chatapi-windows #user-window" + id).addClass("minimizeit"); - ULTRA_SETTINGS.tooltipsPopovers(); - } else { - $(".chatapi-windows #user-window" + id).removeClass("minimizeit"); - } - - }); - - $(document).on('keypress', ".chatapi-windows .user-window .typearea input", function(e) { - if (e.keyCode == 13) { - var id = $(this).attr("data-user-id"); - var msg = $(this).val(); - msg = chatformat_msg(msg, 'sent', 'You'); - $(".chatapi-windows #user-window" + id + " .chatarea").append(msg); - $(this).val(""); - $(this).focus(); - } - $(".chatapi-windows #user-window" + id + " .chatarea").perfectScrollbar({ - suppressScrollX: true - }); - }); - - }; - - function chatformat_msg(msg, type, name) { - var d = new Date(); - var h = d.getHours(); - var m = d.getMinutes(); - return "
" + name + "" + msg + "" + h + ":" + m + "
"; - } - - - /*-------------------------------- - Login Page - --------------------------------*/ - ULTRA_SETTINGS.loginPage = function() { - - var height = window.innerHeight; - var formheight = $("#login").height(); - var newheight = (height - formheight) / 2; - //console.log(height+" - "+ formheight + " / "+ newheight); - $('#login').css('margin-top', +newheight + 'px'); - - if ($('#login #user_login').length) { - var d = document.getElementById('user_login'); - d.focus(); - } - - }; - - - - /*-------------------------------- - Search Page - --------------------------------*/ - ULTRA_SETTINGS.searchPage = function() { - - $('.search_data .tab-pane').perfectScrollbar({ - suppressScrollX: true - }); - var search = $(".search-page-input"); - if (search.length) { - search.focus(); - } - }; - - - /*-------------------------------- - Viewport Checker - --------------------------------*/ - ULTRA_SETTINGS.viewportElement = function() { - - if ($.isFunction($.fn.viewportChecker)) { - - $('.inviewport').viewportChecker({ - callbackFunction: function(elem, action) { - //setTimeout(function(){ - //elem.html((action == "add") ? 'Callback with 500ms timeout: added class' : 'Callback with 500ms timeout: removed class'); - //},500); - } - }); - - - $('.number_counter').viewportChecker({ - classToAdd: 'start_timer', - offset: 10, - callbackFunction: function(elem) { - $('.start_timer:not(.counted)').each(count); - //$(elem).removeClass('number_counter'); - } - }); - - } - - // start count - function count(options) { - var $this = $(this); - options = $.extend({}, options || {}, $this.data('countToOptions') || {}); - $this.countTo(options).addClass("counted"); - } - }; - - - - /*-------------------------------- - Sortable / Draggable Panels - --------------------------------*/ - ULTRA_SETTINGS.draggablePanels = function() { - - if ($.isFunction($.fn.sortable)) { - $(".sort_panel").sortable({ - connectWith: ".sort_panel", - handle: "header.panel_header", - cancel: ".panel_actions", - placeholder: "portlet-placeholder" - }); - } - }; - - - - /*-------------------------------- - Breadcrumb autoHidden - --------------------------------*/ - ULTRA_SETTINGS.breadcrumbAutoHidden = function() { - - $('.breadcrumb.auto-hidden a').on('mouseover', function() { - $(this).removeClass("collapsed"); - }); - $('.breadcrumb.auto-hidden a').on('mouseout', function() { - $(this).addClass("collapsed"); - }); - - }; - - - - - - /*-------------------------------- - Section Box Actions - --------------------------------*/ - ULTRA_SETTINGS.sectionBoxActions = function() { - - $('section.box .actions .box_toggle').on('click', function() { - - var content = $(this).parent().parent().parent().find(".content-body"); - if (content.hasClass("collapsed")) { - content.removeClass("collapsed").slideDown(500); - $(this).removeClass("fa-chevron-up").addClass("fa-chevron-down"); - } else { - content.addClass("collapsed").slideUp(500); - $(this).removeClass("fa-chevron-down").addClass("fa-chevron-up"); - } - - }); - - $('section.box .actions .box_close').on('click', function() { - content = $(this).parent().parent().parent().remove(); - }); - - - - }; - - - - - - - /*-------------------------------- - Main Menu Scroll - --------------------------------*/ - ULTRA_SETTINGS.mainmenuScroll = function() { - - //console.log("expand scroll menu"); - - var topbar = $(".page-topbar").height(); - var projectinfo = $(".project-info").innerHeight(); - - var height = window.innerHeight - topbar - projectinfo; - - $('#main-menu-wrapper').height(height).perfectScrollbar({ - suppressScrollX: true - }); - $("#main-menu-wrapper .wraplist").height('auto'); - - - /*show first sub menu of open menu item only - opened after closed*/ - // > in the selector is used to select only immediate elements and not the inner nested elements. - $("li.open > .sub-menu").attr("style", "display:block;"); - - - }; - - - /*-------------------------------- - Collapsed Main Menu - --------------------------------*/ - ULTRA_SETTINGS.mainmenuCollapsed = function() { - - if ($(".page-sidebar.chat_shift #main-menu-wrapper").length > 0 || $(".page-sidebar.collapseit #main-menu-wrapper").length > 0) { - //console.log("collapse menu"); - var topbar = $(".page-topbar").height(); - var windowheight = window.innerHeight; - var minheight = windowheight - topbar; - var fullheight = $(".page-container #main-content .wrapper").height(); - - var height = fullheight; - - if (fullheight < minheight) { - height = minheight; - } - - $('#main-menu-wrapper').perfectScrollbar('destroy'); - - $('.page-sidebar.chat_shift #main-menu-wrapper .wraplist, .page-sidebar.collapseit #main-menu-wrapper .wraplist').height(height); - - /*hide sub menu of open menu item*/ - $("li.open .sub-menu").attr("style", ""); - - } - - }; - - - - - /*-------------------------------- - Main Menu - --------------------------------*/ - ULTRA_SETTINGS.mainMenu = function() { - $('#main-menu-wrapper li a').click(function(e) { - - if ($(this).next().hasClass('sub-menu') === false) { - return; - } - - var parent = $(this).parent().parent(); - var sub = $(this).next(); - - parent.children('li.open').children('.sub-menu').slideUp(200); - parent.children('li.open').children('a').children('.arrow').removeClass('open'); - parent.children('li').removeClass('open'); - - if (sub.is(":visible")) { - $(this).find(".arrow").removeClass("open"); - sub.slideUp(200); - } else { - $(this).parent().addClass("open"); - $(this).find(".arrow").addClass("open"); - sub.slideDown(200); - } - - }); - - $("body").click(function(e) { - $(".page-sidebar.collapseit .wraplist li.open .sub-menu").attr("style",""); - $(".page-sidebar.collapseit .wraplist li.open").removeClass("open"); - $(".page-sidebar.chat_shift .wraplist li.open .sub-menu").attr("style",""); - $(".page-sidebar.chat_shift .wraplist li.open").removeClass("open"); - }); - - }; - - - - /*-------------------------------- - Mailbox - --------------------------------*/ - ULTRA_SETTINGS.mailboxInbox = function() { - - $('.mail_list table .star i').click(function(e) { - $(this).toggleClass("fa-star fa-star-o"); - }); - - $('.mail_list .open-view').click(function(e) { - window.location = 'mail-view.html'; - }); - - $('.mail_view_info .labels .cc').click(function(e) { - var ele = $(".mail_compose_cc"); - if (ele.is(":visible")) { - ele.hide(); - } else { - ele.show(); - } - }); - - $('.mail_view_info .labels .bcc').click(function(e) { - var ele = $(".mail_compose_bcc"); - if (ele.is(":visible")) { - ele.hide(); - } else { - ele.show(); - } - }); - - }; - - - - - /*-------------------------------- - Top Bar - --------------------------------*/ - ULTRA_SETTINGS.pageTopBar = function() { - $('.page-topbar li.searchform .input-group-addon').click(function(e) { - $(this).parent().parent().toggleClass("focus"); - $(this).parent().find("input").focus(); - }); - - $('.page-topbar li .dropdown-menu .list').perfectScrollbar({ - suppressScrollX: true - }); - - }; - - - /*-------------------------------- - Extra form settings - --------------------------------*/ - ULTRA_SETTINGS.extraFormSettings = function() { - - // transparent input group focus/blur - $('.input-group .form-control').focus(function(e) { - $(this).parent().find(".input-group-addon").addClass("input-focus"); - $(this).parent().find(".input-group-btn").addClass("input-focus"); - }); - - $('.input-group .form-control').blur(function(e) { - $(this).parent().find(".input-group-addon").removeClass("input-focus"); - $(this).parent().find(".input-group-btn").removeClass("input-focus"); - }); - - }; - - - - /*-------------------------------- - js tree - --------------------------------*/ - ULTRA_SETTINGS.jsTreeINIT = function() { - - - if ($.isFunction($.fn.jstree)) { - $(function() { - var to = false; - $('#treedata_q').keyup(function() { - if (to) { - clearTimeout(to); - } - to = setTimeout(function() { - var v = $('#treedata_q').val(); - $('#jstree_treedata').jstree(true).search(v); - }, 250); - }); - - $('#jstree_treedata') - .jstree({ - "core": { - "animation": 0, - "check_callback": true, - "themes": { - "stripes": true - }, - 'data': { - 'url': function(node) { - return node.id === '#' ? 'data/ajax_demo_roots_jstree.json' : 'data/ajax_demo_children_jstree.json'; - }, - 'data': function(node) { - return { - 'id': node.id - }; - } - } - }, - "types": { - "#": { - "max_children": 1, - "max_depth": 4, - "valid_children": ["root"] - }, - "root": { - "icon": "assets/plugins/jstree/images/tree_icon.png", - "valid_children": ["default"] - }, - "default": { - "valid_children": ["default", "file"] - }, - "file": { - "icon": "fa fa-file", - "valid_children": [] - } - }, - "checkbox": { - "keep_selected_style": false - }, - "plugins": ["checkbox", "contextmenu", "dnd", "search", "sort", "state", "types", "unique", "wholerow"] - }); - }); - - } - }; - - - - /*-------------------------------- - Vector maps - --------------------------------*/ - ULTRA_SETTINGS.jvectorMaps = function() { - - if ($.isFunction($.fn.vectorMap)) { - - if ($("#world-map-markers").length) { - //@code_start - $(function() { - $('#world-map-markers').vectorMap({ - map: 'world_mill_en', - scaleColors: ['#1fb5ac', '#1fb5ac'], - normalizeFunction: 'polynomial', - hoverOpacity: 0.7, - hoverColor: false, - regionsSelectable: true, - markersSelectable: true, - markersSelectableOne: true, - - onRegionOver: function(event, code) { - //console.log('region-over', code); - }, - onRegionOut: function(event, code) { - //console.log('region-out', code); - }, - onRegionClick: function(event, code) { - //console.log('region-click', code); - }, - onRegionSelected: function(event, code, isSelected, selectedRegions) { - //console.log('region-select', code, isSelected, selectedRegions); - if (window.localStorage) { - window.localStorage.setItem( - 'jvectormap-selected-regions', - JSON.stringify(selectedRegions) - ); - } - }, - - panOnDrag: true, - - focusOn: { - x: 0.5, - y: 0.5, - scale: 1, - animate: true - }, - - - regionStyle: { - initial: { - fill: 'white', - 'fill-opacity': 1, - stroke: 'none', - 'stroke-width': 0, - 'stroke-opacity': 1 - }, - hover: { - fill: '#fa8564', - 'fill-opacity': 1, - cursor: 'pointer' - }, - selected: { - fill: '#fa8564' - }, - selectedHover: {} - }, - - - - markerStyle: { - initial: { - fill: '#9972b5', - stroke: '#9972b5', - r: 6 - }, - hover: { - stroke: '#FDB45C', - "stroke-width": 2, - cursor: 'pointer' - }, - selected: { - fill: '#FDB45C', - "stroke-width": 0, - }, - }, - backgroundColor: '#1fb5ac', - markers: [{ - latLng: [41.90, 12.45], - name: 'Vatican City' - }, { - latLng: [43.73, 7.41], - name: 'Monaco' - }, { - latLng: [-0.52, 166.93], - name: 'Nauru' - }, { - latLng: [-8.51, 179.21], - name: 'Tuvalu' - }, { - latLng: [43.93, 12.46], - name: 'San Marino' - }, { - latLng: [47.14, 9.52], - name: 'Liechtenstein' - }, { - latLng: [7.11, 171.06], - name: 'Marshall Islands' - }, { - latLng: [17.3, -62.73], - name: 'Saint Kitts and Nevis' - }, { - latLng: [3.2, 73.22], - name: 'Maldives' - }, { - latLng: [35.88, 14.5], - name: 'Malta' - }, { - latLng: [12.05, -61.75], - name: 'Grenada' - }, { - latLng: [13.16, -61.23], - name: 'Saint Vincent and the Grenadines' - }, { - latLng: [13.16, -59.55], - name: 'Barbados' - }, { - latLng: [17.11, -61.85], - name: 'Antigua and Barbuda' - }, { - latLng: [-4.61, 55.45], - name: 'Seychelles' - }, { - latLng: [7.35, 134.46], - name: 'Palau' - }, { - latLng: [42.5, 1.51], - name: 'Andorra' - }, { - latLng: [14.01, -60.98], - name: 'Saint Lucia' - }, { - latLng: [6.91, 158.18], - name: 'Federated States of Micronesia' - }, { - latLng: [1.3, 103.8], - name: 'Singapore' - }, { - latLng: [1.46, 173.03], - name: 'Kiribati' - }, { - latLng: [-21.13, -175.2], - name: 'Tonga' - }, { - latLng: [15.3, -61.38], - name: 'Dominica' - }, { - latLng: [-20.2, 57.5], - name: 'Mauritius' - }, { - latLng: [26.02, 50.55], - name: 'Bahrain' - }, { - latLng: [0.33, 6.73], - name: 'São Tomé and Príncipe' - }] - }); - }); - //@code_end - } - - var mapid = ""; - mapid = $('#europe_mill_en-map'); - if (mapid.length) { - mapid.vectorMap({ - map: 'europe_mill_en', - regionsSelectable: true, - backgroundColor: '#1fb5ac', - regionStyle: { - initial: { - fill: 'white', - stroke: 'none', - }, - hover: { - fill: '#fa8564', - 'fill-opacity': 1, - cursor: 'pointer' - }, - selected: { - fill: '#fa8564' - } - }, - focusOn: { - x: 0, - y: 0, - scale: 1, - animate: true - }, - }); - } // Europe - mapid = $('#in_mill_en-map'); - if (mapid.length) { - mapid.vectorMap({ - map: 'in_mill_en', - regionsSelectable: true, - backgroundColor: '#1fb5ac', - regionStyle: { - initial: { - fill: 'white', - stroke: 'none', - }, - hover: { - fill: '#fa8564', - 'fill-opacity': 1, - cursor: 'pointer' - }, - selected: { - fill: '#fa8564' - } - }, - focusOn: { - x: 0, - y: 0, - scale: 5, - animate: true - }, - }); - } // India - mapid = $('#us_aea_en-map'); - if (mapid.length) { - mapid.vectorMap({ - map: 'us_aea_en', - regionsSelectable: true, - backgroundColor: '#1fb5ac', - regionStyle: { - initial: { - fill: 'white', - stroke: 'none', - }, - hover: { - fill: '#fa8564', - 'fill-opacity': 1, - cursor: 'pointer' - }, - selected: { - fill: '#fa8564' - } - }, - focusOn: { - x: 0, - y: 0, - scale: 5, - animate: true - }, - }); - } // USA - mapid = $('#pt_mill_en-map'); - if (mapid.length) { - mapid.vectorMap({ - map: 'pt_mill_en', - regionsSelectable: true, - backgroundColor: '#1fb5ac', - regionStyle: { - initial: { - fill: 'white', - stroke: 'none', - }, - hover: { - fill: '#fa8564', - 'fill-opacity': 1, - cursor: 'pointer' - }, - selected: { - fill: '#fa8564' - } - }, - focusOn: { - x: 0, - y: 0, - scale: 5, - animate: true - }, - }); - } // Portugal - mapid = $('#cn_mill_en-map'); - if (mapid.length) { - mapid.vectorMap({ - map: 'cn_mill_en', - regionsSelectable: true, - backgroundColor: '#1fb5ac', - regionStyle: { - initial: { - fill: 'white', - stroke: 'none', - }, - hover: { - fill: '#fa8564', - 'fill-opacity': 1, - cursor: 'pointer' - }, - selected: { - fill: '#fa8564' - } - }, - focusOn: { - x: 0, - y: 0, - scale: 5, - animate: true - }, - }); - } // China - mapid = $('#nz_mill_en-map'); - if (mapid.length) { - mapid.vectorMap({ - map: 'nz_mill_en', - regionsSelectable: true, - backgroundColor: '#1fb5ac', - regionStyle: { - initial: { - fill: 'white', - stroke: 'none', - }, - hover: { - fill: '#fa8564', - 'fill-opacity': 1, - cursor: 'pointer' - }, - selected: { - fill: '#fa8564' - } - }, - focusOn: { - x: 0, - y: 0, - scale: 5, - animate: true - }, - }); - } // New Zealand - mapid = $('#no_mill_en-map'); - if (mapid.length) { - mapid.vectorMap({ - map: 'no_mill_en', - regionsSelectable: true, - backgroundColor: '#1fb5ac', - regionStyle: { - initial: { - fill: 'white', - stroke: 'none', - }, - hover: { - fill: '#fa8564', - 'fill-opacity': 1, - cursor: 'pointer' - }, - selected: { - fill: '#fa8564' - } - }, - focusOn: { - x: 0, - y: 0, - scale: 5, - animate: true - }, - }); - } // Norway - mapid = $('#es_mill_en-map'); - if (mapid.length) { - mapid.vectorMap({ - map: 'es_mill_en', - regionsSelectable: true, - backgroundColor: '#1fb5ac', - regionStyle: { - initial: { - fill: 'white', - stroke: 'none', - }, - hover: { - fill: '#fa8564', - 'fill-opacity': 1, - cursor: 'pointer' - }, - selected: { - fill: '#fa8564' - } - }, - focusOn: { - x: 0, - y: 0, - scale: 5, - animate: true - }, - }); - } // Spain - mapid = $('#au_mill_en-map'); - if (mapid.length) { - mapid.vectorMap({ - map: 'au_mill_en', - regionsSelectable: true, - backgroundColor: '#1fb5ac', - regionStyle: { - initial: { - fill: 'white', - stroke: 'none', - }, - hover: { - fill: '#fa8564', - 'fill-opacity': 1, - cursor: 'pointer' - }, - selected: { - fill: '#fa8564' - } - }, - focusOn: { - x: 0, - y: 0, - scale: 5, - animate: true - }, - }); - } // Australia - mapid = $('#fr_regions_mill_en-map'); - if (mapid.length) { - mapid.vectorMap({ - map: 'fr_regions_mill_en', - regionsSelectable: true, - backgroundColor: '#1fb5ac', - regionStyle: { - initial: { - fill: 'white', - stroke: 'none', - }, - hover: { - fill: '#fa8564', - 'fill-opacity': 1, - cursor: 'pointer' - }, - selected: { - fill: '#fa8564' - } - }, - focusOn: { - x: 0, - y: 0, - scale: 5, - animate: true - }, - }); - } // France - Regions - mapid = $('#th_mill_en-map'); - if (mapid.length) { - mapid.vectorMap({ - map: 'th_mill_en', - regionsSelectable: true, - backgroundColor: '#1fb5ac', - regionStyle: { - initial: { - fill: 'white', - stroke: 'none', - }, - hover: { - fill: '#fa8564', - 'fill-opacity': 1, - cursor: 'pointer' - }, - selected: { - fill: '#fa8564' - } - }, - focusOn: { - x: 0, - y: 0, - scale: 5, - animate: true - }, - }); - } // Thailand - mapid = $('#co_mill_en-map'); - if (mapid.length) { - mapid.vectorMap({ - map: 'co_mill_en', - regionsSelectable: true, - backgroundColor: '#1fb5ac', - regionStyle: { - initial: { - fill: 'white', - stroke: 'none', - }, - hover: { - fill: '#fa8564', - 'fill-opacity': 1, - cursor: 'pointer' - }, - selected: { - fill: '#fa8564' - } - }, - focusOn: { - x: 0, - y: 0, - scale: 5, - animate: true - }, - }); - } // Colombia - mapid = $('#be_mill_en-map'); - if (mapid.length) { - mapid.vectorMap({ - map: 'be_mill_en', - regionsSelectable: true, - backgroundColor: '#1fb5ac', - regionStyle: { - initial: { - fill: 'white', - stroke: 'none', - }, - hover: { - fill: '#fa8564', - 'fill-opacity': 1, - cursor: 'pointer' - }, - selected: { - fill: '#fa8564' - } - }, - focusOn: { - x: 0, - y: 0, - scale: 5, - animate: true - }, - }); - } // Belgium - mapid = $('#ar_mill_en-map'); - if (mapid.length) { - mapid.vectorMap({ - map: 'ar_mill_en', - regionsSelectable: true, - backgroundColor: '#1fb5ac', - regionStyle: { - initial: { - fill: 'white', - stroke: 'none', - }, - hover: { - fill: '#fa8564', - 'fill-opacity': 1, - cursor: 'pointer' - }, - selected: { - fill: '#fa8564' - } - }, - focusOn: { - x: 0, - y: 0, - scale: 5, - animate: true - }, - }); - } // Argentina - mapid = $('#ve_mill_en-map'); - if (mapid.length) { - mapid.vectorMap({ - map: 've_mill_en', - regionsSelectable: true, - backgroundColor: '#1fb5ac', - regionStyle: { - initial: { - fill: 'white', - stroke: 'none', - }, - hover: { - fill: '#fa8564', - 'fill-opacity': 1, - cursor: 'pointer' - }, - selected: { - fill: '#fa8564' - } - }, - focusOn: { - x: 0, - y: 0, - scale: 5, - animate: true - }, - }); - } // Venezuela - mapid = $('#it_mill_en-map'); - if (mapid.length) { - mapid.vectorMap({ - map: 'it_mill_en', - regionsSelectable: true, - backgroundColor: '#1fb5ac', - regionStyle: { - initial: { - fill: 'white', - stroke: 'none', - }, - hover: { - fill: '#fa8564', - 'fill-opacity': 1, - cursor: 'pointer' - }, - selected: { - fill: '#fa8564' - } - }, - focusOn: { - x: 0, - y: 0, - scale: 5, - animate: true - }, - }); - } // Italy - mapid = $('#dk_mill_en-map'); - if (mapid.length) { - mapid.vectorMap({ - map: 'dk_mill_en', - regionsSelectable: true, - backgroundColor: '#1fb5ac', - regionStyle: { - initial: { - fill: 'white', - stroke: 'none', - }, - hover: { - fill: '#fa8564', - 'fill-opacity': 1, - cursor: 'pointer' - }, - selected: { - fill: '#fa8564' - } - }, - focusOn: { - x: 0, - y: 0, - scale: 5, - animate: true - }, - }); - } // Denmark - mapid = $('#at_mill_en-map'); - if (mapid.length) { - mapid.vectorMap({ - map: 'at_mill_en', - regionsSelectable: true, - backgroundColor: '#1fb5ac', - regionStyle: { - initial: { - fill: 'white', - stroke: 'none', - }, - hover: { - fill: '#fa8564', - 'fill-opacity': 1, - cursor: 'pointer' - }, - selected: { - fill: '#fa8564' - } - }, - focusOn: { - x: 0, - y: 0, - scale: 5, - animate: true - }, - }); - } // Austria - mapid = $('#ca_lcc_en-map'); - if (mapid.length) { - mapid.vectorMap({ - map: 'ca_lcc_en', - regionsSelectable: true, - backgroundColor: '#1fb5ac', - regionStyle: { - initial: { - fill: 'white', - stroke: 'none', - }, - hover: { - fill: '#fa8564', - 'fill-opacity': 1, - cursor: 'pointer' - }, - selected: { - fill: '#fa8564' - } - }, - focusOn: { - x: 0, - y: 0, - scale: 5, - animate: true - }, - }); - } // Canada - mapid = $('#nl_mill_en-map'); - if (mapid.length) { - mapid.vectorMap({ - map: 'nl_mill_en', - regionsSelectable: true, - backgroundColor: '#1fb5ac', - regionStyle: { - initial: { - fill: 'white', - stroke: 'none', - }, - hover: { - fill: '#fa8564', - 'fill-opacity': 1, - cursor: 'pointer' - }, - selected: { - fill: '#fa8564' - } - }, - focusOn: { - x: 0, - y: 0, - scale: 5, - animate: true - }, - }); - } // Netherlands - mapid = $('#se_mill_en-map'); - if (mapid.length) { - mapid.vectorMap({ - map: 'se_mill_en', - regionsSelectable: true, - backgroundColor: '#1fb5ac', - regionStyle: { - initial: { - fill: 'white', - stroke: 'none', - }, - hover: { - fill: '#fa8564', - 'fill-opacity': 1, - cursor: 'pointer' - }, - selected: { - fill: '#fa8564' - } - }, - focusOn: { - x: 0, - y: 0, - scale: 5, - animate: true - }, - }); - } // Sweden - mapid = $('#pl_mill_en-map'); - if (mapid.length) { - mapid.vectorMap({ - map: 'pl_mill_en', - regionsSelectable: true, - backgroundColor: '#1fb5ac', - regionStyle: { - initial: { - fill: 'white', - stroke: 'none', - }, - hover: { - fill: '#fa8564', - 'fill-opacity': 1, - cursor: 'pointer' - }, - selected: { - fill: '#fa8564' - } - }, - focusOn: { - x: 0, - y: 0, - scale: 5, - animate: true - }, - }); - } // Poland - mapid = $('#de_mill_en-map'); - if (mapid.length) { - mapid.vectorMap({ - map: 'de_mill_en', - regionsSelectable: true, - backgroundColor: '#1fb5ac', - regionStyle: { - initial: { - fill: 'white', - stroke: 'none', - }, - hover: { - fill: '#fa8564', - 'fill-opacity': 1, - cursor: 'pointer' - }, - selected: { - fill: '#fa8564' - } - }, - focusOn: { - x: 0, - y: 0, - scale: 5, - animate: true - }, - }); - } // Germany - mapid = $('#fr_mill_en-map'); - if (mapid.length) { - mapid.vectorMap({ - map: 'fr_mill_en', - regionsSelectable: true, - backgroundColor: '#1fb5ac', - regionStyle: { - initial: { - fill: 'white', - stroke: 'none', - }, - hover: { - fill: '#fa8564', - 'fill-opacity': 1, - cursor: 'pointer' - }, - selected: { - fill: '#fa8564' - } - }, - focusOn: { - x: 0, - y: 0, - scale: 5, - animate: true - }, - }); - } // France - Departments - mapid = $('#za_mill_en-map'); - if (mapid.length) { - mapid.vectorMap({ - map: 'za_mill_en', - regionsSelectable: true, - backgroundColor: '#1fb5ac', - regionStyle: { - initial: { - fill: 'white', - stroke: 'none', - }, - hover: { - fill: '#fa8564', - 'fill-opacity': 1, - cursor: 'pointer' - }, - selected: { - fill: '#fa8564' - } - }, - focusOn: { - x: 0, - y: 0, - scale: 5, - animate: true - }, - }); - } // South Africa - mapid = $('#ch_mill_en-map'); - if (mapid.length) { - mapid.vectorMap({ - map: 'ch_mill_en', - regionsSelectable: true, - backgroundColor: '#1fb5ac', - regionStyle: { - initial: { - fill: 'white', - stroke: 'none', - }, - hover: { - fill: '#fa8564', - 'fill-opacity': 1, - cursor: 'pointer' - }, - selected: { - fill: '#fa8564' - } - }, - focusOn: { - x: 0, - y: 0, - scale: 5, - animate: true - }, - }); - } // Switzerland - mapid = $('#us-ny-newyork_mill_en-map'); - if (mapid.length) { - mapid.vectorMap({ - map: 'us-ny-newyork_mill_en', - regionsSelectable: true, - backgroundColor: '#1fb5ac', - regionStyle: { - initial: { - fill: 'white', - stroke: 'none', - }, - hover: { - fill: '#fa8564', - 'fill-opacity': 1, - cursor: 'pointer' - }, - selected: { - fill: '#fa8564' - } - }, - focusOn: { - x: 0, - y: 0, - scale: 5, - animate: true - }, - }); - } // New York City - mapid = $('#us-il-chicago_mill_en-map'); - if (mapid.length) { - mapid.vectorMap({ - map: 'us-il-chicago_mill_en', - regionsSelectable: true, - backgroundColor: '#1fb5ac', - regionStyle: { - initial: { - fill: 'white', - stroke: 'none', - }, - hover: { - fill: '#fa8564', - 'fill-opacity': 1, - cursor: 'pointer' - }, - selected: { - fill: '#fa8564' - } - }, - focusOn: { - x: 0, - y: 0, - scale: 5, - animate: true - }, - }); - } // Chicago - - } - - }; - - - /*-------------------------------- - DataTables - --------------------------------*/ - ULTRA_SETTINGS.dataTablesInit = function() { - - if ($.isFunction($.fn.dataTable)) { - - /*--- start ---*/ - - $("#example-1").dataTable({ - responsive: true, - aLengthMenu: [ - [10, 25, 50, 100, -1], - [10, 25, 50, 100, "All"] - ] - }); - - /*--- end ---*/ - - /*--- start ---*/ - - $('#example-4').dataTable(); - - /*--- end ---*/ - - - - /* Set the defaults for DataTables initialisation */ - $.extend(true, $.fn.dataTable.defaults, { - "sDom": "<'row'<'col-md-6'l><'col-md-6'f>r>t<'row'<'col-md-12'p i>>", - "sPaginationType": "bootstrap", - "oLanguage": { - "sLengthMenu": "_MENU_" - } - }); - - - /* Default class modification */ - $.extend($.fn.dataTableExt.oStdClasses, { - "sWrapper": "dataTables_wrapper form-inline" - }); - - - /* API method to get paging information */ - $.fn.dataTableExt.oApi.fnPagingInfo = function(oSettings) { - return { - "iStart": oSettings._iDisplayStart, - "iEnd": oSettings.fnDisplayEnd(), - "iLength": oSettings._iDisplayLength, - "iTotal": oSettings.fnRecordsTotal(), - "iFilteredTotal": oSettings.fnRecordsDisplay(), - "iPage": oSettings._iDisplayLength === -1 ? - 0 : Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength), - "iTotalPages": oSettings._iDisplayLength === -1 ? - 0 : Math.ceil(oSettings.fnRecordsDisplay() / oSettings._iDisplayLength) - }; - }; - - - /* Bootstrap style pagination control */ - $.extend($.fn.dataTableExt.oPagination, { - "bootstrap": { - "fnInit": function(oSettings, nPaging, fnDraw) { - var oLang = oSettings.oLanguage.oPaginate; - var fnClickHandler = function(e) { - e.preventDefault(); - if (oSettings.oApi._fnPageChange(oSettings, e.data.action)) { - fnDraw(oSettings); - } - }; - - $(nPaging).addClass('').append( - '
    ' + - '' + - '' + - '
' - ); - var els = $('a', nPaging); - $(els[0]).bind('click.DT', { - action: "previous" - }, fnClickHandler); - $(els[1]).bind('click.DT', { - action: "next" - }, fnClickHandler); - }, - - "fnUpdate": function(oSettings, fnDraw) { - var iListLength = 5; - var oPaging = oSettings.oInstance.fnPagingInfo(); - var an = oSettings.aanFeatures.p; - var i, ien, j, sClass, iStart, iEnd, iHalf = Math.floor(iListLength / 2); - - if (oPaging.iTotalPages < iListLength) { - iStart = 1; - iEnd = oPaging.iTotalPages; - } else if (oPaging.iPage <= iHalf) { - iStart = 1; - iEnd = iListLength; - } else if (oPaging.iPage >= (oPaging.iTotalPages - iHalf)) { - iStart = oPaging.iTotalPages - iListLength + 1; - iEnd = oPaging.iTotalPages; - } else { - iStart = oPaging.iPage - iHalf + 1; - iEnd = iStart + iListLength - 1; - } - - for (i = 0, ien = an.length; i < ien; i++) { - // Remove the middle elements - $('li:gt(0)', an[i]).filter(':not(:last)').remove(); - - // Add the new list items and their event handlers - for (j = iStart; j <= iEnd; j++) { - sClass = (j == oPaging.iPage + 1) ? 'class="active"' : ''; - $('
  • ' + j + '
  • ') - .insertBefore($('li:last', an[i])[0]) - .bind('click', function(e) { - e.preventDefault(); - oSettings._iDisplayStart = (parseInt($('a', this).text(), 10) - 1) * oPaging.iLength; - fnDraw(oSettings); - }); - } - - // Add / remove disabled classes from the static elements - if (oPaging.iPage === 0) { - $('li:first', an[i]).addClass('disabled'); - } else { - $('li:first', an[i]).removeClass('disabled'); - } - - if (oPaging.iPage === oPaging.iTotalPages - 1 || oPaging.iTotalPages === 0) { - $('li:last', an[i]).addClass('disabled'); - } else { - $('li:last', an[i]).removeClass('disabled'); - } - } - } - } - }); - - - /* - * TableTools Bootstrap compatibility - * Required TableTools 2.1+ - */ - - // Set the classes that TableTools uses to something suitable for Bootstrap - $.extend(true, $.fn.DataTable.TableTools.classes, { - "container": "DTTT ", - "buttons": { - "normal": "btn btn-white", - "disabled": "disabled" - }, - "collection": { - "container": "DTTT_dropdown dropdown-menu", - "buttons": { - "normal": "", - "disabled": "disabled" - } - }, - "print": { - "info": "DTTT_print_info modal" - }, - "select": { - "row": "active" - } - }); - - // Have the collection use a bootstrap compatible dropdown - $.extend(true, $.fn.DataTable.TableTools.DEFAULTS.oTags, { - "collection": { - "container": "ul", - "button": "li", - "liner": "a" - } - }); - - - /* Table initialisation */ - $(document).ready(function() { - var responsiveHelper = undefined; - var breakpointDefinition = { - tablet: 1024, - phone: 480 - }; - var tableElement = $('#example'); - - tableElement.dataTable({ - "sDom": "<'row'<'col-md-6'l T><'col-md-6'f>r>t<'row'<'col-md-12'p i>>", - "oTableTools": { - "aButtons": [{ - "sExtends": "collection", - "sButtonText": "", - "aButtons": ["csv", "xls", "pdf", "copy"] - }] - }, - "sPaginationType": "bootstrap", - "aoColumnDefs": [{ - 'bSortable': false, - 'aTargets': [0] - }], - "aaSorting": [ - [1, "asc"] - ], - "oLanguage": { - "sLengthMenu": "_MENU_ ", - "sInfo": "Showing _START_ to _END_ of _TOTAL_ entries" - }, - bAutoWidth: false, - fnPreDrawCallback: function() { - // Initialize the responsive datatables helper once. - if (!responsiveHelper) { - //responsiveHelper = new ResponsiveDatatablesHelper(tableElement, breakpointDefinition); - } - }, - fnRowCallback: function(nRow) { - //responsiveHelper.createExpandIcon(nRow); - }, - fnDrawCallback: function(oSettings) { - //responsiveHelper.respond(); - } - }); - - $('#example_wrapper .dataTables_filter input').addClass("input-medium "); // modify table search input - $('#example_wrapper .dataTables_length select').addClass("select2-wrapper col-md-12"); // modify table per page dropdown - - - - $('#example input').click(function() { - $(this).parent().parent().parent().toggleClass('row_selected'); - }); - - - /* - * Insert a 'details' column to the table - */ - var nCloneTh = document.createElement('th'); - var nCloneTd = document.createElement('td'); - nCloneTd.innerHTML = ''; - nCloneTd.className = "center"; - - $('#example2 thead tr').each(function() { - this.insertBefore(nCloneTh, this.childNodes[0]); - }); - - $('#example2 tbody tr').each(function() { - this.insertBefore(nCloneTd.cloneNode(true), this.childNodes[0]); - }); - - /* - * Initialse DataTables, with no sorting on the 'details' column - */ - var oTable = $('#example2').dataTable({ - "sDom": "<'row'<'col-md-6'l><'col-md-6'f>r>t<'row'<'col-md-12'p i>>", - "aaSorting": [], - "oLanguage": { - "sLengthMenu": "_MENU_ ", - "sInfo": "Showing _START_ to _END_ of _TOTAL_ entries" - }, - }); - - - $("div.toolbar").html('
    '); - - - $('#example2_wrapper .dataTables_filter input').addClass("input-medium "); - $('#example2_wrapper .dataTables_length select').addClass("select2-wrapper col-md-12"); - - /* Add event listener for opening and closing details - * Note that the indicator for showing which row is open is not controlled by DataTables, - * rather it is done here - */ - $('#example2 tbody td i').on('click', function() { - var nTr = $(this).parents('tr')[0]; - if (oTable.fnIsOpen(nTr)) { - /* This row is already open - close it */ - this.removeClass = "fa fa-plus-circle"; - this.addClass = "fa fa-minus-circle"; - oTable.fnClose(nTr); - } else { - /* Open this row */ - this.removeClass = "fa fa-minus-circle"; - this.addClass = "fa fa-plus-circle"; - oTable.fnOpen(nTr, fnFormatDetails(oTable, nTr), 'details'); - } - - - /* Formating function for row details */ - function fnFormatDetails(oTable, nTr) { - var aData = oTable.fnGetData(nTr); - var sOut = ''; - sOut += ''; - sOut += ''; - sOut += ''; - sOut += '
    Rendering engine:' + aData[1] + ' ' + aData[4] + '
    Link to source:Could provide a link here
    Extra info:And any further details here (images etc)
    '; - - return sOut; - } - - }); - - }); - - - - - - } - }; - - - - /*-------------------------------- - Pretty Photo - --------------------------------*/ - ULTRA_SETTINGS.loadPrettyPhoto = function() { - - if ($.isFunction($.fn.prettyPhoto)) { - //Pretty Photo - $("a[rel^='prettyPhoto']").prettyPhoto({ - social_tools: false - }); - } - }; - - - - - /*-------------------------------- - Gallery - --------------------------------*/ - ULTRA_SETTINGS.isotopeGallery = function() { - if ($.isFunction($.fn.isotope)) { - - var $portfolio_selectors = $('.portfolio-filter >li>a'); - var $portfolio = $('.portfolio-items'); - $portfolio.isotope({ - itemSelector: '.portfolio-item', - layoutMode: 'sloppyMasonry' - }); - - $portfolio_selectors.on('click', function() { - $portfolio_selectors.removeClass('active'); - $(this).addClass('active'); - var selector = $(this).attr('data-filter'); - $portfolio.isotope({ - filter: selector - }); - return false; - }); - - - } - }; - - - /*-------------------------------- - Tocify - --------------------------------*/ - ULTRA_SETTINGS.tocifyScrollMenu = function() { - if ($.isFunction($.fn.tocify)) { - var toc = $("#toc").tocify({ - selectors: "h2,h3,h4,h5", - context: ".tocify-content", - extendPage: false - }).data("toc-tocify"); - } - }; - - - - /*-------------------------------- - Full Calendar - --------------------------------*/ - ULTRA_SETTINGS.uiCalendar = function() { - - - if ($.isFunction($.fn.fullCalendar)) { - - /* initialize the external events - -----------------------------------------------------------------*/ - - $('#external-events .fc-event').each(function() { - - // create an Event Object (http://arshaw.com/fullcalendar/docs/event_data/Event_Object/) - // it doesn't need to have a start or end - var eventObject = { - title: $.trim($(this).text()) // use the element's text as the event title - }; - - // store the Event Object in the DOM element so we can get to it later - $(this).data('eventObject', eventObject); - - // make the event draggable using jQuery UI - $(this).draggable({ - zIndex: 999, - revert: true, // will cause the event to go back to its - revertDuration: 0 // original position after the drag - }); - - }); - - - /* initialize the calendar - -----------------------------------------------------------------*/ - - var date = new Date(); - var d = date.getDate(); - var m = date.getMonth(); - var y = date.getFullYear(); - - $('#calendar').fullCalendar({ - header: { - left: 'prev,next today', - center: 'title', - right: 'month,basicWeek,basicDay' - }, - editable: true, - eventLimit: true, // allow "more" link when too many events - droppable: true, // this allows things to be dropped onto the calendar !!! - drop: function(date, allDay) { // this function is called when something is dropped - - // retrieve the dropped element's stored Event Object - var originalEventObject = $(this).data('eventObject'); - - // we need to copy it, so that multiple events don't have a reference to the same object - var copiedEventObject = $.extend({}, originalEventObject); - - // assign it the date that was reported - copiedEventObject.start = date; - copiedEventObject.allDay = allDay; - - // render the event on the calendar - // the last `true` argument determines if the event "sticks" (http://arshaw.com/fullcalendar/docs/event_rendering/renderEvent/) - $('#calendar').fullCalendar('renderEvent', copiedEventObject, true); - - // is the "remove after drop" checkbox checked? - if ($('#drop-remove').is(':checked')) { - // if so, remove the element from the "Draggable Events" list - $(this).remove(); - } - - }, - events: [{ - title: 'All Day Event', - start: new Date(y, m, 1) - }, { - title: 'Long Event', - start: new Date(y, m, d - 5), - end: new Date(y, m, d - 2) - }, { - id: 999, - title: 'Repeating Event', - start: new Date(y, m, d - 3, 16, 0), - allDay: false - }, { - id: 999, - title: 'Repeating Event', - start: new Date(y, m, d + 4, 16, 0), - allDay: false - }, { - title: 'Meeting', - start: new Date(y, m, d, 10, 30), - allDay: false - }, { - title: 'Lunch', - start: new Date(y, m, d, 12, 0), - end: new Date(y, m, d, 14, 0), - allDay: false - }, { - title: 'Birthday Party', - start: new Date(y, m, d + 1, 19, 0), - end: new Date(y, m, d + 1, 22, 30), - allDay: false - }, { - title: 'Click for Google', - start: new Date(y, m, 28), - end: new Date(y, m, 29), - url: 'http://google.com/' - }] - }); - - - - - - /*Add new event*/ - // Form to add new event - - $("#add_event_form").on('submit', function(ev) { - ev.preventDefault(); - - var $event = $(this).find('.new-event-form'), - event_name = $event.val(); - - if (event_name.length >= 3) { - - var newid = "new" + "" + Math.random().toString(36).substring(7); - // Create Event Entry - $("#external-events").append( - '
    ' + event_name + '
    ' - ); - - - var eventObject = { - title: $.trim($("#" + newid).text()) // use the element's text as the event title - }; - - // store the Event Object in the DOM element so we can get to it later - $("#" + newid).data('eventObject', eventObject); - - // Reset draggable - $("#" + newid).draggable({ - revert: true, - revertDuration: 0, - zIndex: 999 - }); - - // Reset input - $event.val('').focus(); - } else { - $event.focus(); - } - }); - - - - } - - }; - - - - /*-------------------------------- - Sortable (Nestable) List - --------------------------------*/ - ULTRA_SETTINGS.nestableList = function() { - - $("#nestableList-1").on('stop.uk.nestable', function(ev) { - var serialized = $(this).data('nestable').serialize(), - str = ''; - - str = nestableIterate(serialized, 0); - - $("#nestableList-1-ev").val(str); - }); - - - function nestableIterate(items, depth) { - var str = ''; - - if (!depth) - depth = 0; - - //console.log(items); - - jQuery.each(items, function(i, obj) { - str += '[ID: ' + obj.itemId + ']\t' + nestableRepeat('—', depth + 1) + ' ' + obj.item; - str += '\n'; - - if (obj.children) { - str += nestableIterate(obj.children, depth + 1); - } - }); - - return str; - } - - function nestableRepeat(s, n) { - var a = []; - while (a.length < n) { - a.push(s); - } - return a.join(''); - } - }; - - - - - - - - - - /*-------------------------------- - Tooltips & Popovers - --------------------------------*/ - ULTRA_SETTINGS.tooltipsPopovers = function() { - - $('[rel="tooltip"]').each(function() { - var animate = $(this).attr("data-animate"); - var colorclass = $(this).attr("data-color-class"); - $(this).tooltip({ - template: '
    ' - }); - }); - - $('[rel="popover"]').each(function() { - var animate = $(this).attr("data-animate"); - var colorclass = $(this).attr("data-color-class"); - $(this).popover({ - template: '

    ' - }); - }); - - }; - - - - - - /*-------------------------------- - iCheck - --------------------------------*/ - ULTRA_SETTINGS.iCheck = function() { - - - - if ($.isFunction($.fn.iCheck)) { - - - $('input[type="checkbox"].iCheck').iCheck({ - checkboxClass: 'icheckbox_minimal', - radioClass: 'iradio_minimal', - increaseArea: '20%' - }); - - - var x; - var colors = ["-green", "-red", "-yellow", "-blue", "-aero", "-orange", "-grey", "-pink", "-purple","-white"]; - - for (x = 0; x < colors.length; x++) { - - if (x == 0) { - $('input.icheck-minimal').iCheck({ - checkboxClass: 'icheckbox_minimal' + colors[x], - radioClass: 'iradio_minimal' + colors[x], - increaseArea: '20%' - }); - - $('input.skin-square').iCheck({ - checkboxClass: 'icheckbox_square' + colors[x], - radioClass: 'iradio_square' + colors[x], - increaseArea: '20%' - }); - - $('input.skin-flat').iCheck({ - checkboxClass: 'icheckbox_flat' + colors[x], - radioClass: 'iradio_flat' + colors[x], - }); - - - $('input.skin-line').each(function() { - var self = $(this), - label = self.next(), - label_text = label.text(); - - label.remove(); - self.iCheck({ - checkboxClass: 'icheckbox_line' + colors[x], - radioClass: 'iradio_line' + colors[x], - insert: '
    ' + label_text - }); - }); - - } // end x = 0 - - $('input.icheck-minimal' + colors[x]).iCheck({ - checkboxClass: 'icheckbox_minimal' + colors[x], - radioClass: 'iradio_minimal' + colors[x], - increaseArea: '20%' - }); - - - $('input.skin-square' + colors[x]).iCheck({ - checkboxClass: 'icheckbox_square' + colors[x], - radioClass: 'iradio_square' + colors[x], - increaseArea: '20%' - }); - - - $('input.skin-flat' + colors[x]).iCheck({ - checkboxClass: 'icheckbox_flat' + colors[x], - radioClass: 'iradio_flat' + colors[x], - }); - - - $('input.skin-line' + colors[x]).each(function() { - var self = $(this), - label = self.next(), - label_text = label.text(); - - label.remove(); - self.iCheck({ - checkboxClass: 'icheckbox_line' + colors[x], - radioClass: 'iradio_line' + colors[x], - insert: '
    ' + label_text - }); - }); - - } // end for loop - - - } - }; - - - - - /*-------------------------------- - Form Editors - --------------------------------*/ - ULTRA_SETTINGS.formEditors = function() { - - if ($.isFunction($.fn.wysihtml5)) { - $('.bootstrap-wysihtml5-textarea').wysihtml5({ - toolbar: { - "font-styles": true, //Font styling, e.g. h1, h2, etc. Default true - "emphasis": true, //Italics, bold, etc. Default true - "lists": true, //(Un)ordered lists, e.g. Bullets, Numbers. Default true - "html": true, //Button which allows you to edit the generated HTML. Default false - "link": true, //Button to insert a link. Default true - "image": true, //Button to insert an image. Default true, - "color": true, //Button to change color of font - "blockquote": true, //Blockquote - "size": "none" //default: none, other options are xs, sm, lg - } - }); - - - $('.mail-compose-editor').wysihtml5({ - toolbar: { - "font-styles": true, //Font styling, e.g. h1, h2, etc. Default true - "emphasis": true, //Italics, bold, etc. Default true - "lists": false, //(Un)ordered lists, e.g. Bullets, Numbers. Default true - "html": true, //Button which allows you to edit the generated HTML. Default false - "link": true, //Button to insert a link. Default true - "image": true, //Button to insert an image. Default true, - "color": true, //Button to change color of font - "blockquote": false, //Blockquote - "size": "none" //default: none, other options are xs, sm, lg - } - }); - - } - - if ($.isFunction($.fn.CKEDITOR)) { - // This code is generally not necessary, but it is here to demonstrate - // how to customize specific editor instances on the fly. This fits well - // this demo because we have editable elements (like headers) that - // require less features. - - // The "instanceCreated" event is fired for every editor instance created. - CKEDITOR.on('instanceCreated', function(event) { - var editor = event.editor, - element = editor.element; - - // Customize editors for headers and tag list. - // These editors don't need features like smileys, templates, iframes etc. - if (element.is('h1', 'h2', 'h3') || element.getAttribute('id') == 'taglist') { - // Customize the editor configurations on "configLoaded" event, - // which is fired after the configuration file loading and - // execution. This makes it possible to change the - // configurations before the editor initialization takes place. - editor.on('configLoaded', function() { - - // Remove unnecessary plugins to make the editor simpler. - editor.config.removePlugins = 'colorbutton,find,flash,font,' + - 'forms,iframe,image,newpage,removeformat,' + - 'smiley,specialchar,stylescombo,templates'; - - // Rearrange the layout of the toolbar. - editor.config.toolbarGroups = [{ - name: 'editing', - groups: ['basicstyles', 'links'] - }, { - name: 'undo' - }, { - name: 'clipboard', - groups: ['selection', 'clipboard'] - }, { - name: 'about' - }]; - }); - } - }); - } - }; - - - /*-------------------------------- - Custom Dropzone - --------------------------------*/ - ULTRA_SETTINGS.customDropZone = function() { - - - - if ($.isFunction($.fn.dropzone)) { - - var i = 1, - $custom_droplist = $("#custom-droptable"), - example_dropzone = $("#customDZ").dropzone({ - url: 'data/upload-file.php', - - // Events - addedfile: function(file) { - if (i == 1) { - $custom_droplist.find('tbody').html(''); - } - - var size = parseInt(file.size / 1024, 10); - size = size < 1024 ? (size + " KB") : (parseInt(size / 1024, 10) + " MB"); - - var $el = $('\ - ' + (i++) + '\ - ' + file.name + '\ -
    \ - ' + size + '\ - '); - - $custom_droplist.find('tbody').append($el); - file.fileEntryTd = $el; - file.progressBar = $el.find('.progress-bar'); - }, - - uploadprogress: function(file, progress, bytesSent) { - file.progressBar.width(progress + '%'); - $('.custom-dropzone .drop-table').perfectScrollbar({ - suppressScrollX: true - }); - }, - - success: function(file) { - file.progressBar.removeClass('progress-bar-warning').addClass('progress-bar-success'); - }, - - error: function(file) { - file.progressBar.removeClass('progress-bar-warning').addClass('progress-bar-red'); - } - }); - - } - - }; - - - /*-------------------------------- - Other Form component Scripts - --------------------------------*/ - ULTRA_SETTINGS.otherScripts = function() { - - - - /*--------------------------------*/ - - - if ($.isFunction($.fn.autosize)) { - $(".autogrow").autosize(); - } - - /*--------------------------------*/ - - - - - // Input Mask - if ($.isFunction($.fn.inputmask)) { - $("[data-mask]").each(function(i, el) { - var $this = $(el), - mask = $this.data('mask').toString(), - opts = { - numericInput: getValue($this, 'numeric', false), - radixPoint: getValue($this, 'radixPoint', ''), - rightAlign: getValue($this, 'numericAlign', 'left') == 'right' - }, - placeholder = getValue($this, 'placeholder', ''), - is_regex = getValue($this, 'isRegex', ''); - - if (placeholder.length) { - opts[placeholder] = placeholder; - } - - - if (mask.toLowerCase() == "phone") { - mask = "(999) 999-9999"; - } - - if (mask.toLowerCase() == "email") { - mask = 'Regex'; - opts.regex = "[a-zA-Z0-9._%-]+@[a-zA-Z0-9-]+\\.[a-zA-Z]{2,4}"; - } - - if (mask.toLowerCase() == "fdecimal") { - mask = 'decimal'; - $.extend(opts, { - autoGroup: true, - groupSize: 3, - radixPoint: getValue($this, 'rad', '.'), - groupSeparator: getValue($this, 'dec', ',') - }); - } - - - if (mask.toLowerCase() == "currency" || mask.toLowerCase() == "rcurrency") { - - var sign = getValue($this, 'sign', '$');; - - mask = "999,999,999.99"; - if (mask.toLowerCase() == 'rcurrency') { - mask += ' ' + sign; - } else { - mask = sign + ' ' + mask; - } - - opts.numericInput = true; - opts.rightAlignNumerics = false; - opts.radixPoint = '.'; - - } - - if (is_regex) { - opts.regex = mask; - mask = 'Regex'; - } - - $this.inputmask(mask, opts); - }); - } - - - /*---------------------------------*/ - - // autoNumeric - if ($.isFunction($.fn.autoNumeric)) { - $('.autoNumeric').autoNumeric('init'); - } - - /*---------------------------------*/ - - // Slider - if ($.isFunction($.fn.slider)) { - $(".slider").each(function(i, el) { - var $this = $(el), - $label_1 = $(''), - $label_2 = $label_1.clone(), - - orientation = getValue($this, 'vertical', 0) != 0 ? 'vertical' : 'horizontal', - - prefix = getValue($this, 'prefix', ''), - postfix = getValue($this, 'postfix', ''), - - fill = getValue($this, 'fill', ''), - $fill = $(fill), - - step = getValue($this, 'step', 1), - value = getValue($this, 'value', 5), - min = getValue($this, 'min', 0), - max = getValue($this, 'max', 100), - min_val = getValue($this, 'min-val', 10), - max_val = getValue($this, 'max-val', 90), - - is_range = $this.is('[data-min-val]') || $this.is('[data-max-val]'), - - reps = 0; - - - // Range Slider Options - if (is_range) { - $this.slider({ - range: true, - orientation: orientation, - min: min, - max: max, - values: [min_val, max_val], - step: step, - slide: function(e, ui) { - var min_val = (prefix ? prefix : '') + ui.values[0] + (postfix ? postfix : ''), - max_val = (prefix ? prefix : '') + ui.values[1] + (postfix ? postfix : ''); - - $label_1.html(min_val); - $label_2.html(max_val); - - if (fill) - $fill.val(min_val + ',' + max_val); - - reps++; - }, - change: function(ev, ui) { - if (reps == 1) { - var min_val = (prefix ? prefix : '') + ui.values[0] + (postfix ? postfix : ''), - max_val = (prefix ? prefix : '') + ui.values[1] + (postfix ? postfix : ''); - - $label_1.html(min_val); - $label_2.html(max_val); - - if (fill) - $fill.val(min_val + ',' + max_val); - } - - reps = 0; - } - }); - - var $handles = $this.find('.ui-slider-handle'); - - $label_1.html((prefix ? prefix : '') + min_val + (postfix ? postfix : '')); - $handles.first().append($label_1); - - $label_2.html((prefix ? prefix : '') + max_val + (postfix ? postfix : '')); - $handles.last().append($label_2); - } - // Normal Slider - else { - - $this.slider({ - range: getValue($this, 'basic', 0) ? false : "min", - orientation: orientation, - min: min, - max: max, - value: value, - step: step, - slide: function(ev, ui) { - var val = (prefix ? prefix : '') + ui.value + (postfix ? postfix : ''); - - $label_1.html(val); - - - if (fill) - $fill.val(val); - - reps++; - }, - change: function(ev, ui) { - if (reps == 1) { - var val = (prefix ? prefix : '') + ui.value + (postfix ? postfix : ''); - - $label_1.html(val); - - if (fill) - $fill.val(val); - } - - reps = 0; - } - }); - - var $handles = $this.find('.ui-slider-handle'); - //$fill = $('
    '); - - $label_1.html((prefix ? prefix : '') + value + (postfix ? postfix : '')); - $handles.html($label_1); - - //$handles.parent().prepend( $fill ); - - //$fill.width($handles.get(0).style.left); - } - - }) - } - - - - /*------------- Color Slider widget---------------*/ - - function hexFromRGB(r, g, b) { - var hex = [ - r.toString(16), - g.toString(16), - b.toString(16) - ]; - $.each(hex, function(nr, val) { - if (val.length === 1) { - hex[nr] = "0" + val; - } - }); - return hex.join("").toUpperCase(); - } - - function refreshSwatch() { - var red = $("#slider-red").slider("value"), - green = $("#slider-green").slider("value"), - blue = $("#slider-blue").slider("value"), - hex = hexFromRGB(red, green, blue); - $("#slider-swatch").css("background-color", "#" + hex); - } - - - if ($.isFunction($.fn.slider)) { - - $(function() { - $("#slider-red, #slider-green, #slider-blue").slider({ - orientation: "horizontal", - range: "min", - max: 255, - value: 127, - slide: refreshSwatch, - change: refreshSwatch - }); - $("#slider-red").slider("value", 235); - $("#slider-green").slider("value", 70); - $("#slider-blue").slider("value", 60); - }); - } - - - - /*-------------------------------------*/ - - /*--------------------------------*/ - - - // Spinner - if ($.isFunction($.fn.spinner)) { - - $( "#spinner" ).spinner(); - - $( "#spinner2" ).spinner({ - min: 5, - max: 2500, - step: 25, - start: 1000, - numberFormat: "C" - }); - - - $( "#spinner3" ).spinner({ - spin: function( event, ui ) { - if ( ui.value > 10 ) { - $( this ).spinner( "value", -10 ); - return false; - } else if ( ui.value < -10 ) { - $( this ).spinner( "value", 10 ); - return false; - } - } - }); -} - /*------------------------------------*/ - - // tagsinput - if ($.isFunction($.fn.tagsinput)) { - - // categorize tags input - var i = -1, - colors = ['primary', 'info', 'warning', 'success']; - - colors = shuffleArray(colors); - - $("#tagsinput-2").tagsinput({ - tagClass: function() { - i++; - return "label label-" + colors[i % colors.length]; - } - }); - - - $(".mail_compose_to").tagsinput({ - tagClass: function() { - i++; - return "label label-" + colors[i % colors.length]; - } - }); - - - } - - // Just for demo purpose - function shuffleArray(array) { - for (var i = array.length - 1; i > 0; i--) { - var j = Math.floor(Math.random() * (i + 1)); - var temp = array[i]; - array[i] = array[j]; - array[j] = temp; - } - return array; - } - - /*----------------------------*/ - - - // datepicker - if ($.isFunction($.fn.datepicker)) { - $(".datepicker").each(function(i, e) { - var $this = $(e), - options = { - minViewMode: getValue($this, 'minViewMode', 0), - format: getValue($this, 'format', 'mm/dd/yyyy'), - startDate: getValue($this, 'startDate', ''), - endDate: getValue($this, 'endDate', ''), - daysOfWeekDisabled: getValue($this, 'disabledDays', ''), - startView: getValue($this, 'startView', 0) - }, - $nxt = $this.next(), - $prv = $this.prev(); - - - $this.datepicker(options); - - if ($nxt.is('.input-group-addon') && $nxt.has('a')) { - $nxt.on('click', function(ev) { - ev.preventDefault(); - $this.datepicker('show'); - }); - } - - if ($prv.is('.input-group-addon') && $prv.has('a')) { - $prv.on('click', function(ev) { - ev.preventDefault(); - - $this.datepicker('show'); - }); - } - }); - } - - - - /*-------------------------------------------*/ - - - - // Date Range Picker - if ($.isFunction($.fn.daterangepicker)) { - $(".daterange").each(function(i, e) { - // Change the range as you desire - var ranges = { - 'Today': [moment(), moment()], - 'Yesterday': [moment().subtract('days', 1), moment().subtract('days', 1)], - 'Last 7 Days': [moment().subtract('days', 6), moment()], - 'Last 30 Days': [moment().subtract('days', 29), moment()], - 'This Month': [moment().startOf('month'), moment().endOf('month')], - 'Last Month': [moment().subtract('month', 1).startOf('month'), moment().subtract('month', 1).endOf('month')] - }; - - var $this = $(e), - options = { - format: getValue($this, 'format', 'MM/DD/YYYY'), - timePicker: getValue($this, 'timePicker', false), - timePickerIncrement: getValue($this, 'timePickerIncrement', false), - separator: getValue($this, 'separator', ' - '), - }, - min_date = getValue($this, 'minDate', ''), - max_date = getValue($this, 'maxDate', ''), - start_date = getValue($this, 'startDate', ''), - end_date = getValue($this, 'endDate', ''); - - if ($this.hasClass('add-date-ranges')) { - options['ranges'] = ranges; - } - - if (min_date.length) { - options['minDate'] = min_date; - } - - if (max_date.length) { - options['maxDate'] = max_date; - } - - if (start_date.length) { - options['startDate'] = start_date; - } - - if (end_date.length) { - options['endDate'] = end_date; - } - - - $this.daterangepicker(options, function(start, end) { - var drp = $this.data('daterangepicker'); - - if ($this.hasClass('daterange-text')) { - $this.find('span').html(start.format(drp.format) + drp.separator + end.format(drp.format)); - } - }); - - if (typeof options['ranges'] == 'object') { - $this.data('daterangepicker').container.removeClass('show-calendar'); - } - }); - } - - - - - /*-------------------------------------*/ - - - // Timepicker - if ($.isFunction($.fn.timepicker)) { - $(".timepicker").each(function(i, e) { - var $this = $(e), - options = { - template: getValue($this, 'template', false), - showSeconds: getValue($this, 'showSeconds', false), - defaultTime: getValue($this, 'defaultTime', 'current'), - showMeridian: getValue($this, 'showMeridian', true), - minuteStep: getValue($this, 'minuteStep', 15), - secondStep: getValue($this, 'secondStep', 15) - }, - $nxt = $this.next(), - $prv = $this.prev(); - - $this.timepicker(options); - - if ($nxt.is('.input-group-addon') && $nxt.has('a')) { - $nxt.on('click', function(ev) { - ev.preventDefault(); - - $this.timepicker('showWidget'); - }); - } - - if ($prv.is('.input-group-addon') && $prv.has('a')) { - $prv.on('click', function(ev) { - ev.preventDefault(); - - $this.timepicker('showWidget'); - }); - } - }); - } - - - - /*-------------------------------------*/ - - - // DateTimepicker - if ($.isFunction($.fn.datetimepicker)) { - - $('.form_datetime').datetimepicker({ - //language: 'fr', - format: "yyyy-mm-dd hh:ii", - weekStart: 1, - todayBtn: 1, - autoclose: 1, - todayHighlight: 1, - startView: 2, - forceParse: 0, - showMeridian: 0 - }); - - - $('.form_datetime_meridian').datetimepicker({ - //language: 'fr', - format: "dd MM yyyy - hh:ii", - weekStart: 1, - todayBtn: 1, - autoclose: 1, - todayHighlight: 1, - startView: 2, - forceParse: 0, - showMeridian: 1 - }); - - - $('.form_datetime_lang').datetimepicker({ - language: 'fr', - format: "yyyy-mm-dd hh:ii", - weekStart: 1, - todayBtn: 1, - autoclose: 1, - todayHighlight: 1, - startView: 2, - forceParse: 0, - showMeridian: 0 - }); - - - /* $('.form_date').datetimepicker({ - weekStart: 1, - todayBtn: 1, - autoclose: 1, - todayHighlight: 1, - startView: 2, - minView: 2, - forceParse: 0 - }); - $('.form_time').datetimepicker({ - //language: 'fr', - weekStart: 1, - todayBtn: 1, - autoclose: 1, - todayHighlight: 1, - startView: 1, - minView: 0, - maxView: 1, - forceParse: 0 - });*/ - - } - - /*-------------------------------------*/ - - - - - - // Colorpicker - if ($.isFunction($.fn.colorpicker)) { - $(".colorpicker").each(function(i, e) { - var $this = $(e), - options = {}, - $nxt = $this.next(), - $prv = $this.prev(), - $view = $this.siblings('.input-group-addon').find('.sel-color'); - - $this.colorpicker(options); - - if ($nxt.is('.input-group-addon') && $nxt.has('a')) { - $nxt.on('click', function(ev) { - ev.preventDefault(); - - $this.colorpicker('show'); - }); - } - - if ($prv.is('.input-group-addon') && $prv.has('a')) { - $prv.on('click', function(ev) { - ev.preventDefault(); - - $this.colorpicker('show'); - }); - } - - if ($view.length) { - $this.on('changeColor', function(ev) { - - $view.css('background-color', ev.color.toHex()); - }); - - if ($this.val().length) { - $view.css('background-color', $this.val()); - } - } - }); - } - - - /*--------------------------------------*/ - - - // select2 - if ($.isFunction($.fn.select2)) { - - $("#s2example-1").select2({ - placeholder: 'Select your country...', - allowClear: true - }).on('select2-open', function() { - // Adding Custom Scrollbar - $(this).data('select2').results.addClass('overflow-hidden').perfectScrollbar(); - }); - - - $("#s2example-2").select2({ - placeholder: 'Choose your favorite US Countries', - allowClear: true - }).on('select2-open', function() { - // Adding Custom Scrollbar - $(this).data('select2').results.addClass('overflow-hidden').perfectScrollbar(); - }); - - - $("#s2example-4").select2({ - minimumInputLength: 1, - placeholder: 'Search', - ajax: { - url: "data/select2-remote-data.php", - dataType: 'json', - quietMillis: 100, - data: function(term, page) { - return { - limit: -1, - q: term - }; - }, - results: function(data, page) { - return { - results: data - } - } - }, - formatResult: function(student) { - return "
    " + student.name + "
    "; - }, - formatSelection: function(student) { - return student.name; - } - - }); - } - /*------------------------------------*/ - - - - - //multiselect start - - if ($.isFunction($.fn.multiSelect)) { - - $('#my_multi_select1').multiSelect(); - $('#my_multi_select2').multiSelect({ - selectableOptgroup: true - }); - - $('#my_multi_select3').multiSelect({ - selectableHeader: "", - selectionHeader: "", - afterInit: function(ms) { - var that = this, - $selectableSearch = that.$selectableUl.prev(), - $selectionSearch = that.$selectionUl.prev(), - selectableSearchString = '#' + that.$container.attr('id') + ' .ms-elem-selectable:not(.ms-selected)', - selectionSearchString = '#' + that.$container.attr('id') + ' .ms-elem-selection.ms-selected'; - - that.qs1 = $selectableSearch.quicksearch(selectableSearchString) - .on('keydown', function(e) { - if (e.which === 40) { - that.$selectableUl.focus(); - return false; - } - }); - - that.qs2 = $selectionSearch.quicksearch(selectionSearchString) - .on('keydown', function(e) { - if (e.which == 40) { - that.$selectionUl.focus(); - return false; - } - }); - }, - afterSelect: function() { - this.qs1.cache(); - this.qs2.cache(); - }, - afterDeselect: function() { - this.qs1.cache(); - this.qs2.cache(); - } - }); - - } - //multiselect end - - - - - - - - - - /*---------------------------------------*/ - - - if ($.isFunction($.fn.typeahead)) { - - // basic typeahead - - var substringMatcher = function(strs) { - return function findMatches(q, cb) { - var matches, substrRegex; - - // an array that will be populated with substring matches - matches = []; - - // regex used to determine if a string contains the substring `q` - substrRegex = new RegExp(q, 'i'); - - // iterate through the pool of strings and for any string that - // contains the substring `q`, add it to the `matches` array - $.each(strs, function(i, str) { - if (substrRegex.test(str)) { - // the typeahead jQuery plugin expects suggestions to a - // JavaScript object, refer to typeahead docs for more info - matches.push({ - value: str - }); - } - }); - - cb(matches); - }; - }; - - var states = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', - 'Colorado', 'Connecticut', 'Delaware', 'Florida', 'Georgia', 'Hawaii', - 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana', - 'Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota', - 'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire', - 'New Jersey', 'New Mexico', 'New York', 'North Carolina', 'North Dakota', - 'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode Island', - 'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont', - 'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming' - ]; - - $('#typeahead-1').typeahead({ - hint: true, - highlight: true, - minLength: 1 - }, { - name: 'states', - displayKey: 'value', - source: substringMatcher(states) - }); - - - - // prefetch typeahead - - var names = new Bloodhound({ - datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'), - queryTokenizer: Bloodhound.tokenizers.whitespace, - limit: 10, - prefetch: { - url: 'data/names.json', - filter: function(list) { - return $.map(list, function(name) { - return { - name: name - }; - }); - } - } - }); - - names.initialize(); - - $('#typeahead-2').typeahead(null, { - name: 'names', - displayKey: 'name', - source: names.ttAdapter() - }); - - - // remote data - - - var name_randomizer = new Bloodhound({ - datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'), - queryTokenizer: Bloodhound.tokenizers.whitespace, - // You can also prefetch suggestions - // prefetch: 'data/typeahead-generate.php', - remote: 'data/typeahead-generate.php?q=%QUERY' - }); - - name_randomizer.initialize(); - - $('#typeahead-3').typeahead({ - hint: true, - highlight: true - }, { - name: 'string-randomizer', - displayKey: 'value', - source: name_randomizer.ttAdapter() - }); - - - // templating - - var oscar_movies = new Bloodhound({ - datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'), - queryTokenizer: Bloodhound.tokenizers.whitespace, - remote: 'data/typeahead-hp-movies.php?q=%QUERY' - }); - - oscar_movies.initialize(); - - $('#typeahead-4').typeahead(null, { - name: 'oscar-movies', - displayKey: 'value', - source: oscar_movies.ttAdapter(), - templates: { - empty: [ - '
    ', - 'We cannot find this movie title', - '
    ' - ].join('\n'), - suggestion: Handlebars.compile('
    {{value}} — {{year}}
    ') - } - }) - .bind('typeahead:opened', function() { - $(this).data('ttTypeahead').dropdown.$menu.addClass('overflow-hidden').perfectScrollbar(); - }) - .on('keyup', function() { - $(this).data('ttTypeahead').dropdown.$menu.perfectScrollbar('update'); - }); - - } - /*------------------------------------*/ - - - - /*------------------------------------------*/ - - }; - - - - /*-------------------------------- - Widgets - --------------------------------*/ - ULTRA_SETTINGS.ultraWidgets = function() { - - /*notification widget*/ - var notif_widget = $(".notification-widget").height(); - $('.notification-widget').height(notif_widget).perfectScrollbar({ - suppressScrollX: true - }); - - }; - - - - /*-------------------------------- - weather widget - --------------------------------*/ - ULTRA_SETTINGS.ultraWidgetWeather = function() { - - /*notification widget*/ - /*var wid = $(".wid-weather"); - var notif_widget = $(".notification-widget").height(); - $('.notification-widget').height(notif_widget).perfectScrollbar({suppressScrollX: true}); - - $('.wid-weather').each( function () { - var days = $(this).find(".weekdays"); - var today = $(this).find(".today"); - - var height = days.height(); - if(days.height() < today.height()){ - height = today.height(); - } - - days.height(height); - today.height(height); - });*/ - - - $('.wid-weather .weekdays ul').perfectScrollbar({ - suppressScrollX: true - }); - - - }; - - - - - - /*-------------------------------- - To Do Task Widget - --------------------------------*/ - ULTRA_SETTINGS.ultraToDoWidget = function() { - - /*todo task widget*/ - $(".icheck-minimal-white.todo-task").on('ifChecked', function(event) { - $(this).parent().parent().addClass("checked"); - }); - $(".icheck-minimal-white.todo-task").on('ifUnchecked', function(event) { - $(this).parent().parent().removeClass("checked"); - }); - - $(".wid-all-tasks ul").perfectScrollbar({ - suppressScrollX: true - }); - - }; - - - - /*-------------------------------- - To Do Add Task Widget - --------------------------------*/ - ULTRA_SETTINGS.ultraToDoAddTaskWidget = function() { - - $(".wid-add-task input").on('keypress', function(e) { - if (e.keyCode == 13) { - var i = Math.random().toString(36).substring(7); - var msg = $(this).val(); - var msg = '
  • '; - $(this).parent().parent().find(".wid-all-tasks ul").append(msg); - $(this).val(""); - $(this).focus(); - ULTRA_SETTINGS.iCheck(); - ULTRA_SETTINGS.ultraToDoWidget(); - $(this).parent().parent().find(".wid-all-tasks ul").perfectScrollbar('update'); - } - }); - - }; - - - - - - - - /*-------------------------------- - Vector maps - --------------------------------*/ - ULTRA_SETTINGS.dbjvectorMap = function() { - - if ($.isFunction($.fn.vectorMap)) { - //@code_start - $(function() { - $('#db-world-map-markers').vectorMap({ - map: 'world_mill_en', - scaleColors: ['#1fb5ac', '#1fb5ac'], - normalizeFunction: 'polynomial', - hoverOpacity: 0.7, - hoverColor: false, - regionsSelectable: true, - markersSelectable: true, - markersSelectableOne: true, - updateSize: true, - onRegionOver: function(event, code) { - //console.log('region-over', code); - }, - onRegionOut: function(event, code) { - //console.log('region-out', code); - }, - onRegionClick: function(event, code) { - //console.log('region-click', code); - }, - onRegionSelected: function(event, code, isSelected, selectedRegions) { - //console.log('region-select', code, isSelected, selectedRegions); - if (window.localStorage) { - window.localStorage.setItem( - 'jvectormap-selected-regions', - JSON.stringify(selectedRegions) - ); - } - }, - - panOnDrag: true, - - focusOn: { - x: 0.5, - y: 0.5, - scale: 1.2, - animate: true - }, - - - regionStyle: { - initial: { - fill: '#aaaaaa', - 'fill-opacity': 1, - stroke: 'false', - 'stroke-width': 0, - 'stroke-opacity': 1 - }, - hover: { - fill: '#1fb5ac', - 'fill-opacity': 1, - cursor: 'pointer' - }, - selected: { - fill: '#1fb5ac' - }, - selectedHover: {} - }, - - - - markerStyle: { - initial: { - fill: '#fa8564', - stroke: '#ffffff', - r: 5 - }, - hover: { - stroke: '#FDB45C', - "stroke-width": 2, - cursor: 'pointer' - }, - selected: { - fill: '#FDB45C', - "stroke-width": 0, - }, - }, - backgroundColor: '#ffffff', - markers: [{ - latLng: [41.90, 12.45], - name: 'Vatican City' - }, { - latLng: [43.73, 7.41], - name: 'Monaco' - }, { - latLng: [-0.52, 166.93], - name: 'Nauru' - }, { - latLng: [-8.51, 179.21], - name: 'Tuvalu' - }, { - latLng: [43.93, 12.46], - name: 'San Marino' - }, { - latLng: [47.14, 9.52], - name: 'Liechtenstein' - }, { - latLng: [7.11, 171.06], - name: 'Marshall Islands' - }, { - latLng: [17.3, -62.73], - name: 'Saint Kitts and Nevis' - }, { - latLng: [3.2, 73.22], - name: 'Maldives' - }, { - latLng: [35.88, 14.5], - name: 'Malta' - }, { - latLng: [12.05, -61.75], - name: 'Grenada' - }, { - latLng: [13.16, -61.23], - name: 'Saint Vincent and the Grenadines' - }, { - latLng: [13.16, -59.55], - name: 'Barbados' - }, { - latLng: [17.11, -61.85], - name: 'Antigua and Barbuda' - }, { - latLng: [-4.61, 55.45], - name: 'Seychelles' - }, { - latLng: [7.35, 134.46], - name: 'Palau' - }, { - latLng: [42.5, 1.51], - name: 'Andorra' - }, { - latLng: [14.01, -60.98], - name: 'Saint Lucia' - }, { - latLng: [6.91, 158.18], - name: 'Federated States of Micronesia' - }, { - latLng: [1.3, 103.8], - name: 'Singapore' - }, { - latLng: [1.46, 173.03], - name: 'Kiribati' - }, { - latLng: [-21.13, -175.2], - name: 'Tonga' - }, { - latLng: [15.3, -61.38], - name: 'Dominica' - }, { - latLng: [-20.2, 57.5], - name: 'Mauritius' - }, { - latLng: [26.02, 50.55], - name: 'Bahrain' - }, { - latLng: [0.33, 6.73], - name: 'São Tomé and Príncipe' - }] - }); - }); - //@code_end - } - - }; - - - - - /*-------------------------------- - Sparkline Chart - Widgets - --------------------------------*/ - ULTRA_SETTINGS.widgetSparklineChart = function() { - - if ($.isFunction($.fn.sparkline)) { - - $('.wid_dynamicbar').sparkline([8.4, 9, 8.8, 8, 9.5, 9.2, 9.9, 9, 9, 8, 7, 8, 9, 8, 7, 9, 9, 9.5, 8, 9.5, 9.8], { - type: 'bar', - barColor: '#f5f5f5', - height: '60', - barWidth: '12', - barSpacing: 1, - }); - - $('.wid_linesparkline').sparkline([2000, 3454, 5454, 2323, 3432, 4656, 2897, 3545, 4232, 4656, 2897, 3545, 4232, 5434, 4656, 3567, 4878, 3676, 3787], { - type: 'line', - width: '100%', - height: '60', - lineWidth: 2, - lineColor: '#f5f5f5', - fillColor: 'rgba(255,255,255,0.2)', - highlightSpotColor: '#ffffff', - highlightLineColor: '#ffffff', - spotRadius: 3, - }); - - - // Bar + line composite charts - $('.wid_compositebar').sparkline([4, 6, 7, 7, 4, 3, 2, 4, 6, 7, 7, 8, 8, 4, 4, 3, 1, 4, 6, 5, 9], { - type: 'bar', - barColor: '#f5f5f5', - height: '60', - barWidth: '12', - barSpacing: 1, - }); - - $('.wid_compositebar').sparkline([4, 1, 5, 7, 9, 9, 8, 8, 4, 7, 8, 4, 7, 9, 9, 8, 8, 4, 2, 5, 6, 7], { - composite: true, - fillColor: 'rgba(153,114,181,0)', - type: 'line', - width: '100%', - height: '40', - lineWidth: 2, - lineColor: '#9972b5', - highlightSpotColor: '#fa8564', - highlightLineColor: '#9972b5', - spotRadius: 3, - }); - - - - } - - }; - - - - - - - - - // Element Attribute Helper - function getValue($el, data_var, default_val) { - if (typeof $el.data(data_var) != 'undefined') { - return $el.data(data_var); - } - - return default_val; - } - - - /****************************** - initialize respective scripts - *****************************/ - $(document).ready(function() { - ULTRA_SETTINGS.windowBasedLayout(); - ULTRA_SETTINGS.mainmenuScroll(); - ULTRA_SETTINGS.mainMenu(); - ULTRA_SETTINGS.mainmenuCollapsed(); - ULTRA_SETTINGS.pageTopBar(); - ULTRA_SETTINGS.otherScripts(); - ULTRA_SETTINGS.iCheck(); - ULTRA_SETTINGS.customDropZone(); - ULTRA_SETTINGS.formEditors(); - ULTRA_SETTINGS.extraFormSettings(); - ULTRA_SETTINGS.tooltipsPopovers(); - ULTRA_SETTINGS.nestableList(); - ULTRA_SETTINGS.uiCalendar(); - ULTRA_SETTINGS.tocifyScrollMenu(); - ULTRA_SETTINGS.loadPrettyPhoto(); - ULTRA_SETTINGS.jvectorMaps(); - ULTRA_SETTINGS.dataTablesInit(); - ULTRA_SETTINGS.jsTreeINIT(); - ULTRA_SETTINGS.breadcrumbAutoHidden(); - ULTRA_SETTINGS.chatAPI(); - ULTRA_SETTINGS.chatApiScroll(); - ULTRA_SETTINGS.chatApiWindow(); - ULTRA_SETTINGS.mailboxInbox(); - ULTRA_SETTINGS.ultraWidgets(); - ULTRA_SETTINGS.sectionBoxActions(); - ULTRA_SETTINGS.draggablePanels(); - ULTRA_SETTINGS.viewportElement(); - ULTRA_SETTINGS.searchPage(); - ULTRA_SETTINGS.ultraToDoAddTaskWidget(); - ULTRA_SETTINGS.ultraToDoWidget(); - ULTRA_SETTINGS.dbjvectorMap(); - ULTRA_SETTINGS.widgetSparklineChart(); - ULTRA_SETTINGS.ultraWidgetWeather(); - }); - - $(window).resize(function() { - ULTRA_SETTINGS.windowBasedLayout(); - //ULTRA_SETTINGS.mainmenuScroll(); - //ULTRA_SETTINGS.ultraWidgetWeather(); - ULTRA_SETTINGS.isotopeGallery(); - ULTRA_SETTINGS.loginPage(); - ULTRA_SETTINGS.widgetSparklineChart(); - }); - - $(window).load(function() { - ULTRA_SETTINGS.isotopeGallery(); - ULTRA_SETTINGS.loginPage(); - }); - -}); +/** + * @Package: Ultra Admin HTML Theme + * @Since: Ultra 1.0 + * This file is part of Ultra Admin Theme HTML package. + */ + + +jQuery(function($) { + + 'use strict'; + + var ULTRA_SETTINGS = window.ULTRA_SETTINGS || {}; + + + + + + /*-------------------------------- + Window Based Layout + --------------------------------*/ + ULTRA_SETTINGS.windowBasedLayout = function() { + var width = window.innerWidth; + //console.log(width); + + if ($("body").hasClass("chat-open") || $("body").hasClass("sidebar-collapse")) { + + ULTRA_SETTINGS.mainmenuCollapsed(); + + } else if (width < 1025) { + + // small window + $(".page-topbar").addClass("sidebar_shift").removeClass("chat_shift"); + $(".page-sidebar").addClass("collapseit").removeClass("expandit"); + $("#main-content").addClass("sidebar_shift").removeClass("chat_shift"); + $(".page-chatapi").removeClass("showit").addClass("hideit"); + $(".chatapi-windows").removeClass("showit").addClass("hideit"); + ULTRA_SETTINGS.mainmenuCollapsed(); + + } else { + + // large window + $(".page-topbar").removeClass("sidebar_shift chat_shift"); + $(".page-sidebar").removeClass("collapseit chat_shift"); + $("#main-content").removeClass("sidebar_shift chat_shift"); + ULTRA_SETTINGS.mainmenuScroll(); + } + + + } + + + + /*-------------------------------- + CHAT API + --------------------------------*/ + ULTRA_SETTINGS.chatAPI = function() { + + + $('.page-topbar .toggle_chat').on('click', function() { + var chatarea = $(".page-chatapi"); + var chatwindow = $(".chatapi-windows"); + var topbar = $(".page-topbar"); + var mainarea = $("#main-content"); + var menuarea = $(".page-sidebar"); + + if (chatarea.hasClass("hideit")) { + chatarea.addClass("showit").removeClass("hideit"); + chatwindow.addClass("showit").removeClass("hideit"); + topbar.addClass("chat_shift"); + mainarea.addClass("chat_shift"); + menuarea.addClass("chat_shift"); + ULTRA_SETTINGS.mainmenuCollapsed(); + } else { + chatarea.addClass("hideit").removeClass("showit"); + chatwindow.addClass("hideit").removeClass("showit"); + topbar.removeClass("chat_shift"); + mainarea.removeClass("chat_shift"); + menuarea.removeClass("chat_shift"); + //ULTRA_SETTINGS.mainmenuScroll(); + ULTRA_SETTINGS.windowBasedLayout(); + } + }); + + $('.page-topbar .sidebar_toggle').on('click', function() { + var chatarea = $(".page-chatapi"); + var chatwindow = $(".chatapi-windows"); + var topbar = $(".page-topbar"); + var mainarea = $("#main-content"); + var menuarea = $(".page-sidebar"); + + if (menuarea.hasClass("collapseit") || menuarea.hasClass("chat_shift")) { + menuarea.addClass("expandit").removeClass("collapseit").removeClass("chat_shift"); + topbar.removeClass("sidebar_shift").removeClass("chat_shift"); + mainarea.removeClass("sidebar_shift").removeClass("chat_shift"); + chatarea.addClass("hideit").removeClass("showit"); + chatwindow.addClass("hideit").removeClass("showit"); + ULTRA_SETTINGS.mainmenuScroll(); + } else { + menuarea.addClass("collapseit").removeClass("expandit").removeClass("chat_shift"); + topbar.addClass("sidebar_shift").removeClass("chat_shift"); + mainarea.addClass("sidebar_shift").removeClass("chat_shift"); + ULTRA_SETTINGS.mainmenuCollapsed(); + } + }); + + }; + + + /*-------------------------------- + CHAT API Scroll + --------------------------------*/ + ULTRA_SETTINGS.chatApiScroll = function() { + + var topsearch = $(".page-chatapi .search-bar").height(); + var height = window.innerHeight - topsearch; + $('.chat-wrapper').height(height).perfectScrollbar({ + suppressScrollX: true + }); + }; + + + /*-------------------------------- + CHAT API window + --------------------------------*/ + ULTRA_SETTINGS.chatApiWindow = function() { + + var chatarea = $(".page-chatapi"); + + $('.page-chatapi .user-row').on('click', function() { + + var name = $(this).find(".user-info h4 a").html(); + var img = $(this).find(".user-img a img").attr("src"); + var id = $(this).attr("data-user-id"); + var status = $(this).find(".user-info .status").attr("data-status"); + + if ($(this).hasClass("active")) { + $(this).toggleClass("active"); + + $(".chatapi-windows #user-window" + id).hide(); + + } else { + $(this).toggleClass("active"); + + if ($(".chatapi-windows #user-window" + id).length) { + + $(".chatapi-windows #user-window" + id).removeClass("minimizeit").show(); + + } else { + var msg = chatformat_msg('Wow! What a Beautiful theme!', 'receive', name); + msg += chatformat_msg('Yes! Ultra Admin Theme ;)', 'sent', 'You'); + var html = "
    "; + html += "
    " + name + "
    "; + html += "
    " + msg + "
    "; + html += "
    "; + html += "
    "; + $(".chatapi-windows").append(html); + } + } + + }); + + $(document).on('click', ".chatapi-windows .user-window .controlbar .closeit", function(e) { + var id = $(this).attr("data-user-id"); + $(".chatapi-windows #user-window" + id).hide(); + $(".page-chatapi .user-row#chat_user_" + id).removeClass("active"); + }); + + $(document).on('click', ".chatapi-windows .user-window .controlbar img, .chatapi-windows .user-window .controlbar .minimizeit", function(e) { + var id = $(this).attr("data-user-id"); + + if (!$(".chatapi-windows #user-window" + id).hasClass("minimizeit")) { + $(".chatapi-windows #user-window" + id).addClass("minimizeit"); + ULTRA_SETTINGS.tooltipsPopovers(); + } else { + $(".chatapi-windows #user-window" + id).removeClass("minimizeit"); + } + + }); + + $(document).on('keypress', ".chatapi-windows .user-window .typearea input", function(e) { + if (e.keyCode == 13) { + var id = $(this).attr("data-user-id"); + var msg = $(this).val(); + msg = chatformat_msg(msg, 'sent', 'You'); + $(".chatapi-windows #user-window" + id + " .chatarea").append(msg); + $(this).val(""); + $(this).focus(); + } + $(".chatapi-windows #user-window" + id + " .chatarea").perfectScrollbar({ + suppressScrollX: true + }); + }); + + }; + + function chatformat_msg(msg, type, name) { + var d = new Date(); + var h = d.getHours(); + var m = d.getMinutes(); + return "
    " + name + "" + msg + "" + h + ":" + m + "
    "; + } + + + /*-------------------------------- + Login Page + --------------------------------*/ + ULTRA_SETTINGS.loginPage = function() { + + var height = window.innerHeight; + var formheight = $("#login").height(); + var newheight = (height - formheight) / 2; + //console.log(height+" - "+ formheight + " / "+ newheight); + $('#login').css('margin-top', +newheight + 'px'); + + if ($('#login #user_login').length) { + var d = document.getElementById('user_login'); + d.focus(); + } + + }; + + + + /*-------------------------------- + Search Page + --------------------------------*/ + ULTRA_SETTINGS.searchPage = function() { + + $('.search_data .tab-pane').perfectScrollbar({ + suppressScrollX: true + }); + var search = $(".search-page-input"); + if (search.length) { + search.focus(); + } + }; + + + /*-------------------------------- + Viewport Checker + --------------------------------*/ + ULTRA_SETTINGS.viewportElement = function() { + + if ($.isFunction($.fn.viewportChecker)) { + + $('.inviewport').viewportChecker({ + callbackFunction: function(elem, action) { + //setTimeout(function(){ + //elem.html((action == "add") ? 'Callback with 500ms timeout: added class' : 'Callback with 500ms timeout: removed class'); + //},500); + } + }); + + + $('.number_counter').viewportChecker({ + classToAdd: 'start_timer', + offset: 10, + callbackFunction: function(elem) { + $('.start_timer:not(.counted)').each(count); + //$(elem).removeClass('number_counter'); + } + }); + + } + + // start count + function count(options) { + var $this = $(this); + options = $.extend({}, options || {}, $this.data('countToOptions') || {}); + $this.countTo(options).addClass("counted"); + } + }; + + + + /*-------------------------------- + Sortable / Draggable Panels + --------------------------------*/ + ULTRA_SETTINGS.draggablePanels = function() { + + if ($.isFunction($.fn.sortable)) { + $(".sort_panel").sortable({ + connectWith: ".sort_panel", + handle: "header.panel_header", + cancel: ".panel_actions", + placeholder: "portlet-placeholder" + }); + } + }; + + + + /*-------------------------------- + Breadcrumb autoHidden + --------------------------------*/ + ULTRA_SETTINGS.breadcrumbAutoHidden = function() { + + $('.breadcrumb.auto-hidden a').on('mouseover', function() { + $(this).removeClass("collapsed"); + }); + $('.breadcrumb.auto-hidden a').on('mouseout', function() { + $(this).addClass("collapsed"); + }); + + }; + + + + + + /*-------------------------------- + Section Box Actions + --------------------------------*/ + ULTRA_SETTINGS.sectionBoxActions = function() { + + $('section.box .actions .box_toggle').on('click', function() { + + var content = $(this).parent().parent().parent().find(".content-body"); + if (content.hasClass("collapsed")) { + content.removeClass("collapsed").slideDown(500); + $(this).removeClass("fa-chevron-up").addClass("fa-chevron-down"); + } else { + content.addClass("collapsed").slideUp(500); + $(this).removeClass("fa-chevron-down").addClass("fa-chevron-up"); + } + + }); + + $('section.box .actions .box_close').on('click', function() { + content = $(this).parent().parent().parent().remove(); + }); + + + + }; + + + + + + + /*-------------------------------- + Main Menu Scroll + --------------------------------*/ + ULTRA_SETTINGS.mainmenuScroll = function() { + + //console.log("expand scroll menu"); + + var topbar = $(".page-topbar").height(); + var projectinfo = $(".project-info").innerHeight(); + + var height = window.innerHeight - topbar - projectinfo; + + $('#main-menu-wrapper').height(height).perfectScrollbar({ + suppressScrollX: true + }); + $("#main-menu-wrapper .wraplist").height('auto'); + + + /*show first sub menu of open menu item only - opened after closed*/ + // > in the selector is used to select only immediate elements and not the inner nested elements. + $("li.open > .sub-menu").attr("style", "display:block;"); + + + }; + + + /*-------------------------------- + Collapsed Main Menu + --------------------------------*/ + ULTRA_SETTINGS.mainmenuCollapsed = function() { + + if ($(".page-sidebar.chat_shift #main-menu-wrapper").length > 0 || $(".page-sidebar.collapseit #main-menu-wrapper").length > 0) { + //console.log("collapse menu"); + var topbar = $(".page-topbar").height(); + var windowheight = window.innerHeight; + var minheight = windowheight - topbar; + var fullheight = $(".page-container #main-content .wrapper").height(); + + var height = fullheight; + + if (fullheight < minheight) { + height = minheight; + } + + $('#main-menu-wrapper').perfectScrollbar('destroy'); + + $('.page-sidebar.chat_shift #main-menu-wrapper .wraplist, .page-sidebar.collapseit #main-menu-wrapper .wraplist').height(height); + + /*hide sub menu of open menu item*/ + $("li.open .sub-menu").attr("style", ""); + + } + + }; + + + + + /*-------------------------------- + Main Menu + --------------------------------*/ + ULTRA_SETTINGS.mainMenu = function() { + $('#main-menu-wrapper li a').click(function(e) { + + if ($(this).next().hasClass('sub-menu') === false) { + return; + } + + var parent = $(this).parent().parent(); + var sub = $(this).next(); + + parent.children('li.open').children('.sub-menu').slideUp(200); + parent.children('li.open').children('a').children('.arrow').removeClass('open'); + parent.children('li').removeClass('open'); + + if (sub.is(":visible")) { + $(this).find(".arrow").removeClass("open"); + sub.slideUp(200); + } else { + $(this).parent().addClass("open"); + $(this).find(".arrow").addClass("open"); + sub.slideDown(200); + } + + }); + + $("body").click(function(e) { + $(".page-sidebar.collapseit .wraplist li.open .sub-menu").attr("style",""); + $(".page-sidebar.collapseit .wraplist li.open").removeClass("open"); + $(".page-sidebar.chat_shift .wraplist li.open .sub-menu").attr("style",""); + $(".page-sidebar.chat_shift .wraplist li.open").removeClass("open"); + }); + + }; + + + + /*-------------------------------- + Mailbox + --------------------------------*/ + ULTRA_SETTINGS.mailboxInbox = function() { + + $('.mail_list table .star i').click(function(e) { + $(this).toggleClass("fa-star fa-star-o"); + }); + + $('.mail_list .open-view').click(function(e) { + window.location = 'mail-view.html'; + }); + + $('.mail_view_info .labels .cc').click(function(e) { + var ele = $(".mail_compose_cc"); + if (ele.is(":visible")) { + ele.hide(); + } else { + ele.show(); + } + }); + + $('.mail_view_info .labels .bcc').click(function(e) { + var ele = $(".mail_compose_bcc"); + if (ele.is(":visible")) { + ele.hide(); + } else { + ele.show(); + } + }); + + }; + + + + + /*-------------------------------- + Top Bar + --------------------------------*/ + ULTRA_SETTINGS.pageTopBar = function() { + $('.page-topbar li.searchform .input-group-addon').click(function(e) { + $(this).parent().parent().toggleClass("focus"); + $(this).parent().find("input").focus(); + }); + + $('.page-topbar li .dropdown-menu .list').perfectScrollbar({ + suppressScrollX: true + }); + + }; + + + /*-------------------------------- + Extra form settings + --------------------------------*/ + ULTRA_SETTINGS.extraFormSettings = function() { + + // transparent input group focus/blur + $('.input-group .form-control').focus(function(e) { + $(this).parent().find(".input-group-addon").addClass("input-focus"); + $(this).parent().find(".input-group-btn").addClass("input-focus"); + }); + + $('.input-group .form-control').blur(function(e) { + $(this).parent().find(".input-group-addon").removeClass("input-focus"); + $(this).parent().find(".input-group-btn").removeClass("input-focus"); + }); + + }; + + + + /*-------------------------------- + js tree + --------------------------------*/ + ULTRA_SETTINGS.jsTreeINIT = function() { + + + if ($.isFunction($.fn.jstree)) { + $(function() { + var to = false; + $('#treedata_q').keyup(function() { + if (to) { + clearTimeout(to); + } + to = setTimeout(function() { + var v = $('#treedata_q').val(); + $('#jstree_treedata').jstree(true).search(v); + }, 250); + }); + + $('#jstree_treedata') + .jstree({ + "core": { + "animation": 0, + "check_callback": true, + "themes": { + "stripes": true + }, + 'data': { + 'url': function(node) { + return node.id === '#' ? 'data/ajax_demo_roots_jstree.json' : 'data/ajax_demo_children_jstree.json'; + }, + 'data': function(node) { + return { + 'id': node.id + }; + } + } + }, + "types": { + "#": { + "max_children": 1, + "max_depth": 4, + "valid_children": ["root"] + }, + "root": { + "icon": "assets/plugins/jstree/images/tree_icon.png", + "valid_children": ["default"] + }, + "default": { + "valid_children": ["default", "file"] + }, + "file": { + "icon": "fa fa-file", + "valid_children": [] + } + }, + "checkbox": { + "keep_selected_style": false + }, + "plugins": ["checkbox", "contextmenu", "dnd", "search", "sort", "state", "types", "unique", "wholerow"] + }); + }); + + } + }; + + + + /*-------------------------------- + Vector maps + --------------------------------*/ + ULTRA_SETTINGS.jvectorMaps = function() { + + if ($.isFunction($.fn.vectorMap)) { + + if ($("#world-map-markers").length) { + //@code_start + $(function() { + $('#world-map-markers').vectorMap({ + map: 'world_mill_en', + scaleColors: ['#1fb5ac', '#1fb5ac'], + normalizeFunction: 'polynomial', + hoverOpacity: 0.7, + hoverColor: false, + regionsSelectable: true, + markersSelectable: true, + markersSelectableOne: true, + + onRegionOver: function(event, code) { + //console.log('region-over', code); + }, + onRegionOut: function(event, code) { + //console.log('region-out', code); + }, + onRegionClick: function(event, code) { + //console.log('region-click', code); + }, + onRegionSelected: function(event, code, isSelected, selectedRegions) { + //console.log('region-select', code, isSelected, selectedRegions); + if (window.localStorage) { + window.localStorage.setItem( + 'jvectormap-selected-regions', + JSON.stringify(selectedRegions) + ); + } + }, + + panOnDrag: true, + + focusOn: { + x: 0.5, + y: 0.5, + scale: 1, + animate: true + }, + + + regionStyle: { + initial: { + fill: 'white', + 'fill-opacity': 1, + stroke: 'none', + 'stroke-width': 0, + 'stroke-opacity': 1 + }, + hover: { + fill: '#fa8564', + 'fill-opacity': 1, + cursor: 'pointer' + }, + selected: { + fill: '#fa8564' + }, + selectedHover: {} + }, + + + + markerStyle: { + initial: { + fill: '#9972b5', + stroke: '#9972b5', + r: 6 + }, + hover: { + stroke: '#FDB45C', + "stroke-width": 2, + cursor: 'pointer' + }, + selected: { + fill: '#FDB45C', + "stroke-width": 0, + }, + }, + backgroundColor: '#1fb5ac', + markers: [{ + latLng: [41.90, 12.45], + name: 'Vatican City' + }, { + latLng: [43.73, 7.41], + name: 'Monaco' + }, { + latLng: [-0.52, 166.93], + name: 'Nauru' + }, { + latLng: [-8.51, 179.21], + name: 'Tuvalu' + }, { + latLng: [43.93, 12.46], + name: 'San Marino' + }, { + latLng: [47.14, 9.52], + name: 'Liechtenstein' + }, { + latLng: [7.11, 171.06], + name: 'Marshall Islands' + }, { + latLng: [17.3, -62.73], + name: 'Saint Kitts and Nevis' + }, { + latLng: [3.2, 73.22], + name: 'Maldives' + }, { + latLng: [35.88, 14.5], + name: 'Malta' + }, { + latLng: [12.05, -61.75], + name: 'Grenada' + }, { + latLng: [13.16, -61.23], + name: 'Saint Vincent and the Grenadines' + }, { + latLng: [13.16, -59.55], + name: 'Barbados' + }, { + latLng: [17.11, -61.85], + name: 'Antigua and Barbuda' + }, { + latLng: [-4.61, 55.45], + name: 'Seychelles' + }, { + latLng: [7.35, 134.46], + name: 'Palau' + }, { + latLng: [42.5, 1.51], + name: 'Andorra' + }, { + latLng: [14.01, -60.98], + name: 'Saint Lucia' + }, { + latLng: [6.91, 158.18], + name: 'Federated States of Micronesia' + }, { + latLng: [1.3, 103.8], + name: 'Singapore' + }, { + latLng: [1.46, 173.03], + name: 'Kiribati' + }, { + latLng: [-21.13, -175.2], + name: 'Tonga' + }, { + latLng: [15.3, -61.38], + name: 'Dominica' + }, { + latLng: [-20.2, 57.5], + name: 'Mauritius' + }, { + latLng: [26.02, 50.55], + name: 'Bahrain' + }, { + latLng: [0.33, 6.73], + name: 'São Tomé and Príncipe' + }] + }); + }); + //@code_end + } + + var mapid = ""; + mapid = $('#europe_mill_en-map'); + if (mapid.length) { + mapid.vectorMap({ + map: 'europe_mill_en', + regionsSelectable: true, + backgroundColor: '#1fb5ac', + regionStyle: { + initial: { + fill: 'white', + stroke: 'none', + }, + hover: { + fill: '#fa8564', + 'fill-opacity': 1, + cursor: 'pointer' + }, + selected: { + fill: '#fa8564' + } + }, + focusOn: { + x: 0, + y: 0, + scale: 1, + animate: true + }, + }); + } // Europe + mapid = $('#in_mill_en-map'); + if (mapid.length) { + mapid.vectorMap({ + map: 'in_mill_en', + regionsSelectable: true, + backgroundColor: '#1fb5ac', + regionStyle: { + initial: { + fill: 'white', + stroke: 'none', + }, + hover: { + fill: '#fa8564', + 'fill-opacity': 1, + cursor: 'pointer' + }, + selected: { + fill: '#fa8564' + } + }, + focusOn: { + x: 0, + y: 0, + scale: 5, + animate: true + }, + }); + } // India + mapid = $('#us_aea_en-map'); + if (mapid.length) { + mapid.vectorMap({ + map: 'us_aea_en', + regionsSelectable: true, + backgroundColor: '#1fb5ac', + regionStyle: { + initial: { + fill: 'white', + stroke: 'none', + }, + hover: { + fill: '#fa8564', + 'fill-opacity': 1, + cursor: 'pointer' + }, + selected: { + fill: '#fa8564' + } + }, + focusOn: { + x: 0, + y: 0, + scale: 5, + animate: true + }, + }); + } // USA + mapid = $('#pt_mill_en-map'); + if (mapid.length) { + mapid.vectorMap({ + map: 'pt_mill_en', + regionsSelectable: true, + backgroundColor: '#1fb5ac', + regionStyle: { + initial: { + fill: 'white', + stroke: 'none', + }, + hover: { + fill: '#fa8564', + 'fill-opacity': 1, + cursor: 'pointer' + }, + selected: { + fill: '#fa8564' + } + }, + focusOn: { + x: 0, + y: 0, + scale: 5, + animate: true + }, + }); + } // Portugal + mapid = $('#cn_mill_en-map'); + if (mapid.length) { + mapid.vectorMap({ + map: 'cn_mill_en', + regionsSelectable: true, + backgroundColor: '#1fb5ac', + regionStyle: { + initial: { + fill: 'white', + stroke: 'none', + }, + hover: { + fill: '#fa8564', + 'fill-opacity': 1, + cursor: 'pointer' + }, + selected: { + fill: '#fa8564' + } + }, + focusOn: { + x: 0, + y: 0, + scale: 5, + animate: true + }, + }); + } // China + mapid = $('#nz_mill_en-map'); + if (mapid.length) { + mapid.vectorMap({ + map: 'nz_mill_en', + regionsSelectable: true, + backgroundColor: '#1fb5ac', + regionStyle: { + initial: { + fill: 'white', + stroke: 'none', + }, + hover: { + fill: '#fa8564', + 'fill-opacity': 1, + cursor: 'pointer' + }, + selected: { + fill: '#fa8564' + } + }, + focusOn: { + x: 0, + y: 0, + scale: 5, + animate: true + }, + }); + } // New Zealand + mapid = $('#no_mill_en-map'); + if (mapid.length) { + mapid.vectorMap({ + map: 'no_mill_en', + regionsSelectable: true, + backgroundColor: '#1fb5ac', + regionStyle: { + initial: { + fill: 'white', + stroke: 'none', + }, + hover: { + fill: '#fa8564', + 'fill-opacity': 1, + cursor: 'pointer' + }, + selected: { + fill: '#fa8564' + } + }, + focusOn: { + x: 0, + y: 0, + scale: 5, + animate: true + }, + }); + } // Norway + mapid = $('#es_mill_en-map'); + if (mapid.length) { + mapid.vectorMap({ + map: 'es_mill_en', + regionsSelectable: true, + backgroundColor: '#1fb5ac', + regionStyle: { + initial: { + fill: 'white', + stroke: 'none', + }, + hover: { + fill: '#fa8564', + 'fill-opacity': 1, + cursor: 'pointer' + }, + selected: { + fill: '#fa8564' + } + }, + focusOn: { + x: 0, + y: 0, + scale: 5, + animate: true + }, + }); + } // Spain + mapid = $('#au_mill_en-map'); + if (mapid.length) { + mapid.vectorMap({ + map: 'au_mill_en', + regionsSelectable: true, + backgroundColor: '#1fb5ac', + regionStyle: { + initial: { + fill: 'white', + stroke: 'none', + }, + hover: { + fill: '#fa8564', + 'fill-opacity': 1, + cursor: 'pointer' + }, + selected: { + fill: '#fa8564' + } + }, + focusOn: { + x: 0, + y: 0, + scale: 5, + animate: true + }, + }); + } // Australia + mapid = $('#fr_regions_mill_en-map'); + if (mapid.length) { + mapid.vectorMap({ + map: 'fr_regions_mill_en', + regionsSelectable: true, + backgroundColor: '#1fb5ac', + regionStyle: { + initial: { + fill: 'white', + stroke: 'none', + }, + hover: { + fill: '#fa8564', + 'fill-opacity': 1, + cursor: 'pointer' + }, + selected: { + fill: '#fa8564' + } + }, + focusOn: { + x: 0, + y: 0, + scale: 5, + animate: true + }, + }); + } // France - Regions + mapid = $('#th_mill_en-map'); + if (mapid.length) { + mapid.vectorMap({ + map: 'th_mill_en', + regionsSelectable: true, + backgroundColor: '#1fb5ac', + regionStyle: { + initial: { + fill: 'white', + stroke: 'none', + }, + hover: { + fill: '#fa8564', + 'fill-opacity': 1, + cursor: 'pointer' + }, + selected: { + fill: '#fa8564' + } + }, + focusOn: { + x: 0, + y: 0, + scale: 5, + animate: true + }, + }); + } // Thailand + mapid = $('#co_mill_en-map'); + if (mapid.length) { + mapid.vectorMap({ + map: 'co_mill_en', + regionsSelectable: true, + backgroundColor: '#1fb5ac', + regionStyle: { + initial: { + fill: 'white', + stroke: 'none', + }, + hover: { + fill: '#fa8564', + 'fill-opacity': 1, + cursor: 'pointer' + }, + selected: { + fill: '#fa8564' + } + }, + focusOn: { + x: 0, + y: 0, + scale: 5, + animate: true + }, + }); + } // Colombia + mapid = $('#be_mill_en-map'); + if (mapid.length) { + mapid.vectorMap({ + map: 'be_mill_en', + regionsSelectable: true, + backgroundColor: '#1fb5ac', + regionStyle: { + initial: { + fill: 'white', + stroke: 'none', + }, + hover: { + fill: '#fa8564', + 'fill-opacity': 1, + cursor: 'pointer' + }, + selected: { + fill: '#fa8564' + } + }, + focusOn: { + x: 0, + y: 0, + scale: 5, + animate: true + }, + }); + } // Belgium + mapid = $('#ar_mill_en-map'); + if (mapid.length) { + mapid.vectorMap({ + map: 'ar_mill_en', + regionsSelectable: true, + backgroundColor: '#1fb5ac', + regionStyle: { + initial: { + fill: 'white', + stroke: 'none', + }, + hover: { + fill: '#fa8564', + 'fill-opacity': 1, + cursor: 'pointer' + }, + selected: { + fill: '#fa8564' + } + }, + focusOn: { + x: 0, + y: 0, + scale: 5, + animate: true + }, + }); + } // Argentina + mapid = $('#ve_mill_en-map'); + if (mapid.length) { + mapid.vectorMap({ + map: 've_mill_en', + regionsSelectable: true, + backgroundColor: '#1fb5ac', + regionStyle: { + initial: { + fill: 'white', + stroke: 'none', + }, + hover: { + fill: '#fa8564', + 'fill-opacity': 1, + cursor: 'pointer' + }, + selected: { + fill: '#fa8564' + } + }, + focusOn: { + x: 0, + y: 0, + scale: 5, + animate: true + }, + }); + } // Venezuela + mapid = $('#it_mill_en-map'); + if (mapid.length) { + mapid.vectorMap({ + map: 'it_mill_en', + regionsSelectable: true, + backgroundColor: '#1fb5ac', + regionStyle: { + initial: { + fill: 'white', + stroke: 'none', + }, + hover: { + fill: '#fa8564', + 'fill-opacity': 1, + cursor: 'pointer' + }, + selected: { + fill: '#fa8564' + } + }, + focusOn: { + x: 0, + y: 0, + scale: 5, + animate: true + }, + }); + } // Italy + mapid = $('#dk_mill_en-map'); + if (mapid.length) { + mapid.vectorMap({ + map: 'dk_mill_en', + regionsSelectable: true, + backgroundColor: '#1fb5ac', + regionStyle: { + initial: { + fill: 'white', + stroke: 'none', + }, + hover: { + fill: '#fa8564', + 'fill-opacity': 1, + cursor: 'pointer' + }, + selected: { + fill: '#fa8564' + } + }, + focusOn: { + x: 0, + y: 0, + scale: 5, + animate: true + }, + }); + } // Denmark + mapid = $('#at_mill_en-map'); + if (mapid.length) { + mapid.vectorMap({ + map: 'at_mill_en', + regionsSelectable: true, + backgroundColor: '#1fb5ac', + regionStyle: { + initial: { + fill: 'white', + stroke: 'none', + }, + hover: { + fill: '#fa8564', + 'fill-opacity': 1, + cursor: 'pointer' + }, + selected: { + fill: '#fa8564' + } + }, + focusOn: { + x: 0, + y: 0, + scale: 5, + animate: true + }, + }); + } // Austria + mapid = $('#ca_lcc_en-map'); + if (mapid.length) { + mapid.vectorMap({ + map: 'ca_lcc_en', + regionsSelectable: true, + backgroundColor: '#1fb5ac', + regionStyle: { + initial: { + fill: 'white', + stroke: 'none', + }, + hover: { + fill: '#fa8564', + 'fill-opacity': 1, + cursor: 'pointer' + }, + selected: { + fill: '#fa8564' + } + }, + focusOn: { + x: 0, + y: 0, + scale: 5, + animate: true + }, + }); + } // Canada + mapid = $('#nl_mill_en-map'); + if (mapid.length) { + mapid.vectorMap({ + map: 'nl_mill_en', + regionsSelectable: true, + backgroundColor: '#1fb5ac', + regionStyle: { + initial: { + fill: 'white', + stroke: 'none', + }, + hover: { + fill: '#fa8564', + 'fill-opacity': 1, + cursor: 'pointer' + }, + selected: { + fill: '#fa8564' + } + }, + focusOn: { + x: 0, + y: 0, + scale: 5, + animate: true + }, + }); + } // Netherlands + mapid = $('#se_mill_en-map'); + if (mapid.length) { + mapid.vectorMap({ + map: 'se_mill_en', + regionsSelectable: true, + backgroundColor: '#1fb5ac', + regionStyle: { + initial: { + fill: 'white', + stroke: 'none', + }, + hover: { + fill: '#fa8564', + 'fill-opacity': 1, + cursor: 'pointer' + }, + selected: { + fill: '#fa8564' + } + }, + focusOn: { + x: 0, + y: 0, + scale: 5, + animate: true + }, + }); + } // Sweden + mapid = $('#pl_mill_en-map'); + if (mapid.length) { + mapid.vectorMap({ + map: 'pl_mill_en', + regionsSelectable: true, + backgroundColor: '#1fb5ac', + regionStyle: { + initial: { + fill: 'white', + stroke: 'none', + }, + hover: { + fill: '#fa8564', + 'fill-opacity': 1, + cursor: 'pointer' + }, + selected: { + fill: '#fa8564' + } + }, + focusOn: { + x: 0, + y: 0, + scale: 5, + animate: true + }, + }); + } // Poland + mapid = $('#de_mill_en-map'); + if (mapid.length) { + mapid.vectorMap({ + map: 'de_mill_en', + regionsSelectable: true, + backgroundColor: '#1fb5ac', + regionStyle: { + initial: { + fill: 'white', + stroke: 'none', + }, + hover: { + fill: '#fa8564', + 'fill-opacity': 1, + cursor: 'pointer' + }, + selected: { + fill: '#fa8564' + } + }, + focusOn: { + x: 0, + y: 0, + scale: 5, + animate: true + }, + }); + } // Germany + mapid = $('#fr_mill_en-map'); + if (mapid.length) { + mapid.vectorMap({ + map: 'fr_mill_en', + regionsSelectable: true, + backgroundColor: '#1fb5ac', + regionStyle: { + initial: { + fill: 'white', + stroke: 'none', + }, + hover: { + fill: '#fa8564', + 'fill-opacity': 1, + cursor: 'pointer' + }, + selected: { + fill: '#fa8564' + } + }, + focusOn: { + x: 0, + y: 0, + scale: 5, + animate: true + }, + }); + } // France - Departments + mapid = $('#za_mill_en-map'); + if (mapid.length) { + mapid.vectorMap({ + map: 'za_mill_en', + regionsSelectable: true, + backgroundColor: '#1fb5ac', + regionStyle: { + initial: { + fill: 'white', + stroke: 'none', + }, + hover: { + fill: '#fa8564', + 'fill-opacity': 1, + cursor: 'pointer' + }, + selected: { + fill: '#fa8564' + } + }, + focusOn: { + x: 0, + y: 0, + scale: 5, + animate: true + }, + }); + } // South Africa + mapid = $('#ch_mill_en-map'); + if (mapid.length) { + mapid.vectorMap({ + map: 'ch_mill_en', + regionsSelectable: true, + backgroundColor: '#1fb5ac', + regionStyle: { + initial: { + fill: 'white', + stroke: 'none', + }, + hover: { + fill: '#fa8564', + 'fill-opacity': 1, + cursor: 'pointer' + }, + selected: { + fill: '#fa8564' + } + }, + focusOn: { + x: 0, + y: 0, + scale: 5, + animate: true + }, + }); + } // Switzerland + mapid = $('#us-ny-newyork_mill_en-map'); + if (mapid.length) { + mapid.vectorMap({ + map: 'us-ny-newyork_mill_en', + regionsSelectable: true, + backgroundColor: '#1fb5ac', + regionStyle: { + initial: { + fill: 'white', + stroke: 'none', + }, + hover: { + fill: '#fa8564', + 'fill-opacity': 1, + cursor: 'pointer' + }, + selected: { + fill: '#fa8564' + } + }, + focusOn: { + x: 0, + y: 0, + scale: 5, + animate: true + }, + }); + } // New York City + mapid = $('#us-il-chicago_mill_en-map'); + if (mapid.length) { + mapid.vectorMap({ + map: 'us-il-chicago_mill_en', + regionsSelectable: true, + backgroundColor: '#1fb5ac', + regionStyle: { + initial: { + fill: 'white', + stroke: 'none', + }, + hover: { + fill: '#fa8564', + 'fill-opacity': 1, + cursor: 'pointer' + }, + selected: { + fill: '#fa8564' + } + }, + focusOn: { + x: 0, + y: 0, + scale: 5, + animate: true + }, + }); + } // Chicago + + } + + }; + + + /*-------------------------------- + DataTables + --------------------------------*/ + ULTRA_SETTINGS.dataTablesInit = function() { + + if ($.isFunction($.fn.dataTable)) { + + /*--- start ---*/ + + $("#example-1").dataTable({ + responsive: true, + aLengthMenu: [ + [10, 25, 50, 100, -1], + [10, 25, 50, 100, "All"] + ] + }); + + /*--- end ---*/ + + /*--- start ---*/ + + $('#example-4').dataTable(); + + /*--- end ---*/ + + + + /* Set the defaults for DataTables initialisation */ + $.extend(true, $.fn.dataTable.defaults, { + "sDom": "<'row'<'col-md-6'l><'col-md-6'f>r>t<'row'<'col-md-12'p i>>", + "sPaginationType": "bootstrap", + "oLanguage": { + "sLengthMenu": "_MENU_" + } + }); + + + /* Default class modification */ + $.extend($.fn.dataTableExt.oStdClasses, { + "sWrapper": "dataTables_wrapper form-inline" + }); + + + /* API method to get paging information */ + $.fn.dataTableExt.oApi.fnPagingInfo = function(oSettings) { + return { + "iStart": oSettings._iDisplayStart, + "iEnd": oSettings.fnDisplayEnd(), + "iLength": oSettings._iDisplayLength, + "iTotal": oSettings.fnRecordsTotal(), + "iFilteredTotal": oSettings.fnRecordsDisplay(), + "iPage": oSettings._iDisplayLength === -1 ? + 0 : Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength), + "iTotalPages": oSettings._iDisplayLength === -1 ? + 0 : Math.ceil(oSettings.fnRecordsDisplay() / oSettings._iDisplayLength) + }; + }; + + + /* Bootstrap style pagination control */ + $.extend($.fn.dataTableExt.oPagination, { + "bootstrap": { + "fnInit": function(oSettings, nPaging, fnDraw) { + var oLang = oSettings.oLanguage.oPaginate; + var fnClickHandler = function(e) { + e.preventDefault(); + if (oSettings.oApi._fnPageChange(oSettings, e.data.action)) { + fnDraw(oSettings); + } + }; + + $(nPaging).addClass('').append( + '
      ' + + '' + + '' + + '
    ' + ); + var els = $('a', nPaging); + $(els[0]).bind('click.DT', { + action: "previous" + }, fnClickHandler); + $(els[1]).bind('click.DT', { + action: "next" + }, fnClickHandler); + }, + + "fnUpdate": function(oSettings, fnDraw) { + var iListLength = 5; + var oPaging = oSettings.oInstance.fnPagingInfo(); + var an = oSettings.aanFeatures.p; + var i, ien, j, sClass, iStart, iEnd, iHalf = Math.floor(iListLength / 2); + + if (oPaging.iTotalPages < iListLength) { + iStart = 1; + iEnd = oPaging.iTotalPages; + } else if (oPaging.iPage <= iHalf) { + iStart = 1; + iEnd = iListLength; + } else if (oPaging.iPage >= (oPaging.iTotalPages - iHalf)) { + iStart = oPaging.iTotalPages - iListLength + 1; + iEnd = oPaging.iTotalPages; + } else { + iStart = oPaging.iPage - iHalf + 1; + iEnd = iStart + iListLength - 1; + } + + for (i = 0, ien = an.length; i < ien; i++) { + // Remove the middle elements + $('li:gt(0)', an[i]).filter(':not(:last)').remove(); + + // Add the new list items and their event handlers + for (j = iStart; j <= iEnd; j++) { + sClass = (j == oPaging.iPage + 1) ? 'class="active"' : ''; + $('
  • ' + j + '
  • ') + .insertBefore($('li:last', an[i])[0]) + .bind('click', function(e) { + e.preventDefault(); + oSettings._iDisplayStart = (parseInt($('a', this).text(), 10) - 1) * oPaging.iLength; + fnDraw(oSettings); + }); + } + + // Add / remove disabled classes from the static elements + if (oPaging.iPage === 0) { + $('li:first', an[i]).addClass('disabled'); + } else { + $('li:first', an[i]).removeClass('disabled'); + } + + if (oPaging.iPage === oPaging.iTotalPages - 1 || oPaging.iTotalPages === 0) { + $('li:last', an[i]).addClass('disabled'); + } else { + $('li:last', an[i]).removeClass('disabled'); + } + } + } + } + }); + + + /* + * TableTools Bootstrap compatibility + * Required TableTools 2.1+ + */ + + // Set the classes that TableTools uses to something suitable for Bootstrap + $.extend(true, $.fn.DataTable.TableTools.classes, { + "container": "DTTT ", + "buttons": { + "normal": "btn btn-white", + "disabled": "disabled" + }, + "collection": { + "container": "DTTT_dropdown dropdown-menu", + "buttons": { + "normal": "", + "disabled": "disabled" + } + }, + "print": { + "info": "DTTT_print_info modal" + }, + "select": { + "row": "active" + } + }); + + // Have the collection use a bootstrap compatible dropdown + $.extend(true, $.fn.DataTable.TableTools.DEFAULTS.oTags, { + "collection": { + "container": "ul", + "button": "li", + "liner": "a" + } + }); + + + /* Table initialisation */ + $(document).ready(function() { + var responsiveHelper = undefined; + var breakpointDefinition = { + tablet: 1024, + phone: 480 + }; + var tableElement = $('#example'); + + tableElement.dataTable({ + "sDom": "<'row'<'col-md-6'l T><'col-md-6'f>r>t<'row'<'col-md-12'p i>>", + "oTableTools": { + "aButtons": [{ + "sExtends": "collection", + "sButtonText": "", + "aButtons": ["csv", "xls", "pdf", "copy"] + }] + }, + "sPaginationType": "bootstrap", + "aoColumnDefs": [{ + 'bSortable': false, + 'aTargets': [0] + }], + "aaSorting": [ + [1, "asc"] + ], + "oLanguage": { + "sLengthMenu": "_MENU_ ", + "sInfo": "Showing _START_ to _END_ of _TOTAL_ entries" + }, + bAutoWidth: false, + fnPreDrawCallback: function() { + // Initialize the responsive datatables helper once. + if (!responsiveHelper) { + //responsiveHelper = new ResponsiveDatatablesHelper(tableElement, breakpointDefinition); + } + }, + fnRowCallback: function(nRow) { + //responsiveHelper.createExpandIcon(nRow); + }, + fnDrawCallback: function(oSettings) { + //responsiveHelper.respond(); + } + }); + + $('#example_wrapper .dataTables_filter input').addClass("input-medium "); // modify table search input + $('#example_wrapper .dataTables_length select').addClass("select2-wrapper col-md-12"); // modify table per page dropdown + + + + $('#example input').click(function() { + $(this).parent().parent().parent().toggleClass('row_selected'); + }); + + + /* + * Insert a 'details' column to the table + */ + var nCloneTh = document.createElement('th'); + var nCloneTd = document.createElement('td'); + nCloneTd.innerHTML = ''; + nCloneTd.className = "center"; + + $('#example2 thead tr').each(function() { + this.insertBefore(nCloneTh, this.childNodes[0]); + }); + + $('#example2 tbody tr').each(function() { + this.insertBefore(nCloneTd.cloneNode(true), this.childNodes[0]); + }); + + /* + * Initialse DataTables, with no sorting on the 'details' column + */ + var oTable = $('#example2').dataTable({ + "sDom": "<'row'<'col-md-6'l><'col-md-6'f>r>t<'row'<'col-md-12'p i>>", + "aaSorting": [], + "oLanguage": { + "sLengthMenu": "_MENU_ ", + "sInfo": "Showing _START_ to _END_ of _TOTAL_ entries" + }, + }); + + + $("div.toolbar").html('
    '); + + + $('#example2_wrapper .dataTables_filter input').addClass("input-medium "); + $('#example2_wrapper .dataTables_length select').addClass("select2-wrapper col-md-12"); + + /* Add event listener for opening and closing details + * Note that the indicator for showing which row is open is not controlled by DataTables, + * rather it is done here + */ + $('#example2 tbody td i').on('click', function() { + var nTr = $(this).parents('tr')[0]; + if (oTable.fnIsOpen(nTr)) { + /* This row is already open - close it */ + this.removeClass = "fa fa-plus-circle"; + this.addClass = "fa fa-minus-circle"; + oTable.fnClose(nTr); + } else { + /* Open this row */ + this.removeClass = "fa fa-minus-circle"; + this.addClass = "fa fa-plus-circle"; + oTable.fnOpen(nTr, fnFormatDetails(oTable, nTr), 'details'); + } + + + /* Formating function for row details */ + function fnFormatDetails(oTable, nTr) { + var aData = oTable.fnGetData(nTr); + var sOut = ''; + sOut += ''; + sOut += ''; + sOut += ''; + sOut += '
    Rendering engine:' + aData[1] + ' ' + aData[4] + '
    Link to source:Could provide a link here
    Extra info:And any further details here (images etc)
    '; + + return sOut; + } + + }); + + }); + + + + + + } + }; + + + + /*-------------------------------- + Pretty Photo + --------------------------------*/ + ULTRA_SETTINGS.loadPrettyPhoto = function() { + + if ($.isFunction($.fn.prettyPhoto)) { + //Pretty Photo + $("a[rel^='prettyPhoto']").prettyPhoto({ + social_tools: false + }); + } + }; + + + + + /*-------------------------------- + Gallery + --------------------------------*/ + ULTRA_SETTINGS.isotopeGallery = function() { + if ($.isFunction($.fn.isotope)) { + + var $portfolio_selectors = $('.portfolio-filter >li>a'); + var $portfolio = $('.portfolio-items'); + $portfolio.isotope({ + itemSelector: '.portfolio-item', + layoutMode: 'sloppyMasonry' + }); + + $portfolio_selectors.on('click', function() { + $portfolio_selectors.removeClass('active'); + $(this).addClass('active'); + var selector = $(this).attr('data-filter'); + $portfolio.isotope({ + filter: selector + }); + return false; + }); + + + } + }; + + + /*-------------------------------- + Tocify + --------------------------------*/ + ULTRA_SETTINGS.tocifyScrollMenu = function() { + if ($.isFunction($.fn.tocify)) { + var toc = $("#toc").tocify({ + selectors: "h2,h3,h4,h5", + context: ".tocify-content", + extendPage: false + }).data("toc-tocify"); + } + }; + + + + /*-------------------------------- + Full Calendar + --------------------------------*/ + ULTRA_SETTINGS.uiCalendar = function() { + + + if ($.isFunction($.fn.fullCalendar)) { + + /* initialize the external events + -----------------------------------------------------------------*/ + + $('#external-events .fc-event').each(function() { + + // create an Event Object (http://arshaw.com/fullcalendar/docs/event_data/Event_Object/) + // it doesn't need to have a start or end + var eventObject = { + title: $.trim($(this).text()) // use the element's text as the event title + }; + + // store the Event Object in the DOM element so we can get to it later + $(this).data('eventObject', eventObject); + + // make the event draggable using jQuery UI + $(this).draggable({ + zIndex: 999, + revert: true, // will cause the event to go back to its + revertDuration: 0 // original position after the drag + }); + + }); + + + /* initialize the calendar + -----------------------------------------------------------------*/ + + var date = new Date(); + var d = date.getDate(); + var m = date.getMonth(); + var y = date.getFullYear(); + + $('#calendar').fullCalendar({ + header: { + left: 'prev,next today', + center: 'title', + right: 'month,basicWeek,basicDay' + }, + editable: true, + eventLimit: true, // allow "more" link when too many events + droppable: true, // this allows things to be dropped onto the calendar !!! + drop: function(date, allDay) { // this function is called when something is dropped + + // retrieve the dropped element's stored Event Object + var originalEventObject = $(this).data('eventObject'); + + // we need to copy it, so that multiple events don't have a reference to the same object + var copiedEventObject = $.extend({}, originalEventObject); + + // assign it the date that was reported + copiedEventObject.start = date; + copiedEventObject.allDay = allDay; + + // render the event on the calendar + // the last `true` argument determines if the event "sticks" (http://arshaw.com/fullcalendar/docs/event_rendering/renderEvent/) + $('#calendar').fullCalendar('renderEvent', copiedEventObject, true); + + // is the "remove after drop" checkbox checked? + if ($('#drop-remove').is(':checked')) { + // if so, remove the element from the "Draggable Events" list + $(this).remove(); + } + + }, + events: [{ + title: 'All Day Event', + start: new Date(y, m, 1) + }, { + title: 'Long Event', + start: new Date(y, m, d - 5), + end: new Date(y, m, d - 2) + }, { + id: 999, + title: 'Repeating Event', + start: new Date(y, m, d - 3, 16, 0), + allDay: false + }, { + id: 999, + title: 'Repeating Event', + start: new Date(y, m, d + 4, 16, 0), + allDay: false + }, { + title: 'Meeting', + start: new Date(y, m, d, 10, 30), + allDay: false + }, { + title: 'Lunch', + start: new Date(y, m, d, 12, 0), + end: new Date(y, m, d, 14, 0), + allDay: false + }, { + title: 'Birthday Party', + start: new Date(y, m, d + 1, 19, 0), + end: new Date(y, m, d + 1, 22, 30), + allDay: false + }, { + title: 'Click for Google', + start: new Date(y, m, 28), + end: new Date(y, m, 29), + url: 'http://google.com/' + }] + }); + + + + + + /*Add new event*/ + // Form to add new event + + $("#add_event_form").on('submit', function(ev) { + ev.preventDefault(); + + var $event = $(this).find('.new-event-form'), + event_name = $event.val(); + + if (event_name.length >= 3) { + + var newid = "new" + "" + Math.random().toString(36).substring(7); + // Create Event Entry + $("#external-events").append( + '
    ' + event_name + '
    ' + ); + + + var eventObject = { + title: $.trim($("#" + newid).text()) // use the element's text as the event title + }; + + // store the Event Object in the DOM element so we can get to it later + $("#" + newid).data('eventObject', eventObject); + + // Reset draggable + $("#" + newid).draggable({ + revert: true, + revertDuration: 0, + zIndex: 999 + }); + + // Reset input + $event.val('').focus(); + } else { + $event.focus(); + } + }); + + + + } + + }; + + + + /*-------------------------------- + Sortable (Nestable) List + --------------------------------*/ + ULTRA_SETTINGS.nestableList = function() { + + $("#nestableList-1").on('stop.uk.nestable', function(ev) { + var serialized = $(this).data('nestable').serialize(), + str = ''; + + str = nestableIterate(serialized, 0); + + $("#nestableList-1-ev").val(str); + }); + + + function nestableIterate(items, depth) { + var str = ''; + + if (!depth) + depth = 0; + + //console.log(items); + + jQuery.each(items, function(i, obj) { + str += '[ID: ' + obj.itemId + ']\t' + nestableRepeat('—', depth + 1) + ' ' + obj.item; + str += '\n'; + + if (obj.children) { + str += nestableIterate(obj.children, depth + 1); + } + }); + + return str; + } + + function nestableRepeat(s, n) { + var a = []; + while (a.length < n) { + a.push(s); + } + return a.join(''); + } + }; + + + + + + + + + + /*-------------------------------- + Tooltips & Popovers + --------------------------------*/ + ULTRA_SETTINGS.tooltipsPopovers = function() { + + $('[rel="tooltip"]').each(function() { + var animate = $(this).attr("data-animate"); + var colorclass = $(this).attr("data-color-class"); + $(this).tooltip({ + template: '
    ' + }); + }); + + $('[rel="popover"]').each(function() { + var animate = $(this).attr("data-animate"); + var colorclass = $(this).attr("data-color-class"); + $(this).popover({ + template: '

    ' + }); + }); + + }; + + + + + + /*-------------------------------- + iCheck + --------------------------------*/ + ULTRA_SETTINGS.iCheck = function() { + + + + if ($.isFunction($.fn.iCheck)) { + + + $('input[type="checkbox"].iCheck').iCheck({ + checkboxClass: 'icheckbox_minimal', + radioClass: 'iradio_minimal', + increaseArea: '20%' + }); + + + var x; + var colors = ["-green", "-red", "-yellow", "-blue", "-aero", "-orange", "-grey", "-pink", "-purple","-white"]; + + for (x = 0; x < colors.length; x++) { + + if (x == 0) { + $('input.icheck-minimal').iCheck({ + checkboxClass: 'icheckbox_minimal' + colors[x], + radioClass: 'iradio_minimal' + colors[x], + increaseArea: '20%' + }); + + $('input.skin-square').iCheck({ + checkboxClass: 'icheckbox_square' + colors[x], + radioClass: 'iradio_square' + colors[x], + increaseArea: '20%' + }); + + $('input.skin-flat').iCheck({ + checkboxClass: 'icheckbox_flat' + colors[x], + radioClass: 'iradio_flat' + colors[x], + }); + + + $('input.skin-line').each(function() { + var self = $(this), + label = self.next(), + label_text = label.text(); + + label.remove(); + self.iCheck({ + checkboxClass: 'icheckbox_line' + colors[x], + radioClass: 'iradio_line' + colors[x], + insert: '
    ' + label_text + }); + }); + + } // end x = 0 + + $('input.icheck-minimal' + colors[x]).iCheck({ + checkboxClass: 'icheckbox_minimal' + colors[x], + radioClass: 'iradio_minimal' + colors[x], + increaseArea: '20%' + }); + + + $('input.skin-square' + colors[x]).iCheck({ + checkboxClass: 'icheckbox_square' + colors[x], + radioClass: 'iradio_square' + colors[x], + increaseArea: '20%' + }); + + + $('input.skin-flat' + colors[x]).iCheck({ + checkboxClass: 'icheckbox_flat' + colors[x], + radioClass: 'iradio_flat' + colors[x], + }); + + + $('input.skin-line' + colors[x]).each(function() { + var self = $(this), + label = self.next(), + label_text = label.text(); + + label.remove(); + self.iCheck({ + checkboxClass: 'icheckbox_line' + colors[x], + radioClass: 'iradio_line' + colors[x], + insert: '
    ' + label_text + }); + }); + + } // end for loop + + + } + }; + + + + + /*-------------------------------- + Form Editors + --------------------------------*/ + ULTRA_SETTINGS.formEditors = function() { + + if ($.isFunction($.fn.wysihtml5)) { + $('.bootstrap-wysihtml5-textarea').wysihtml5({ + toolbar: { + "font-styles": true, //Font styling, e.g. h1, h2, etc. Default true + "emphasis": true, //Italics, bold, etc. Default true + "lists": true, //(Un)ordered lists, e.g. Bullets, Numbers. Default true + "html": true, //Button which allows you to edit the generated HTML. Default false + "link": true, //Button to insert a link. Default true + "image": true, //Button to insert an image. Default true, + "color": true, //Button to change color of font + "blockquote": true, //Blockquote + "size": "none" //default: none, other options are xs, sm, lg + } + }); + + + $('.mail-compose-editor').wysihtml5({ + toolbar: { + "font-styles": true, //Font styling, e.g. h1, h2, etc. Default true + "emphasis": true, //Italics, bold, etc. Default true + "lists": false, //(Un)ordered lists, e.g. Bullets, Numbers. Default true + "html": true, //Button which allows you to edit the generated HTML. Default false + "link": true, //Button to insert a link. Default true + "image": true, //Button to insert an image. Default true, + "color": true, //Button to change color of font + "blockquote": false, //Blockquote + "size": "none" //default: none, other options are xs, sm, lg + } + }); + + } + + if ($.isFunction($.fn.CKEDITOR)) { + // This code is generally not necessary, but it is here to demonstrate + // how to customize specific editor instances on the fly. This fits well + // this demo because we have editable elements (like headers) that + // require less features. + + // The "instanceCreated" event is fired for every editor instance created. + CKEDITOR.on('instanceCreated', function(event) { + var editor = event.editor, + element = editor.element; + + // Customize editors for headers and tag list. + // These editors don't need features like smileys, templates, iframes etc. + if (element.is('h1', 'h2', 'h3') || element.getAttribute('id') == 'taglist') { + // Customize the editor configurations on "configLoaded" event, + // which is fired after the configuration file loading and + // execution. This makes it possible to change the + // configurations before the editor initialization takes place. + editor.on('configLoaded', function() { + + // Remove unnecessary plugins to make the editor simpler. + editor.config.removePlugins = 'colorbutton,find,flash,font,' + + 'forms,iframe,image,newpage,removeformat,' + + 'smiley,specialchar,stylescombo,templates'; + + // Rearrange the layout of the toolbar. + editor.config.toolbarGroups = [{ + name: 'editing', + groups: ['basicstyles', 'links'] + }, { + name: 'undo' + }, { + name: 'clipboard', + groups: ['selection', 'clipboard'] + }, { + name: 'about' + }]; + }); + } + }); + } + }; + + + /*-------------------------------- + Custom Dropzone + --------------------------------*/ + ULTRA_SETTINGS.customDropZone = function() { + + + + if ($.isFunction($.fn.dropzone)) { + + var i = 1, + $custom_droplist = $("#custom-droptable"), + example_dropzone = $("#customDZ").dropzone({ + url: 'data/media-file.php', + + // Events + addedfile: function(file) { + if (i == 1) { + $custom_droplist.find('tbody').html(''); + } + + var size = parseInt(file.size / 1024, 10); + size = size < 1024 ? (size + " KB") : (parseInt(size / 1024, 10) + " MB"); + + var $el = $('\ + ' + (i++) + '\ + ' + file.name + '\ +
    \ + ' + size + '\ + '); + + $custom_droplist.find('tbody').append($el); + file.fileEntryTd = $el; + file.progressBar = $el.find('.progress-bar'); + }, + + uploadprogress: function(file, progress, bytesSent) { + file.progressBar.width(progress + '%'); + $('.custom-dropzone .drop-table').perfectScrollbar({ + suppressScrollX: true + }); + }, + + success: function(file) { + file.progressBar.removeClass('progress-bar-warning').addClass('progress-bar-success'); + }, + + error: function(file) { + file.progressBar.removeClass('progress-bar-warning').addClass('progress-bar-red'); + } + }); + + } + + }; + + + /*-------------------------------- + Other Form component Scripts + --------------------------------*/ + ULTRA_SETTINGS.otherScripts = function() { + + + + /*--------------------------------*/ + + + if ($.isFunction($.fn.autosize)) { + $(".autogrow").autosize(); + } + + /*--------------------------------*/ + + + + + // Input Mask + if ($.isFunction($.fn.inputmask)) { + $("[data-mask]").each(function(i, el) { + var $this = $(el), + mask = $this.data('mask').toString(), + opts = { + numericInput: getValue($this, 'numeric', false), + radixPoint: getValue($this, 'radixPoint', ''), + rightAlign: getValue($this, 'numericAlign', 'left') == 'right' + }, + placeholder = getValue($this, 'placeholder', ''), + is_regex = getValue($this, 'isRegex', ''); + + if (placeholder.length) { + opts[placeholder] = placeholder; + } + + + if (mask.toLowerCase() == "phone") { + mask = "(999) 999-9999"; + } + + if (mask.toLowerCase() == "email") { + mask = 'Regex'; + opts.regex = "[a-zA-Z0-9._%-]+@[a-zA-Z0-9-]+\\.[a-zA-Z]{2,4}"; + } + + if (mask.toLowerCase() == "fdecimal") { + mask = 'decimal'; + $.extend(opts, { + autoGroup: true, + groupSize: 3, + radixPoint: getValue($this, 'rad', '.'), + groupSeparator: getValue($this, 'dec', ',') + }); + } + + + if (mask.toLowerCase() == "currency" || mask.toLowerCase() == "rcurrency") { + + var sign = getValue($this, 'sign', '$');; + + mask = "999,999,999.99"; + if (mask.toLowerCase() == 'rcurrency') { + mask += ' ' + sign; + } else { + mask = sign + ' ' + mask; + } + + opts.numericInput = true; + opts.rightAlignNumerics = false; + opts.radixPoint = '.'; + + } + + if (is_regex) { + opts.regex = mask; + mask = 'Regex'; + } + + $this.inputmask(mask, opts); + }); + } + + + /*---------------------------------*/ + + // autoNumeric + if ($.isFunction($.fn.autoNumeric)) { + $('.autoNumeric').autoNumeric('init'); + } + + /*---------------------------------*/ + + // Slider + if ($.isFunction($.fn.slider)) { + $(".slider").each(function(i, el) { + var $this = $(el), + $label_1 = $(''), + $label_2 = $label_1.clone(), + + orientation = getValue($this, 'vertical', 0) != 0 ? 'vertical' : 'horizontal', + + prefix = getValue($this, 'prefix', ''), + postfix = getValue($this, 'postfix', ''), + + fill = getValue($this, 'fill', ''), + $fill = $(fill), + + step = getValue($this, 'step', 1), + value = getValue($this, 'value', 5), + min = getValue($this, 'min', 0), + max = getValue($this, 'max', 100), + min_val = getValue($this, 'min-val', 10), + max_val = getValue($this, 'max-val', 90), + + is_range = $this.is('[data-min-val]') || $this.is('[data-max-val]'), + + reps = 0; + + + // Range Slider Options + if (is_range) { + $this.slider({ + range: true, + orientation: orientation, + min: min, + max: max, + values: [min_val, max_val], + step: step, + slide: function(e, ui) { + var min_val = (prefix ? prefix : '') + ui.values[0] + (postfix ? postfix : ''), + max_val = (prefix ? prefix : '') + ui.values[1] + (postfix ? postfix : ''); + + $label_1.html(min_val); + $label_2.html(max_val); + + if (fill) + $fill.val(min_val + ',' + max_val); + + reps++; + }, + change: function(ev, ui) { + if (reps == 1) { + var min_val = (prefix ? prefix : '') + ui.values[0] + (postfix ? postfix : ''), + max_val = (prefix ? prefix : '') + ui.values[1] + (postfix ? postfix : ''); + + $label_1.html(min_val); + $label_2.html(max_val); + + if (fill) + $fill.val(min_val + ',' + max_val); + } + + reps = 0; + } + }); + + var $handles = $this.find('.ui-slider-handle'); + + $label_1.html((prefix ? prefix : '') + min_val + (postfix ? postfix : '')); + $handles.first().append($label_1); + + $label_2.html((prefix ? prefix : '') + max_val + (postfix ? postfix : '')); + $handles.last().append($label_2); + } + // Normal Slider + else { + + $this.slider({ + range: getValue($this, 'basic', 0) ? false : "min", + orientation: orientation, + min: min, + max: max, + value: value, + step: step, + slide: function(ev, ui) { + var val = (prefix ? prefix : '') + ui.value + (postfix ? postfix : ''); + + $label_1.html(val); + + + if (fill) + $fill.val(val); + + reps++; + }, + change: function(ev, ui) { + if (reps == 1) { + var val = (prefix ? prefix : '') + ui.value + (postfix ? postfix : ''); + + $label_1.html(val); + + if (fill) + $fill.val(val); + } + + reps = 0; + } + }); + + var $handles = $this.find('.ui-slider-handle'); + //$fill = $('
    '); + + $label_1.html((prefix ? prefix : '') + value + (postfix ? postfix : '')); + $handles.html($label_1); + + //$handles.parent().prepend( $fill ); + + //$fill.width($handles.get(0).style.left); + } + + }) + } + + + + /*------------- Color Slider widget---------------*/ + + function hexFromRGB(r, g, b) { + var hex = [ + r.toString(16), + g.toString(16), + b.toString(16) + ]; + $.each(hex, function(nr, val) { + if (val.length === 1) { + hex[nr] = "0" + val; + } + }); + return hex.join("").toUpperCase(); + } + + function refreshSwatch() { + var red = $("#slider-red").slider("value"), + green = $("#slider-green").slider("value"), + blue = $("#slider-blue").slider("value"), + hex = hexFromRGB(red, green, blue); + $("#slider-swatch").css("background-color", "#" + hex); + } + + + if ($.isFunction($.fn.slider)) { + + $(function() { + $("#slider-red, #slider-green, #slider-blue").slider({ + orientation: "horizontal", + range: "min", + max: 255, + value: 127, + slide: refreshSwatch, + change: refreshSwatch + }); + $("#slider-red").slider("value", 235); + $("#slider-green").slider("value", 70); + $("#slider-blue").slider("value", 60); + }); + } + + + + /*-------------------------------------*/ + + /*--------------------------------*/ + + + // Spinner + if ($.isFunction($.fn.spinner)) { + + $( "#spinner" ).spinner(); + + $( "#spinner2" ).spinner({ + min: 5, + max: 2500, + step: 25, + start: 1000, + numberFormat: "C" + }); + + + $( "#spinner3" ).spinner({ + spin: function( event, ui ) { + if ( ui.value > 10 ) { + $( this ).spinner( "value", -10 ); + return false; + } else if ( ui.value < -10 ) { + $( this ).spinner( "value", 10 ); + return false; + } + } + }); +} + /*------------------------------------*/ + + // tagsinput + if ($.isFunction($.fn.tagsinput)) { + + // categorize tags input + var i = -1, + colors = ['primary', 'info', 'warning', 'success']; + + colors = shuffleArray(colors); + + $("#tagsinput-2").tagsinput({ + tagClass: function() { + i++; + return "label label-" + colors[i % colors.length]; + } + }); + + + $(".mail_compose_to").tagsinput({ + tagClass: function() { + i++; + return "label label-" + colors[i % colors.length]; + } + }); + + + } + + // Just for demo purpose + function shuffleArray(array) { + for (var i = array.length - 1; i > 0; i--) { + var j = Math.floor(Math.random() * (i + 1)); + var temp = array[i]; + array[i] = array[j]; + array[j] = temp; + } + return array; + } + + /*----------------------------*/ + + + // datepicker + if ($.isFunction($.fn.datepicker)) { + $(".datepicker").each(function(i, e) { + var $this = $(e), + options = { + minViewMode: getValue($this, 'minViewMode', 0), + format: getValue($this, 'format', 'mm/dd/yyyy'), + startDate: getValue($this, 'startDate', ''), + endDate: getValue($this, 'endDate', ''), + daysOfWeekDisabled: getValue($this, 'disabledDays', ''), + startView: getValue($this, 'startView', 0) + }, + $nxt = $this.next(), + $prv = $this.prev(); + + + $this.datepicker(options); + + if ($nxt.is('.input-group-addon') && $nxt.has('a')) { + $nxt.on('click', function(ev) { + ev.preventDefault(); + $this.datepicker('show'); + }); + } + + if ($prv.is('.input-group-addon') && $prv.has('a')) { + $prv.on('click', function(ev) { + ev.preventDefault(); + + $this.datepicker('show'); + }); + } + }); + } + + + + /*-------------------------------------------*/ + + + + // Date Range Picker + if ($.isFunction($.fn.daterangepicker)) { + $(".daterange").each(function(i, e) { + // Change the range as you desire + var ranges = { + 'Today': [moment(), moment()], + 'Yesterday': [moment().subtract('days', 1), moment().subtract('days', 1)], + 'Last 7 Days': [moment().subtract('days', 6), moment()], + 'Last 30 Days': [moment().subtract('days', 29), moment()], + 'This Month': [moment().startOf('month'), moment().endOf('month')], + 'Last Month': [moment().subtract('month', 1).startOf('month'), moment().subtract('month', 1).endOf('month')] + }; + + var $this = $(e), + options = { + format: getValue($this, 'format', 'MM/DD/YYYY'), + timePicker: getValue($this, 'timePicker', false), + timePickerIncrement: getValue($this, 'timePickerIncrement', false), + separator: getValue($this, 'separator', ' - '), + }, + min_date = getValue($this, 'minDate', ''), + max_date = getValue($this, 'maxDate', ''), + start_date = getValue($this, 'startDate', ''), + end_date = getValue($this, 'endDate', ''); + + if ($this.hasClass('add-date-ranges')) { + options['ranges'] = ranges; + } + + if (min_date.length) { + options['minDate'] = min_date; + } + + if (max_date.length) { + options['maxDate'] = max_date; + } + + if (start_date.length) { + options['startDate'] = start_date; + } + + if (end_date.length) { + options['endDate'] = end_date; + } + + + $this.daterangepicker(options, function(start, end) { + var drp = $this.data('daterangepicker'); + + if ($this.hasClass('daterange-text')) { + $this.find('span').html(start.format(drp.format) + drp.separator + end.format(drp.format)); + } + }); + + if (typeof options['ranges'] == 'object') { + $this.data('daterangepicker').container.removeClass('show-calendar'); + } + }); + } + + + + + /*-------------------------------------*/ + + + // Timepicker + if ($.isFunction($.fn.timepicker)) { + $(".timepicker").each(function(i, e) { + var $this = $(e), + options = { + template: getValue($this, 'template', false), + showSeconds: getValue($this, 'showSeconds', false), + defaultTime: getValue($this, 'defaultTime', 'current'), + showMeridian: getValue($this, 'showMeridian', true), + minuteStep: getValue($this, 'minuteStep', 15), + secondStep: getValue($this, 'secondStep', 15) + }, + $nxt = $this.next(), + $prv = $this.prev(); + + $this.timepicker(options); + + if ($nxt.is('.input-group-addon') && $nxt.has('a')) { + $nxt.on('click', function(ev) { + ev.preventDefault(); + + $this.timepicker('showWidget'); + }); + } + + if ($prv.is('.input-group-addon') && $prv.has('a')) { + $prv.on('click', function(ev) { + ev.preventDefault(); + + $this.timepicker('showWidget'); + }); + } + }); + } + + + + /*-------------------------------------*/ + + + // DateTimepicker + if ($.isFunction($.fn.datetimepicker)) { + + $('.form_datetime').datetimepicker({ + //language: 'fr', + format: "yyyy-mm-dd hh:ii", + weekStart: 1, + todayBtn: 1, + autoclose: 1, + todayHighlight: 1, + startView: 2, + forceParse: 0, + showMeridian: 0 + }); + + + $('.form_datetime_meridian').datetimepicker({ + //language: 'fr', + format: "dd MM yyyy - hh:ii", + weekStart: 1, + todayBtn: 1, + autoclose: 1, + todayHighlight: 1, + startView: 2, + forceParse: 0, + showMeridian: 1 + }); + + + $('.form_datetime_lang').datetimepicker({ + language: 'fr', + format: "yyyy-mm-dd hh:ii", + weekStart: 1, + todayBtn: 1, + autoclose: 1, + todayHighlight: 1, + startView: 2, + forceParse: 0, + showMeridian: 0 + }); + + + /* $('.form_date').datetimepicker({ + weekStart: 1, + todayBtn: 1, + autoclose: 1, + todayHighlight: 1, + startView: 2, + minView: 2, + forceParse: 0 + }); + $('.form_time').datetimepicker({ + //language: 'fr', + weekStart: 1, + todayBtn: 1, + autoclose: 1, + todayHighlight: 1, + startView: 1, + minView: 0, + maxView: 1, + forceParse: 0 + });*/ + + } + + /*-------------------------------------*/ + + + + + + // Colorpicker + if ($.isFunction($.fn.colorpicker)) { + $(".colorpicker").each(function(i, e) { + var $this = $(e), + options = {}, + $nxt = $this.next(), + $prv = $this.prev(), + $view = $this.siblings('.input-group-addon').find('.sel-color'); + + $this.colorpicker(options); + + if ($nxt.is('.input-group-addon') && $nxt.has('a')) { + $nxt.on('click', function(ev) { + ev.preventDefault(); + + $this.colorpicker('show'); + }); + } + + if ($prv.is('.input-group-addon') && $prv.has('a')) { + $prv.on('click', function(ev) { + ev.preventDefault(); + + $this.colorpicker('show'); + }); + } + + if ($view.length) { + $this.on('changeColor', function(ev) { + + $view.css('background-color', ev.color.toHex()); + }); + + if ($this.val().length) { + $view.css('background-color', $this.val()); + } + } + }); + } + + + /*--------------------------------------*/ + + + // select2 + if ($.isFunction($.fn.select2)) { + + $("#s2example-1").select2({ + placeholder: 'Select your country...', + allowClear: true + }).on('select2-open', function() { + // Adding Custom Scrollbar + $(this).data('select2').results.addClass('overflow-hidden').perfectScrollbar(); + }); + + + $("#s2example-2").select2({ + placeholder: 'Choose your favorite US Countries', + allowClear: true + }).on('select2-open', function() { + // Adding Custom Scrollbar + $(this).data('select2').results.addClass('overflow-hidden').perfectScrollbar(); + }); + + + $("#s2example-4").select2({ + minimumInputLength: 1, + placeholder: 'Search', + ajax: { + url: "data/select2-remote-data.php", + dataType: 'json', + quietMillis: 100, + data: function(term, page) { + return { + limit: -1, + q: term + }; + }, + results: function(data, page) { + return { + results: data + } + } + }, + formatResult: function(student) { + return "
    " + student.name + "
    "; + }, + formatSelection: function(student) { + return student.name; + } + + }); + } + /*------------------------------------*/ + + + + + //multiselect start + + if ($.isFunction($.fn.multiSelect)) { + + $('#my_multi_select1').multiSelect(); + $('#my_multi_select2').multiSelect({ + selectableOptgroup: true + }); + + $('#my_multi_select3').multiSelect({ + selectableHeader: "", + selectionHeader: "", + afterInit: function(ms) { + var that = this, + $selectableSearch = that.$selectableUl.prev(), + $selectionSearch = that.$selectionUl.prev(), + selectableSearchString = '#' + that.$container.attr('id') + ' .ms-elem-selectable:not(.ms-selected)', + selectionSearchString = '#' + that.$container.attr('id') + ' .ms-elem-selection.ms-selected'; + + that.qs1 = $selectableSearch.quicksearch(selectableSearchString) + .on('keydown', function(e) { + if (e.which === 40) { + that.$selectableUl.focus(); + return false; + } + }); + + that.qs2 = $selectionSearch.quicksearch(selectionSearchString) + .on('keydown', function(e) { + if (e.which == 40) { + that.$selectionUl.focus(); + return false; + } + }); + }, + afterSelect: function() { + this.qs1.cache(); + this.qs2.cache(); + }, + afterDeselect: function() { + this.qs1.cache(); + this.qs2.cache(); + } + }); + + } + //multiselect end + + + + + + + + + + /*---------------------------------------*/ + + + if ($.isFunction($.fn.typeahead)) { + + // basic typeahead + + var substringMatcher = function(strs) { + return function findMatches(q, cb) { + var matches, substrRegex; + + // an array that will be populated with substring matches + matches = []; + + // regex used to determine if a string contains the substring `q` + substrRegex = new RegExp(q, 'i'); + + // iterate through the pool of strings and for any string that + // contains the substring `q`, add it to the `matches` array + $.each(strs, function(i, str) { + if (substrRegex.test(str)) { + // the typeahead jQuery plugin expects suggestions to a + // JavaScript object, refer to typeahead docs for more info + matches.push({ + value: str + }); + } + }); + + cb(matches); + }; + }; + + var states = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', + 'Colorado', 'Connecticut', 'Delaware', 'Florida', 'Georgia', 'Hawaii', + 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana', + 'Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota', + 'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire', + 'New Jersey', 'New Mexico', 'New York', 'North Carolina', 'North Dakota', + 'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode Island', + 'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont', + 'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming' + ]; + + $('#typeahead-1').typeahead({ + hint: true, + highlight: true, + minLength: 1 + }, { + name: 'states', + displayKey: 'value', + source: substringMatcher(states) + }); + + + + // prefetch typeahead + + var names = new Bloodhound({ + datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'), + queryTokenizer: Bloodhound.tokenizers.whitespace, + limit: 10, + prefetch: { + url: 'data/names.json', + filter: function(list) { + return $.map(list, function(name) { + return { + name: name + }; + }); + } + } + }); + + names.initialize(); + + $('#typeahead-2').typeahead(null, { + name: 'names', + displayKey: 'name', + source: names.ttAdapter() + }); + + + // remote data + + + var name_randomizer = new Bloodhound({ + datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'), + queryTokenizer: Bloodhound.tokenizers.whitespace, + // You can also prefetch suggestions + // prefetch: 'data/typeahead-generate.php', + remote: 'data/typeahead-generate.php?q=%QUERY' + }); + + name_randomizer.initialize(); + + $('#typeahead-3').typeahead({ + hint: true, + highlight: true + }, { + name: 'string-randomizer', + displayKey: 'value', + source: name_randomizer.ttAdapter() + }); + + + // templating + + var oscar_movies = new Bloodhound({ + datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'), + queryTokenizer: Bloodhound.tokenizers.whitespace, + remote: 'data/typeahead-hp-movies.php?q=%QUERY' + }); + + oscar_movies.initialize(); + + $('#typeahead-4').typeahead(null, { + name: 'oscar-movies', + displayKey: 'value', + source: oscar_movies.ttAdapter(), + templates: { + empty: [ + '
    ', + 'We cannot find this movie title', + '
    ' + ].join('\n'), + suggestion: Handlebars.compile('
    {{value}} — {{year}}
    ') + } + }) + .bind('typeahead:opened', function() { + $(this).data('ttTypeahead').dropdown.$menu.addClass('overflow-hidden').perfectScrollbar(); + }) + .on('keyup', function() { + $(this).data('ttTypeahead').dropdown.$menu.perfectScrollbar('update'); + }); + + } + /*------------------------------------*/ + + + + /*------------------------------------------*/ + + }; + + + + /*-------------------------------- + Widgets + --------------------------------*/ + ULTRA_SETTINGS.ultraWidgets = function() { + + /*notification widget*/ + var notif_widget = $(".notification-widget").height(); + $('.notification-widget').height(notif_widget).perfectScrollbar({ + suppressScrollX: true + }); + + }; + + + + /*-------------------------------- + weather widget + --------------------------------*/ + ULTRA_SETTINGS.ultraWidgetWeather = function() { + + /*notification widget*/ + /*var wid = $(".wid-weather"); + var notif_widget = $(".notification-widget").height(); + $('.notification-widget').height(notif_widget).perfectScrollbar({suppressScrollX: true}); + + $('.wid-weather').each( function () { + var days = $(this).find(".weekdays"); + var today = $(this).find(".today"); + + var height = days.height(); + if(days.height() < today.height()){ + height = today.height(); + } + + days.height(height); + today.height(height); + });*/ + + + $('.wid-weather .weekdays ul').perfectScrollbar({ + suppressScrollX: true + }); + + + }; + + + + + + /*-------------------------------- + To Do Task Widget + --------------------------------*/ + ULTRA_SETTINGS.ultraToDoWidget = function() { + + /*todo task widget*/ + $(".icheck-minimal-white.todo-task").on('ifChecked', function(event) { + $(this).parent().parent().addClass("checked"); + }); + $(".icheck-minimal-white.todo-task").on('ifUnchecked', function(event) { + $(this).parent().parent().removeClass("checked"); + }); + + $(".wid-all-tasks ul").perfectScrollbar({ + suppressScrollX: true + }); + + }; + + + + /*-------------------------------- + To Do Add Task Widget + --------------------------------*/ + ULTRA_SETTINGS.ultraToDoAddTaskWidget = function() { + + $(".wid-add-task input").on('keypress', function(e) { + if (e.keyCode == 13) { + var i = Math.random().toString(36).substring(7); + var msg = $(this).val(); + var msg = '
  • '; + $(this).parent().parent().find(".wid-all-tasks ul").append(msg); + $(this).val(""); + $(this).focus(); + ULTRA_SETTINGS.iCheck(); + ULTRA_SETTINGS.ultraToDoWidget(); + $(this).parent().parent().find(".wid-all-tasks ul").perfectScrollbar('update'); + } + }); + + }; + + + + + + + + /*-------------------------------- + Vector maps + --------------------------------*/ + ULTRA_SETTINGS.dbjvectorMap = function() { + + if ($.isFunction($.fn.vectorMap)) { + //@code_start + $(function() { + $('#db-world-map-markers').vectorMap({ + map: 'world_mill_en', + scaleColors: ['#1fb5ac', '#1fb5ac'], + normalizeFunction: 'polynomial', + hoverOpacity: 0.7, + hoverColor: false, + regionsSelectable: true, + markersSelectable: true, + markersSelectableOne: true, + updateSize: true, + onRegionOver: function(event, code) { + //console.log('region-over', code); + }, + onRegionOut: function(event, code) { + //console.log('region-out', code); + }, + onRegionClick: function(event, code) { + //console.log('region-click', code); + }, + onRegionSelected: function(event, code, isSelected, selectedRegions) { + //console.log('region-select', code, isSelected, selectedRegions); + if (window.localStorage) { + window.localStorage.setItem( + 'jvectormap-selected-regions', + JSON.stringify(selectedRegions) + ); + } + }, + + panOnDrag: true, + + focusOn: { + x: 0.5, + y: 0.5, + scale: 1.2, + animate: true + }, + + + regionStyle: { + initial: { + fill: '#aaaaaa', + 'fill-opacity': 1, + stroke: 'false', + 'stroke-width': 0, + 'stroke-opacity': 1 + }, + hover: { + fill: '#1fb5ac', + 'fill-opacity': 1, + cursor: 'pointer' + }, + selected: { + fill: '#1fb5ac' + }, + selectedHover: {} + }, + + + + markerStyle: { + initial: { + fill: '#fa8564', + stroke: '#ffffff', + r: 5 + }, + hover: { + stroke: '#FDB45C', + "stroke-width": 2, + cursor: 'pointer' + }, + selected: { + fill: '#FDB45C', + "stroke-width": 0, + }, + }, + backgroundColor: '#ffffff', + markers: [{ + latLng: [41.90, 12.45], + name: 'Vatican City' + }, { + latLng: [43.73, 7.41], + name: 'Monaco' + }, { + latLng: [-0.52, 166.93], + name: 'Nauru' + }, { + latLng: [-8.51, 179.21], + name: 'Tuvalu' + }, { + latLng: [43.93, 12.46], + name: 'San Marino' + }, { + latLng: [47.14, 9.52], + name: 'Liechtenstein' + }, { + latLng: [7.11, 171.06], + name: 'Marshall Islands' + }, { + latLng: [17.3, -62.73], + name: 'Saint Kitts and Nevis' + }, { + latLng: [3.2, 73.22], + name: 'Maldives' + }, { + latLng: [35.88, 14.5], + name: 'Malta' + }, { + latLng: [12.05, -61.75], + name: 'Grenada' + }, { + latLng: [13.16, -61.23], + name: 'Saint Vincent and the Grenadines' + }, { + latLng: [13.16, -59.55], + name: 'Barbados' + }, { + latLng: [17.11, -61.85], + name: 'Antigua and Barbuda' + }, { + latLng: [-4.61, 55.45], + name: 'Seychelles' + }, { + latLng: [7.35, 134.46], + name: 'Palau' + }, { + latLng: [42.5, 1.51], + name: 'Andorra' + }, { + latLng: [14.01, -60.98], + name: 'Saint Lucia' + }, { + latLng: [6.91, 158.18], + name: 'Federated States of Micronesia' + }, { + latLng: [1.3, 103.8], + name: 'Singapore' + }, { + latLng: [1.46, 173.03], + name: 'Kiribati' + }, { + latLng: [-21.13, -175.2], + name: 'Tonga' + }, { + latLng: [15.3, -61.38], + name: 'Dominica' + }, { + latLng: [-20.2, 57.5], + name: 'Mauritius' + }, { + latLng: [26.02, 50.55], + name: 'Bahrain' + }, { + latLng: [0.33, 6.73], + name: 'São Tomé and Príncipe' + }] + }); + }); + //@code_end + } + + }; + + + + + /*-------------------------------- + Sparkline Chart - Widgets + --------------------------------*/ + ULTRA_SETTINGS.widgetSparklineChart = function() { + + if ($.isFunction($.fn.sparkline)) { + + $('.wid_dynamicbar').sparkline([8.4, 9, 8.8, 8, 9.5, 9.2, 9.9, 9, 9, 8, 7, 8, 9, 8, 7, 9, 9, 9.5, 8, 9.5, 9.8], { + type: 'bar', + barColor: '#f5f5f5', + height: '60', + barWidth: '12', + barSpacing: 1, + }); + + $('.wid_linesparkline').sparkline([2000, 3454, 5454, 2323, 3432, 4656, 2897, 3545, 4232, 4656, 2897, 3545, 4232, 5434, 4656, 3567, 4878, 3676, 3787], { + type: 'line', + width: '100%', + height: '60', + lineWidth: 2, + lineColor: '#f5f5f5', + fillColor: 'rgba(255,255,255,0.2)', + highlightSpotColor: '#ffffff', + highlightLineColor: '#ffffff', + spotRadius: 3, + }); + + + // Bar + line composite charts + $('.wid_compositebar').sparkline([4, 6, 7, 7, 4, 3, 2, 4, 6, 7, 7, 8, 8, 4, 4, 3, 1, 4, 6, 5, 9], { + type: 'bar', + barColor: '#f5f5f5', + height: '60', + barWidth: '12', + barSpacing: 1, + }); + + $('.wid_compositebar').sparkline([4, 1, 5, 7, 9, 9, 8, 8, 4, 7, 8, 4, 7, 9, 9, 8, 8, 4, 2, 5, 6, 7], { + composite: true, + fillColor: 'rgba(153,114,181,0)', + type: 'line', + width: '100%', + height: '40', + lineWidth: 2, + lineColor: '#9972b5', + highlightSpotColor: '#fa8564', + highlightLineColor: '#9972b5', + spotRadius: 3, + }); + + + + } + + }; + + + + + + + + + // Element Attribute Helper + function getValue($el, data_var, default_val) { + if (typeof $el.data(data_var) != 'undefined') { + return $el.data(data_var); + } + + return default_val; + } + + + /****************************** + initialize respective scripts + *****************************/ + $(document).ready(function() { + ULTRA_SETTINGS.windowBasedLayout(); + ULTRA_SETTINGS.mainmenuScroll(); + ULTRA_SETTINGS.mainMenu(); + ULTRA_SETTINGS.mainmenuCollapsed(); + ULTRA_SETTINGS.pageTopBar(); + ULTRA_SETTINGS.otherScripts(); + ULTRA_SETTINGS.iCheck(); + ULTRA_SETTINGS.customDropZone(); + ULTRA_SETTINGS.formEditors(); + ULTRA_SETTINGS.extraFormSettings(); + ULTRA_SETTINGS.tooltipsPopovers(); + ULTRA_SETTINGS.nestableList(); + ULTRA_SETTINGS.uiCalendar(); + ULTRA_SETTINGS.tocifyScrollMenu(); + ULTRA_SETTINGS.loadPrettyPhoto(); + ULTRA_SETTINGS.jvectorMaps(); + ULTRA_SETTINGS.dataTablesInit(); + ULTRA_SETTINGS.jsTreeINIT(); + ULTRA_SETTINGS.breadcrumbAutoHidden(); + ULTRA_SETTINGS.chatAPI(); + ULTRA_SETTINGS.chatApiScroll(); + ULTRA_SETTINGS.chatApiWindow(); + ULTRA_SETTINGS.mailboxInbox(); + ULTRA_SETTINGS.ultraWidgets(); + ULTRA_SETTINGS.sectionBoxActions(); + ULTRA_SETTINGS.draggablePanels(); + ULTRA_SETTINGS.viewportElement(); + ULTRA_SETTINGS.searchPage(); + ULTRA_SETTINGS.ultraToDoAddTaskWidget(); + ULTRA_SETTINGS.ultraToDoWidget(); + ULTRA_SETTINGS.dbjvectorMap(); + ULTRA_SETTINGS.widgetSparklineChart(); + ULTRA_SETTINGS.ultraWidgetWeather(); + }); + + $(window).resize(function() { + ULTRA_SETTINGS.windowBasedLayout(); + //ULTRA_SETTINGS.mainmenuScroll(); + //ULTRA_SETTINGS.ultraWidgetWeather(); + ULTRA_SETTINGS.isotopeGallery(); + ULTRA_SETTINGS.loginPage(); + ULTRA_SETTINGS.widgetSparklineChart(); + }); + + $(window).load(function() { + ULTRA_SETTINGS.isotopeGallery(); + ULTRA_SETTINGS.loginPage(); + }); + +}); diff --git a/static/media/cover/20181201110659913.PNG b/static/media/cover/20181201110659913.PNG new file mode 100644 index 0000000000000000000000000000000000000000..7c28870b0e50c08a7cf68f75bf18ec8416859610 GIT binary patch literal 38731 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 literal 0 HcmV?d00001 diff --git a/static/media/cover/weixin_T3Y4A36.png b/static/media/cover/weixin_T3Y4A36.png new file mode 100644 index 0000000000000000000000000000000000000000..a053b349942154adf0078ca89ac5ead35075d8ec GIT binary patch literal 7561 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 literal 0 HcmV?d00001 diff --git a/static/media/cover/weixin_TC0D6fQ.png b/static/media/cover/weixin_TC0D6fQ.png new file mode 100644 index 0000000000000000000000000000000000000000..a053b349942154adf0078ca89ac5ead35075d8ec GIT binary patch literal 7561 zcmcgx2T+sQw+|h$P^5zp0!R&kBoKNHO`24}f`lYMFp!XhDk3OI2SF5RN=Fb;5D}zG zucD$WNR=W>2Q^Cf1$5orH@owH^WMzM%vbKYzwNWDL_}OJI-4Rv{Ks$0^%@Qpi{~giWWoztOw2{h=jEbva~}7T|ld0 zKswq$%>Z>8ffts70tR^Dy~*kUTA+Pib=v!$7y<(BLns%tKze%yfsPg@fd&K;7O1SC z0!Ayrp+JP1f|81&8Wb)Mgeoc_Ac_cx5)7=Uq^_u<4pRgE{DElJNEkPD8>G=sTeOiD z$b&*5szV_D{{9O7Fa-k19ipVBrUp@jLZDDE4FM(xdQ(sVU~jVc9}Gw=8BM|wDL8^R zaE}q?O7Nv$0ALqDuHMf^{78|5yaUMZ`pAmMsOP!$ByP*Gn+#Q>qEuLM(t>BH2JDsTfM5D53N1_V5TWI@1SwLq}H%1sRnPLc?2I6Q3v1l&uvy6K+&DIA94 zp#@TbEB;k#j`eom6T?+$?(Tz6?yWa%2a<4TQ*R2EL?qF6<6g;YfuKJjwkR(m9!oxn zC7r|tVDbA7?CU!2)hgci2O0r|DE(A$`WN}1Vta2KEl`?)y+v0yq}?2_B=WvhMJSZU zvoGI|*_PIBXtAj%E5nq3%J`{zGR!%6*mnDW|_o?MF&mMs))c7Dd4#X&23~ zB2*EqhyX+3c8Y51icod9vYeu-x*{!Cdr(@Mac+VC1XY5n!(e}d(z1m?QBeO0yw?Kv zYt;ltrVvPhKbw>-*5~IN9tYfS5$Y)Pk9?9*epn3Xrx5oKHL0wOQAQ|1;b1out$n${ z;V>`?p^5@4VquC{v>F11hSC!JgVf&xySJc!3;S=e{D6@OZWMnM39IK$+f9Eo;{6KQ z>j*#t1EBONoHvHxPnP+E8SR1ccE{4%KLiB%w@}aoZ$B)F@@F_i6bVJEIogtIf!s(0 zFW`@o_atK7ffT~e(cT95S4s?)g!@Z={z~}E8t{Kd{T~zmKWhg6&xwcZeW8Ao6Xd^F z+K(~vN6L)$@=d1Dz7OjEm#W&+r*+w1efK|ixF0qN|C{c(R|fkXM;}Mo>q9>}(m(7W zZB@UuPq%H*H6dXeXaEw`&gp zfTQ!KNIkoN%=*m0l=Fr+J9M7T*MB<`biRU`%-AW?%*)DgD^yVyXnahGehNDOTrF=Z zQ(U1sUfo;O*xE-eYU+^pz0f0S^VX^yilqnWxWdB2<-_v_vM9-x{?E3a)_$Wbj+%`m9?+lyZQ;fqaDp}tM2 z0aLdDT{c^Y38x7m-5p1Dp@ZTIj3RUm2h9bm`J*M_yVoZ<)1$cz0hrK!1}pj%elMv! zY%91)b|N`Xj*;O-c6lglLVj}5V@^Y$mtmPDq!(pDX;vLNWzRlxqzAuFrD6vs4Vm zUOI6)7s&KR_Hf}fHRaD9RLcSdTdP8l!Ndk5e`ajg%%?B2pB7b);S-*gH(nIo7|{#o z@9()Xd(t{i=zgbQD>NCqWy$q+>zS&xQ7_L;o!P4+r7t7wzWfFS5BE+M$JSup^Hjch z`trKB#DXjkAfG+KI5{oeKz}-y|CozaStQ@Hs!w*qg3fcncShTeRhQF70(q2 zV68q9uuk<3IY*U|eIUDOQo2^!Y1nJhKk3!C;yQ%mgDDS$O5F@Uoo#Y}NAdygP_(&X zJ0OPqlE9tEeEyIOlk)W<~&wI9DFs+&wM`;Jl-J~tEzY73C!UOfN)%?)ktJE zW0&}<^QOmx=sM$P_-{izA(DtEAt@I=I$NBp!b`{kl~m8{9`Y1E0R_Mw?b`QHnK@id z^D9$^0gHY96|Pe|+dji9Lkmmd3s{bUt1)dxX`fn*;w_VBDscHi_<{Hbt=G^of}FxS z2hT0{eHP>;_SBr8oF6CyfzvRWhYmGMe7~UtV!dKo$zs#s(QT;9OwiJ|bO_?f)S#Z_ zeFK?p+8xEmAacU2j(_2=tubJVF1RQfZAF$BcZ1xGE!w@#HBoF8y$Vy19}C_n?pc3b za~^Hkb~ZD*d*Bi%dqThPtvSkRK+?lKUAaDkb(`zX=j2rJm^kO2%9Ng+7W?-DnSnnT|0RC#pKC`*7wVY?KI4^ zqoTaRMK7XXRlCz?grz2wJ+dW~7J6*;NE*LdU_a6}+IYtAJr7K$W}3Ic$0C=hdmu#G zF7hQ@a1vgQ#1OM2;t~L_LJMy2iC=oOIiU_!vBJt&c(mgK&oXW^|1K2tDh1#9!3HEc zqf_;0Ew13M;}^A(vxft}Pbj@%XEorIZfD9>6%kGmF}`>BL9B8ie=65Ubv>V}zPB`! zmLgI*EZpl8drm93+`U`mu@unTfopo2(BP3VhG0^@A}Ch*s*)nJKFY_p4+C2Yqi zr{}av$5!4No-!Edf@lo*baAA9Lt(e-0=O^DVZNk<4slOAagtt=?Mqv|=A#dKAzv4* zstFy0xj8u~;k9t);k8vd4$U}5)+pkN5ENpulSuSwc0X zfdb0A<(3mo=1Tm#vk{_e1ALdwGZtM^zsp`;IBlBshGe-D7$p!e4qZRhtR!=4mdpKv)hOve94T~CvhJ$DTD zxrmtUF1n;u8|hV~nrZaq+sE}Y9pbI_Vz?V9(q$Mm!l=s6OVCG8jnOt-?(}$Xv2xMT z8k-uo-rfKW;)^D}DUHY#*KOD8V4s%eTZQSz--t%b(?x8~2jOMnJt3Yktv=D*+A?Q+ zg=>vXH=O1NUF29d2*QAUy#&V8IPg7j-v#+N7UJBAC-8*-~T*XKabN4P}x zyHuqY7U#@gW)##88juYRzI$;|$}<72cI*7EKNBs2Gn;pA>IM%uHX;(EG;d%@UbRYoFts3H*`%DUY~$ z;v7$Kk)4+WW)xe7(HnUv01NnouhI?<7S!mY#9zJtqIlqH~ z_A>9@SP!!*uz=Y=&c}#F*g;s#vM58AHtAw{Y0xbz?`zVZcq4b7L|Sv#->Y~Q(*)zF zc}LJH<4_SDY+``y-c+vr?R8OoCHyIAD6=Q+oK~u>Y@sdsG1lJG2WN0M_SLdxR?Rtl z7Xf46@fg4G9;v;o%OKj%9Mzp|kG?)Ngh&m2@QEXx7!=ZOhB}#P$~cJ(uFviGVJAgrc zig6tHtf~_-**F+N6zb_;=Nr>mF!H>AT=Zh245Uqr(Fved=eGlF*><7(e1VT>zwmbC zTQ|Y6d_ntb(dKP#dyWgC#^HxF;LzrA4Fqu^@4OqT%_(?Fw4tBr#zSP5@tEiqtc}&@S!hWG zW&Y+!(1&+5)g+}$?~R`Ki+d)f9d!+tj^j}@^Z7pzx08;)e~-d{!Es|gPqT5> zR6DpU5@%wi&tQ19r9>T+&z-89qss})K5aB%Y;u52_fVT^;yvN#9870rjcmJ9VsOE$ zb%`hQsMFhHAMkCJS%H@Z_!ujE02j9|s@-2UPrqN35PNx+Xu>%9y6@?ox_I*GS)Zwq zj8#){2Soz`kuYD8MBmcsD&KL;Oj#qxN3%=^gedx2PP@#~hF`u3jGrjh?Wvn5Jxm=mLz`L!Xmm=VYXp6!chY0BeEe}_ITgiRO``hy9iM)5M5swq% zD`Nvj>Sshk8ZR;V9`8$k(ILi;IKLg3aA(t!+n3l<`t37vD{s+PV{MuhEXgb_?UGs0 zY*+5~{d7nzHMMI*R!{T9VNj?j3o=*psW14mRDbppH_r0D9B3TX^MeZ|v^j^~w=9AU zk=9Th+t6UpF;Y^3%*lJ~kC1tgd!op?vnk;$OOntSG(r5f%~0paN3t|h=420t4g@M8 z1XShBbX$v?*`+p4)+D^;NI`StVIl+*MYLKkEY+%Bn%B2U)>}0`>-Tw{kGQnBK>Hk% zo~6naI=3e~nMI-)85KTieJ;z<9&L60>Qj=|qtmxFp>$*%5NEwQky!{^%L7PVOFlM@ zd?nsRJCuen-dX?R3GvsYUec~zl!(=S93|OtzC=Nmd=Ow zP|e0Vaz75p;O-0*$rq@fgY{;I2g~*+xA&}%8TwYvs^8Ya(Sdous_}^jcm#z#$+|r5 z?|O4BgP(OC-Q+-KzjT*g+2yyVKWuH=+|zW>4>le=U%NQkNaq@5c3mfWC`Vdgw!Fw6 z;d%Jr1xuEx4_&NbDsEf|Z$kE-{vKIq9L_p{3nR55!orOg4q(YdUOYY-}GLpPl>Kap3CjtGr_e zDwz4~vnD_+ z{Iseo`&4{b3(mE4hHaGcZKcJ=&?CG_#<1T@smUQZyi_mhcyCmkq{;~k$F3o8EK8mT zK&2`m02pIHbOhm>v4Akg6oI)pRZ`u^Q%=nUcs%8W9N6<1 zY8qXM1N*zM>$fWg@*@gh3aERN;P>=a%V*lGs)7@xzLjB&$9ccvgbch~*-<%&jP#g8 z8ElXV=67q1OLr3hhD6WjZKY%1gfHD`vF!}cUS({}Vpv&+G!;cI=;ndQo`nN;Zx2~U z!7%?(>#E@PLo=3EET`Hxpiw{sub`O2Z= z=&Nx*#%dt@?bTks^=jb5ZtLGVjwFwK6z8ak>NLvVhBs_RT{#gKV_?_qbU6JGZ>05A zU*0MCTwa~3b<2BkO$eFgK@uN?q8Y&wKGuqzX1n4mvi`_*v|h7n7A0%pm1YXiJgv}F zer=dtRkp(f`3SlhT1KDbBW$iwk)AU=+|H*G9KRH~n*dRYksIcjO4d8I+#aSseRF;1 z>-g%xF&)tOpqaYmhh7){Ps0YH>J%J67-%}Kb^J+yJb$M$LmS`S7x!XkpL)4DR7DiN zcaY$U0%#oh)Et)1mBYLKcD}ay!IFb!iD@lBxq$A(t~rR^7{k~^mM~36cl+rGM#4n7 z`&VY{zXLA#mx}Y8QbfO&r>8RCSZ%-3*~(4ke5&)=Yk7<;r68U^>3OIuv)@FA$nePD zqxJ*8H86<}5f`8TL5%fYBEd$rZ*6)^YUpKEQZ}fiGQD_xlD$FdW-G>OQZ)z}Em=

    &;jwLQT1K6F3dZ~4NKc6@gdov0Ham)mq5%}V^d(V=~n z+CA4>wJK}+b*T)63&=XV=p=DAQ)TR`j$n+QlH*|+&SY3ZGPfy}Xyh@a#tOLkCYOHiJRy-d2W+9$he2g5Jt4;Ghcplv4t;#94-zM_)tzH3eCE`)CcU98XN z+eYy`61%VbLtn2Ej)|ZTGgs1yf=qWBS=!a!ex$B(5W!uz1}b{aqmG{5Dz%3z8B1o6 z`nmwf(-T=gYKmNXzBW&(6BqAK=|Px=Y)LY8z z&ZnC3bgdZoGVvy5zJ9API{FF=#c)c^nh literal 0 HcmV?d00001 diff --git a/static/media/cover/微信图片_20200724112643.jpg b/static/media/cover/微信图片_20200724112643.jpg new file mode 100644 index 0000000000000000000000000000000000000000..00f7364e8d1438e840bfaca6b494595153ce9bee GIT binary patch literal 23938 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 Z&_h6gdQ=U&713{I6cB*N-2eOG{{Vlvcc=gW literal 0 HcmV?d00001 diff --git a/static/media/cover/微信图片_20200724112643_deab8x0.jpg b/static/media/cover/微信图片_20200724112643_deab8x0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..00f7364e8d1438e840bfaca6b494595153ce9bee GIT binary patch literal 23938 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 Z&_h6gdQ=U&713{I6cB*N-2eOG{{Vlvcc=gW literal 0 HcmV?d00001 diff --git a/static/media/groupimage/20181201110659913.PNG b/static/media/groupimage/20181201110659913.PNG new file mode 100644 index 0000000000000000000000000000000000000000..7c28870b0e50c08a7cf68f75bf18ec8416859610 GIT binary patch literal 38731 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 Z&_h6gdQ=U&713{I6cB*N-2eOG{{Vlvcc=gW literal 0 HcmV?d00001 diff --git a/static/media/profile/20181201110659913.PNG b/static/media/profile/20181201110659913.PNG new file mode 100644 index 0000000000000000000000000000000000000000..7c28870b0e50c08a7cf68f75bf18ec8416859610 GIT binary patch literal 38731 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 Z&_h6gdQ=U&713{I6cB*N-2eOG{{Vlvcc=gW literal 0 HcmV?d00001 diff --git a/static/media/qita.png b/static/media/qita.png new file mode 100644 index 0000000000000000000000000000000000000000..2322471418fba02c60d848f1378a0e362070cbba GIT binary patch literal 12336 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 literal 0 HcmV?d00001 diff --git a/static/media/toutiao.png b/static/media/toutiao.png new file mode 100644 index 0000000000000000000000000000000000000000..d78afc3d9dc7226a30d7ad2a93086dc66b1fd9cc GIT binary patch literal 8883 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 Ad;kCd literal 0 HcmV?d00001 diff --git a/static/media/weibo.png b/static/media/weibo.png new file mode 100644 index 0000000000000000000000000000000000000000..e09ce60c84b6efcb43294e5a77e6c1acb90da6b8 GIT binary patch literal 7699 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 literal 0 HcmV?d00001 From f355ddbd7cec2a1c0da54ecfd8c4b89a241b46ee Mon Sep 17 00:00:00 2001 From: Bob <1397910458@qq.com> Date: Sun, 23 Aug 2020 12:08:36 +0800 Subject: [PATCH 3/4] =?UTF-8?q?#=E7=94=A8=E6=88=B7=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E3=80=81=E6=95=B0=E6=8D=AE=E5=BA=93=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/requirements.txt b/requirements.txt index 13355e8..5a9c701 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ -Django~=2.2.15 -django-bootstrap3 -django-simple-captcha -psycopg2-binary -django-cors-headers +# Django~=2.2.15 +# django-bootstrap3 +# django-simple-captcha +# psycopg2-binary +# django-cors-headers From aa1833d3abffed66ffa09e40b7b64a4da75f9a5b Mon Sep 17 00:00:00 2001 From: Bob <1397910458@qq.com> Date: Sun, 23 Aug 2020 12:10:37 +0800 Subject: [PATCH 4/4] =?UTF-8?q?#=E7=94=A8=E6=88=B7=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E3=80=81=E6=95=B0=E6=8D=AE=E5=BA=93=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- NewMediaMonitoring/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NewMediaMonitoring/settings.py b/NewMediaMonitoring/settings.py index 9eb84b5..3252058 100644 --- a/NewMediaMonitoring/settings.py +++ b/NewMediaMonitoring/settings.py @@ -136,7 +136,7 @@ STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static"), ] STATIC_ROOT = '/var/www/p3/newmediamonitoring/static/' -MEDIA_URL = '/static/media/' +MEDIA_URL = '/media/' MEDIA_ROOT = '/var/www/p3/newmediamonitoring/media/' """用户模块扩展部分"""