';
+ nSizer.childNodes[0].style.height = "0";
+ nSizer.childNodes[0].style.overflow = "hidden";
nSizer.style.width = footerWidths[i];
}, footerSrcEls );
}
@@ -6561,7 +6576,7 @@
{
$(n)
.on( 'click.DT', oData, function (e) {
- n.blur(); // Remove focus outline for mouse users
+ $(n).blur(); // Remove focus outline for mouse users
fn(e);
} )
.on( 'keypress.DT', oData, function (e){
@@ -7801,13 +7816,26 @@
}
}
else if ( order == 'current' || order == 'applied' ) {
- a = search == 'none' ?
- displayMaster.slice() : // no search
- search == 'applied' ?
- displayFiltered.slice() : // applied search
- $.map( displayMaster, function (el, i) { // removed search
- return $.inArray( el, displayFiltered ) === -1 ? el : null;
- } );
+ if ( search == 'none') {
+ a = displayMaster.slice();
+ }
+ else if ( search == 'applied' ) {
+ a = displayFiltered.slice();
+ }
+ else if ( search == 'removed' ) {
+ // O(n+m) solution by creating a hash map
+ var displayFilteredMap = {};
+
+ for ( var i=0, ien=displayFiltered.length ; i 0;
}
- return value.length > 0;
+ return value !== undefined && value !== null && value.length > 0;
},
// https://jqueryvalidation.org/email-method/
@@ -1395,9 +1422,26 @@ $.extend( $.validator, {
},
// https://jqueryvalidation.org/date-method/
- date: function( value, element ) {
- return this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );
- },
+ date: ( function() {
+ var called = false;
+
+ return function( value, element ) {
+ if ( !called ) {
+ called = true;
+ if ( this.settings.debug && window.console ) {
+ console.warn(
+ "The `date` method is deprecated and will be removed in version '2.0.0'.\n" +
+ "Please don't use it, since it relies on the Date constructor, which\n" +
+ "behaves very differently across browsers and locales. Use `dateISO`\n" +
+ "instead or one of the locale specific methods in `localizations/`\n" +
+ "and `additional-methods.js`."
+ );
+ }
+ }
+
+ return this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );
+ };
+ }() ),
// https://jqueryvalidation.org/dateISO-method/
dateISO: function( value, element ) {
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_ar.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ar.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_ar.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ar.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ar.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ar.min.js
new file mode 100644
index 0000000000..31d5c4ed33
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ar.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"هذا الحقل إلزامي",remote:"يرجى تصحيح هذا الحقل للمتابعة",email:"رجاء إدخال عنوان بريد إلكتروني صحيح",url:"رجاء إدخال عنوان موقع إلكتروني صحيح",date:"رجاء إدخال تاريخ صحيح",dateISO:"رجاء إدخال تاريخ صحيح (ISO)",number:"رجاء إدخال عدد بطريقة صحيحة",digits:"رجاء إدخال أرقام فقط",creditcard:"رجاء إدخال رقم بطاقة ائتمان صحيح",equalTo:"رجاء إدخال نفس القيمة",extension:"رجاء إدخال ملف بامتداد موافق عليه",maxlength:a.validator.format("الحد الأقصى لعدد الحروف هو {0}"),minlength:a.validator.format("الحد الأدنى لعدد الحروف هو {0}"),rangelength:a.validator.format("عدد الحروف يجب أن يكون بين {0} و {1}"),range:a.validator.format("رجاء إدخال عدد قيمته بين {0} و {1}"),max:a.validator.format("رجاء إدخال عدد أقل من أو يساوي {0}"),min:a.validator.format("رجاء إدخال عدد أكبر من أو يساوي {0}")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_az.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_az.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_az.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_az.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_az.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_az.min.js
new file mode 100644
index 0000000000..a1deb6ec67
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_az.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Bu xana mütləq doldurulmalıdır.",remote:"Zəhmət olmasa, düzgün məna daxil edin.",email:"Zəhmət olmasa, düzgün elektron poçt daxil edin.",url:"Zəhmət olmasa, düzgün URL daxil edin.",date:"Zəhmət olmasa, düzgün tarix daxil edin.",dateISO:"Zəhmət olmasa, düzgün ISO formatlı tarix daxil edin.",number:"Zəhmət olmasa, düzgün rəqəm daxil edin.",digits:"Zəhmət olmasa, yalnız rəqəm daxil edin.",creditcard:"Zəhmət olmasa, düzgün kredit kart nömrəsini daxil edin.",equalTo:"Zəhmət olmasa, eyni mənanı bir daha daxil edin.",extension:"Zəhmət olmasa, düzgün genişlənməyə malik faylı seçin.",maxlength:a.validator.format("Zəhmət olmasa, {0} simvoldan çox olmayaraq daxil edin."),minlength:a.validator.format("Zəhmət olmasa, {0} simvoldan az olmayaraq daxil edin."),rangelength:a.validator.format("Zəhmət olmasa, {0} - {1} aralığında uzunluğa malik simvol daxil edin."),range:a.validator.format("Zəhmət olmasa, {0} - {1} aralığında rəqəm daxil edin."),max:a.validator.format("Zəhmət olmasa, {0} və ondan kiçik rəqəm daxil edin."),min:a.validator.format("Zəhmət olmasa, {0} və ondan böyük rəqəm daxil edin")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_bg.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_bg.js
similarity index 94%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_bg.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_bg.js
index c304327837..c725eeadb5 100644
--- a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_bg.js
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_bg.js
@@ -24,7 +24,7 @@ $.extend( $.validator.messages, {
creditcard: "Моля, въведете валиден номер на кредитна карта.",
equalTo: "Моля, въведете същата стойност отново.",
extension: "Моля, въведете стойност с валидно разширение.",
- maxlength: $.validator.format( "Моля, въведете повече от {0} символа." ),
+ maxlength: $.validator.format( "Моля, въведете не повече от {0} символа." ),
minlength: $.validator.format( "Моля, въведете поне {0} символа." ),
rangelength: $.validator.format( "Моля, въведете стойност с дължина между {0} и {1} символа." ),
range: $.validator.format( "Моля, въведете стойност между {0} и {1}." ),
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_bg.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_bg.min.js
new file mode 100644
index 0000000000..dbb37a539d
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_bg.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Полето е задължително.",remote:"Моля, въведете правилната стойност.",email:"Моля, въведете валиден email.",url:"Моля, въведете валидно URL.",date:"Моля, въведете валидна дата.",dateISO:"Моля, въведете валидна дата (ISO).",number:"Моля, въведете валиден номер.",digits:"Моля, въведете само цифри.",creditcard:"Моля, въведете валиден номер на кредитна карта.",equalTo:"Моля, въведете същата стойност отново.",extension:"Моля, въведете стойност с валидно разширение.",maxlength:a.validator.format("Моля, въведете не повече от {0} символа."),minlength:a.validator.format("Моля, въведете поне {0} символа."),rangelength:a.validator.format("Моля, въведете стойност с дължина между {0} и {1} символа."),range:a.validator.format("Моля, въведете стойност между {0} и {1}."),max:a.validator.format("Моля, въведете стойност по-малка или равна на {0}."),min:a.validator.format("Моля, въведете стойност по-голяма или равна на {0}.")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_bn_BD.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_bn_BD.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_bn_BD.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_bn_BD.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_bn_BD.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_bn_BD.min.js
new file mode 100644
index 0000000000..4184ab3529
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_bn_BD.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"এই তথ্যটি আবশ্যক।",remote:"এই তথ্যটি ঠিক করুন।",email:"অনুগ্রহ করে একটি সঠিক মেইল ঠিকানা লিখুন।",url:"অনুগ্রহ করে একটি সঠিক লিঙ্ক দিন।",date:"তারিখ সঠিক নয়।",dateISO:"অনুগ্রহ করে একটি সঠিক (ISO) তারিখ লিখুন।",number:"অনুগ্রহ করে একটি সঠিক নম্বর লিখুন।",digits:"এখানে শুধু সংখ্যা ব্যবহার করা যাবে।",creditcard:"অনুগ্রহ করে একটি ক্রেডিট কার্ডের সঠিক নম্বর লিখুন।",equalTo:"একই মান আবার লিখুন।",extension:"সঠিক ধরনের ফাইল আপলোড করুন।",maxlength:a.validator.format("{0}টির বেশি অক্ষর লেখা যাবে না।"),minlength:a.validator.format("{0}টির কম অক্ষর লেখা যাবে না।"),rangelength:a.validator.format("{0} থেকে {1} টি অক্ষর সম্বলিত মান লিখুন।"),range:a.validator.format("{0} থেকে {1} এর মধ্যে একটি মান ব্যবহার করুন।"),max:a.validator.format("অনুগ্রহ করে {0} বা তার চাইতে কম মান ব্যবহার করুন।"),min:a.validator.format("অনুগ্রহ করে {0} বা তার চাইতে বেশি মান ব্যবহার করুন।")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_ca.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ca.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_ca.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ca.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ca.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ca.min.js
new file mode 100644
index 0000000000..4171942593
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ca.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Aquest camp és obligatori.",remote:"Si us plau, omple aquest camp.",email:"Si us plau, escriu una adreça de correu-e vàlida",url:"Si us plau, escriu una URL vàlida.",date:"Si us plau, escriu una data vàlida.",dateISO:"Si us plau, escriu una data (ISO) vàlida.",number:"Si us plau, escriu un número enter vàlid.",digits:"Si us plau, escriu només dígits.",creditcard:"Si us plau, escriu un número de tarjeta vàlid.",equalTo:"Si us plau, escriu el mateix valor de nou.",extension:"Si us plau, escriu un valor amb una extensió acceptada.",maxlength:a.validator.format("Si us plau, no escriguis més de {0} caracters."),minlength:a.validator.format("Si us plau, no escriguis menys de {0} caracters."),rangelength:a.validator.format("Si us plau, escriu un valor entre {0} i {1} caracters."),range:a.validator.format("Si us plau, escriu un valor entre {0} i {1}."),max:a.validator.format("Si us plau, escriu un valor menor o igual a {0}."),min:a.validator.format("Si us plau, escriu un valor major o igual a {0}.")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_cs.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_cs.js
similarity index 94%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_cs.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_cs.js
index 762be35da9..2ab4b51668 100644
--- a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_cs.js
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_cs.js
@@ -29,7 +29,8 @@ $.extend( $.validator.messages, {
rangelength: $.validator.format( "Prosím, zadejte od {0} do {1} znaků." ),
range: $.validator.format( "Prosím, zadejte hodnotu od {0} do {1}." ),
max: $.validator.format( "Prosím, zadejte hodnotu menší nebo rovnu {0}." ),
- min: $.validator.format( "Prosím, zadejte hodnotu větší nebo rovnu {0}." )
+ min: $.validator.format( "Prosím, zadejte hodnotu větší nebo rovnu {0}." ),
+ step: $.validator.format( "Musí být násobkem čísla {0}." )
} );
return $;
}));
\ No newline at end of file
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_cs.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_cs.min.js
new file mode 100644
index 0000000000..7bb3350ca4
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_cs.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Tento údaj je povinný.",remote:"Prosím, opravte tento údaj.",email:"Prosím, zadejte platný e-mail.",url:"Prosím, zadejte platné URL.",date:"Prosím, zadejte platné datum.",dateISO:"Prosím, zadejte platné datum (ISO).",number:"Prosím, zadejte číslo.",digits:"Prosím, zadávejte pouze číslice.",creditcard:"Prosím, zadejte číslo kreditní karty.",equalTo:"Prosím, zadejte znovu stejnou hodnotu.",extension:"Prosím, zadejte soubor se správnou příponou.",maxlength:a.validator.format("Prosím, zadejte nejvíce {0} znaků."),minlength:a.validator.format("Prosím, zadejte nejméně {0} znaků."),rangelength:a.validator.format("Prosím, zadejte od {0} do {1} znaků."),range:a.validator.format("Prosím, zadejte hodnotu od {0} do {1}."),max:a.validator.format("Prosím, zadejte hodnotu menší nebo rovnu {0}."),min:a.validator.format("Prosím, zadejte hodnotu větší nebo rovnu {0}."),step:a.validator.format("Musí být násobkem čísla {0}.")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_da.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_da.js
similarity index 56%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_da.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_da.js
index 45b06c7ca9..302775c0fb 100644
--- a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_da.js
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_da.js
@@ -14,19 +14,33 @@
*/
$.extend( $.validator.messages, {
required: "Dette felt er påkrævet.",
- maxlength: $.validator.format( "Indtast højst {0} tegn." ),
- minlength: $.validator.format( "Indtast mindst {0} tegn." ),
- rangelength: $.validator.format( "Indtast mindst {0} og højst {1} tegn." ),
+ remote: "Ret venligst dette felt",
email: "Indtast en gyldig email-adresse.",
url: "Indtast en gyldig URL.",
date: "Indtast en gyldig dato.",
number: "Indtast et tal.",
digits: "Indtast kun cifre.",
+ creditcard: "Indtast et gyldigt kreditkortnummer.",
equalTo: "Indtast den samme værdi igen.",
+ time: "Angiv en gyldig tid mellem kl. 00:00 og 23:59.",
+ ipv4: "Angiv venligst en gyldig IPv4-adresse.",
+ ipv6: "Angiv venligst en gyldig IPv6-adresse.",
+ require_from_group: $.validator.format( "Angiv mindst {0} af disse felter." ),
+ extension: "Indtast venligst en værdi med en gyldig endelse",
+ pattern: "Ugyldigt format",
+ lettersonly: "Angiv venligst kun bogstaver.",
+ nowhitespace: "Må ikke indholde mellemrum",
+ maxlength: $.validator.format( "Indtast højst {0} tegn." ),
+ minlength: $.validator.format( "Indtast mindst {0} tegn." ),
+ rangelength: $.validator.format( "Indtast mindst {0} og højst {1} tegn." ),
range: $.validator.format( "Angiv en værdi mellem {0} og {1}." ),
max: $.validator.format( "Angiv en værdi der højst er {0}." ),
min: $.validator.format( "Angiv en værdi der mindst er {0}." ),
- creditcard: "Indtast et gyldigt kreditkortnummer."
+ minWords: $.validator.format( "Indtast venligst mindst {0} ord" ),
+ maxWords: $.validator.format( "Indtast venligst højst {0} ord" ),
+ step: $.validator.format( "Angiv en værdi gange {0}." ),
+ notEqualTo: "Angiv en anden værdi, værdierne må ikke være det samme.",
+ integer: "Angiv et ikke-decimaltal, der er positivt eller negativt."
} );
return $;
}));
\ No newline at end of file
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_da.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_da.min.js
new file mode 100644
index 0000000000..27f6a61cf2
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_da.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Dette felt er påkrævet.",remote:"Ret venligst dette felt",email:"Indtast en gyldig email-adresse.",url:"Indtast en gyldig URL.",date:"Indtast en gyldig dato.",number:"Indtast et tal.",digits:"Indtast kun cifre.",creditcard:"Indtast et gyldigt kreditkortnummer.",equalTo:"Indtast den samme værdi igen.",time:"Angiv en gyldig tid mellem kl. 00:00 og 23:59.",ipv4:"Angiv venligst en gyldig IPv4-adresse.",ipv6:"Angiv venligst en gyldig IPv6-adresse.",require_from_group:a.validator.format("Angiv mindst {0} af disse felter."),extension:"Indtast venligst en værdi med en gyldig endelse",pattern:"Ugyldigt format",lettersonly:"Angiv venligst kun bogstaver.",nowhitespace:"Må ikke indholde mellemrum",maxlength:a.validator.format("Indtast højst {0} tegn."),minlength:a.validator.format("Indtast mindst {0} tegn."),rangelength:a.validator.format("Indtast mindst {0} og højst {1} tegn."),range:a.validator.format("Angiv en værdi mellem {0} og {1}."),max:a.validator.format("Angiv en værdi der højst er {0}."),min:a.validator.format("Angiv en værdi der mindst er {0}."),minWords:a.validator.format("Indtast venligst mindst {0} ord"),maxWords:a.validator.format("Indtast venligst højst {0} ord"),step:a.validator.format("Angiv en værdi gange {0}."),notEqualTo:"Angiv en anden værdi, værdierne må ikke være det samme.",integer:"Angiv et ikke-decimaltal, der er positivt eller negativt."}),a});
\ No newline at end of file
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_de.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_de.js
new file mode 100644
index 0000000000..611c16f71f
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_de.js
@@ -0,0 +1,82 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
+/*
+ * Translated default messages for the jQuery validation plugin.
+ * Locale: DE (German, Deutsch)
+ */
+$.extend( $.validator.messages, {
+ required: "Dieses Feld ist ein Pflichtfeld.",
+ maxlength: $.validator.format( "Geben Sie bitte maximal {0} Zeichen ein." ),
+ minlength: $.validator.format( "Geben Sie bitte mindestens {0} Zeichen ein." ),
+ rangelength: $.validator.format( "Geben Sie bitte mindestens {0} und maximal {1} Zeichen ein." ),
+ email: "Geben Sie bitte eine gültige E-Mail-Adresse ein.",
+ url: "Geben Sie bitte eine gültige URL ein.",
+ date: "Geben Sie bitte ein gültiges Datum ein.",
+ number: "Geben Sie bitte eine Nummer ein.",
+ digits: "Geben Sie bitte nur Ziffern ein.",
+ equalTo: "Wiederholen Sie bitte denselben Wert.",
+ range: $.validator.format( "Geben Sie bitte einen Wert zwischen {0} und {1} ein." ),
+ max: $.validator.format( "Geben Sie bitte einen Wert kleiner oder gleich {0} ein." ),
+ min: $.validator.format( "Geben Sie bitte einen Wert größer oder gleich {0} ein." ),
+ creditcard: "Geben Sie bitte eine gültige Kreditkarten-Nummer ein.",
+ remote: "Korrigieren Sie bitte dieses Feld.",
+ dateISO: "Geben Sie bitte ein gültiges Datum ein (ISO-Format).",
+ step: $.validator.format( "Geben Sie bitte ein Vielfaches von {0} ein." ),
+ maxWords: $.validator.format( "Geben Sie bitte {0} Wörter oder weniger ein." ),
+ minWords: $.validator.format( "Geben Sie bitte mindestens {0} Wörter ein." ),
+ rangeWords: $.validator.format( "Geben Sie bitte zwischen {0} und {1} Wörtern ein." ),
+ accept: "Geben Sie bitte einen Wert mit einem gültigen MIME-Typ ein.",
+ alphanumeric: "Geben Sie bitte nur Buchstaben (keine Umlaute), Zahlen oder Unterstriche ein.",
+ bankaccountNL: "Geben Sie bitte eine gültige Kontonummer ein.",
+ bankorgiroaccountNL: "Geben Sie bitte eine gültige Bank- oder Girokontonummer ein.",
+ bic: "Geben Sie bitte einen gültigen BIC-Code ein.",
+ cifES: "Geben Sie bitte eine gültige CIF-Nummer ein.",
+ cpfBR: "Geben Sie bitte eine gültige CPF-Nummer ein.",
+ creditcardtypes: "Geben Sie bitte eine gültige Kreditkarten-Nummer ein.",
+ currency: "Geben Sie bitte eine gültige Währung ein.",
+ extension: "Geben Sie bitte einen Wert mit einer gültigen Erweiterung ein.",
+ giroaccountNL: "Geben Sie bitte eine gültige Girokontonummer ein.",
+ iban: "Geben Sie bitte eine gültige IBAN ein.",
+ integer: "Geben Sie bitte eine positive oder negative Nicht-Dezimalzahl ein.",
+ ipv4: "Geben Sie bitte eine gültige IPv4-Adresse ein.",
+ ipv6: "Geben Sie bitte eine gültige IPv6-Adresse ein.",
+ lettersonly: "Geben Sie bitte nur Buchstaben ein.",
+ letterswithbasicpunc: "Geben Sie bitte nur Buchstaben oder Interpunktion ein.",
+ mobileNL: "Geben Sie bitte eine gültige Handynummer ein.",
+ mobileUK: "Geben Sie bitte eine gültige Handynummer ein.",
+ netmask: "Geben Sie bitte eine gültige Netzmaske ein.",
+ nieES: "Geben Sie bitte eine gültige NIE-Nummer ein.",
+ nifES: "Geben Sie bitte eine gültige NIF-Nummer ein.",
+ nipPL: "Geben Sie bitte eine gültige NIP-Nummer ein.",
+ notEqualTo: "Geben Sie bitte einen anderen Wert ein. Die Werte dürfen nicht gleich sein.",
+ nowhitespace: "Kein Leerzeichen bitte.",
+ pattern: "Ungültiges Format.",
+ phoneNL: "Geben Sie bitte eine gültige Telefonnummer ein.",
+ phonesUK: "Geben Sie bitte eine gültige britische Telefonnummer ein.",
+ phoneUK: "Geben Sie bitte eine gültige Telefonnummer ein.",
+ phoneUS: "Geben Sie bitte eine gültige Telefonnummer ein.",
+ postalcodeBR: "Geben Sie bitte eine gültige brasilianische Postleitzahl ein.",
+ postalCodeCA: "Geben Sie bitte eine gültige kanadische Postleitzahl ein.",
+ postalcodeIT: "Geben Sie bitte eine gültige italienische Postleitzahl ein.",
+ postalcodeNL: "Geben Sie bitte eine gültige niederländische Postleitzahl ein.",
+ postcodeUK: "Geben Sie bitte eine gültige britische Postleitzahl ein.",
+ require_from_group: $.validator.format( "Füllen Sie bitte mindestens {0} dieser Felder aus." ),
+ skip_or_fill_minimum: $.validator.format( "Überspringen Sie bitte diese Felder oder füllen Sie mindestens {0} von ihnen aus." ),
+ stateUS: "Geben Sie bitte einen gültigen US-Bundesstaat ein.",
+ strippedminlength: $.validator.format( "Geben Sie bitte mindestens {0} Zeichen ein." ),
+ time: "Geben Sie bitte eine gültige Uhrzeit zwischen 00:00 und 23:59 ein.",
+ time12h: "Geben Sie bitte eine gültige Uhrzeit im 12-Stunden-Format ein.",
+ vinUS: "Die angegebene Fahrzeugidentifikationsnummer (VIN) ist ungültig.",
+ zipcodeUS: "Die angegebene US-Postleitzahl ist ungültig.",
+ ziprange: "Ihre Postleitzahl muss im Bereich 902xx-xxxx bis 905xx-xxxx liegen."
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_de.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_de.min.js
new file mode 100644
index 0000000000..db9e9c6894
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_de.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Dieses Feld ist ein Pflichtfeld.",maxlength:a.validator.format("Geben Sie bitte maximal {0} Zeichen ein."),minlength:a.validator.format("Geben Sie bitte mindestens {0} Zeichen ein."),rangelength:a.validator.format("Geben Sie bitte mindestens {0} und maximal {1} Zeichen ein."),email:"Geben Sie bitte eine gültige E-Mail-Adresse ein.",url:"Geben Sie bitte eine gültige URL ein.",date:"Geben Sie bitte ein gültiges Datum ein.",number:"Geben Sie bitte eine Nummer ein.",digits:"Geben Sie bitte nur Ziffern ein.",equalTo:"Wiederholen Sie bitte denselben Wert.",range:a.validator.format("Geben Sie bitte einen Wert zwischen {0} und {1} ein."),max:a.validator.format("Geben Sie bitte einen Wert kleiner oder gleich {0} ein."),min:a.validator.format("Geben Sie bitte einen Wert größer oder gleich {0} ein."),creditcard:"Geben Sie bitte eine gültige Kreditkarten-Nummer ein.",remote:"Korrigieren Sie bitte dieses Feld.",dateISO:"Geben Sie bitte ein gültiges Datum ein (ISO-Format).",step:a.validator.format("Geben Sie bitte ein Vielfaches von {0} ein."),maxWords:a.validator.format("Geben Sie bitte {0} Wörter oder weniger ein."),minWords:a.validator.format("Geben Sie bitte mindestens {0} Wörter ein."),rangeWords:a.validator.format("Geben Sie bitte zwischen {0} und {1} Wörtern ein."),accept:"Geben Sie bitte einen Wert mit einem gültigen MIME-Typ ein.",alphanumeric:"Geben Sie bitte nur Buchstaben (keine Umlaute), Zahlen oder Unterstriche ein.",bankaccountNL:"Geben Sie bitte eine gültige Kontonummer ein.",bankorgiroaccountNL:"Geben Sie bitte eine gültige Bank- oder Girokontonummer ein.",bic:"Geben Sie bitte einen gültigen BIC-Code ein.",cifES:"Geben Sie bitte eine gültige CIF-Nummer ein.",cpfBR:"Geben Sie bitte eine gültige CPF-Nummer ein.",creditcardtypes:"Geben Sie bitte eine gültige Kreditkarten-Nummer ein.",currency:"Geben Sie bitte eine gültige Währung ein.",extension:"Geben Sie bitte einen Wert mit einer gültigen Erweiterung ein.",giroaccountNL:"Geben Sie bitte eine gültige Girokontonummer ein.",iban:"Geben Sie bitte eine gültige IBAN ein.",integer:"Geben Sie bitte eine positive oder negative Nicht-Dezimalzahl ein.",ipv4:"Geben Sie bitte eine gültige IPv4-Adresse ein.",ipv6:"Geben Sie bitte eine gültige IPv6-Adresse ein.",lettersonly:"Geben Sie bitte nur Buchstaben ein.",letterswithbasicpunc:"Geben Sie bitte nur Buchstaben oder Interpunktion ein.",mobileNL:"Geben Sie bitte eine gültige Handynummer ein.",mobileUK:"Geben Sie bitte eine gültige Handynummer ein.",netmask:"Geben Sie bitte eine gültige Netzmaske ein.",nieES:"Geben Sie bitte eine gültige NIE-Nummer ein.",nifES:"Geben Sie bitte eine gültige NIF-Nummer ein.",nipPL:"Geben Sie bitte eine gültige NIP-Nummer ein.",notEqualTo:"Geben Sie bitte einen anderen Wert ein. Die Werte dürfen nicht gleich sein.",nowhitespace:"Kein Leerzeichen bitte.",pattern:"Ungültiges Format.",phoneNL:"Geben Sie bitte eine gültige Telefonnummer ein.",phonesUK:"Geben Sie bitte eine gültige britische Telefonnummer ein.",phoneUK:"Geben Sie bitte eine gültige Telefonnummer ein.",phoneUS:"Geben Sie bitte eine gültige Telefonnummer ein.",postalcodeBR:"Geben Sie bitte eine gültige brasilianische Postleitzahl ein.",postalCodeCA:"Geben Sie bitte eine gültige kanadische Postleitzahl ein.",postalcodeIT:"Geben Sie bitte eine gültige italienische Postleitzahl ein.",postalcodeNL:"Geben Sie bitte eine gültige niederländische Postleitzahl ein.",postcodeUK:"Geben Sie bitte eine gültige britische Postleitzahl ein.",require_from_group:a.validator.format("Füllen Sie bitte mindestens {0} dieser Felder aus."),skip_or_fill_minimum:a.validator.format("Überspringen Sie bitte diese Felder oder füllen Sie mindestens {0} von ihnen aus."),stateUS:"Geben Sie bitte einen gültigen US-Bundesstaat ein.",strippedminlength:a.validator.format("Geben Sie bitte mindestens {0} Zeichen ein."),time:"Geben Sie bitte eine gültige Uhrzeit zwischen 00:00 und 23:59 ein.",time12h:"Geben Sie bitte eine gültige Uhrzeit im 12-Stunden-Format ein.",vinUS:"Die angegebene Fahrzeugidentifikationsnummer (VIN) ist ungültig.",zipcodeUS:"Die angegebene US-Postleitzahl ist ungültig.",ziprange:"Ihre Postleitzahl muss im Bereich 902xx-xxxx bis 905xx-xxxx liegen."}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_el.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_el.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_el.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_el.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_el.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_el.min.js
new file mode 100644
index 0000000000..0d98addc0c
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_el.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Αυτό το πεδίο είναι υποχρεωτικό.",remote:"Παρακαλώ διορθώστε αυτό το πεδίο.",email:"Παρακαλώ εισάγετε μια έγκυρη διεύθυνση email.",url:"Παρακαλώ εισάγετε ένα έγκυρο URL.",date:"Παρακαλώ εισάγετε μια έγκυρη ημερομηνία.",dateISO:"Παρακαλώ εισάγετε μια έγκυρη ημερομηνία (ISO).",number:"Παρακαλώ εισάγετε έναν έγκυρο αριθμό.",digits:"Παρακαλώ εισάγετε μόνο αριθμητικά ψηφία.",creditcard:"Παρακαλώ εισάγετε έναν έγκυρο αριθμό πιστωτικής κάρτας.",equalTo:"Παρακαλώ εισάγετε την ίδια τιμή ξανά.",extension:"Παρακαλώ εισάγετε μια τιμή με έγκυρη επέκταση αρχείου.",maxlength:a.validator.format("Παρακαλώ εισάγετε μέχρι και {0} χαρακτήρες."),minlength:a.validator.format("Παρακαλώ εισάγετε τουλάχιστον {0} χαρακτήρες."),rangelength:a.validator.format("Παρακαλώ εισάγετε μια τιμή με μήκος μεταξύ {0} και {1} χαρακτήρων."),range:a.validator.format("Παρακαλώ εισάγετε μια τιμή μεταξύ {0} και {1}."),max:a.validator.format("Παρακαλώ εισάγετε μια τιμή μικρότερη ή ίση του {0}."),min:a.validator.format("Παρακαλώ εισάγετε μια τιμή μεγαλύτερη ή ίση του {0}.")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_es.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_es.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_es.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_es.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_es.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_es.min.js
new file mode 100644
index 0000000000..dad0eecd02
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_es.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Este campo es obligatorio.",remote:"Por favor, rellena este campo.",email:"Por favor, escribe una dirección de correo válida.",url:"Por favor, escribe una URL válida.",date:"Por favor, escribe una fecha válida.",dateISO:"Por favor, escribe una fecha (ISO) válida.",number:"Por favor, escribe un número válido.",digits:"Por favor, escribe sólo dígitos.",creditcard:"Por favor, escribe un número de tarjeta válido.",equalTo:"Por favor, escribe el mismo valor de nuevo.",extension:"Por favor, escribe un valor con una extensión aceptada.",maxlength:a.validator.format("Por favor, no escribas más de {0} caracteres."),minlength:a.validator.format("Por favor, no escribas menos de {0} caracteres."),rangelength:a.validator.format("Por favor, escribe un valor entre {0} y {1} caracteres."),range:a.validator.format("Por favor, escribe un valor entre {0} y {1}."),max:a.validator.format("Por favor, escribe un valor menor o igual a {0}."),min:a.validator.format("Por favor, escribe un valor mayor o igual a {0}."),nifES:"Por favor, escribe un NIF válido.",nieES:"Por favor, escribe un NIE válido.",cifES:"Por favor, escribe un CIF válido."}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_es_AR.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_es_AR.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_es_AR.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_es_AR.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_es_AR.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_es_AR.min.js
new file mode 100644
index 0000000000..ffeb8a7b44
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_es_AR.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Este campo es obligatorio.",remote:"Por favor, completá este campo.",email:"Por favor, escribí una dirección de correo válida.",url:"Por favor, escribí una URL válida.",date:"Por favor, escribí una fecha válida.",dateISO:"Por favor, escribí una fecha (ISO) válida.",number:"Por favor, escribí un número entero válido.",digits:"Por favor, escribí sólo dígitos.",creditcard:"Por favor, escribí un número de tarjeta válido.",equalTo:"Por favor, escribí el mismo valor de nuevo.",extension:"Por favor, escribí un valor con una extensión aceptada.",maxlength:a.validator.format("Por favor, no escribas más de {0} caracteres."),minlength:a.validator.format("Por favor, no escribas menos de {0} caracteres."),rangelength:a.validator.format("Por favor, escribí un valor entre {0} y {1} caracteres."),range:a.validator.format("Por favor, escribí un valor entre {0} y {1}."),max:a.validator.format("Por favor, escribí un valor menor o igual a {0}."),min:a.validator.format("Por favor, escribí un valor mayor o igual a {0}."),nifES:"Por favor, escribí un NIF válido.",nieES:"Por favor, escribí un NIE válido.",cifES:"Por favor, escribí un CIF válido."}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_es_PE.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_es_PE.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_es_PE.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_es_PE.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_es_PE.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_es_PE.min.js
new file mode 100644
index 0000000000..8c56da1845
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_es_PE.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Este campo es obligatorio.",remote:"Por favor, llene este campo.",email:"Por favor, escriba un correo electrónico válido.",url:"Por favor, escriba una URL válida.",date:"Por favor, escriba una fecha válida.",dateISO:"Por favor, escriba una fecha (ISO) válida.",number:"Por favor, escriba un número válido.",digits:"Por favor, escriba sólo dígitos.",creditcard:"Por favor, escriba un número de tarjeta válido.",equalTo:"Por favor, escriba el mismo valor de nuevo.",extension:"Por favor, escriba un valor con una extensión permitida.",maxlength:a.validator.format("Por favor, no escriba más de {0} caracteres."),minlength:a.validator.format("Por favor, no escriba menos de {0} caracteres."),rangelength:a.validator.format("Por favor, escriba un valor entre {0} y {1} caracteres."),range:a.validator.format("Por favor, escriba un valor entre {0} y {1}."),max:a.validator.format("Por favor, escriba un valor menor o igual a {0}."),min:a.validator.format("Por favor, escriba un valor mayor o igual a {0}."),nifES:"Por favor, escriba un NIF válido.",nieES:"Por favor, escriba un NIE válido.",cifES:"Por favor, escriba un CIF válido."}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_et.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_et.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_et.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_et.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_et.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_et.min.js
new file mode 100644
index 0000000000..80ed8adeaf
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_et.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"See väli peab olema täidetud.",maxlength:a.validator.format("Palun sisestage vähem kui {0} tähemärki."),minlength:a.validator.format("Palun sisestage vähemalt {0} tähemärki."),rangelength:a.validator.format("Palun sisestage väärtus vahemikus {0} kuni {1} tähemärki."),email:"Palun sisestage korrektne e-maili aadress.",url:"Palun sisestage korrektne URL.",date:"Palun sisestage korrektne kuupäev.",dateISO:"Palun sisestage korrektne kuupäev (YYYY-MM-DD).",number:"Palun sisestage korrektne number.",digits:"Palun sisestage ainult numbreid.",equalTo:"Palun sisestage sama väärtus uuesti.",range:a.validator.format("Palun sisestage väärtus vahemikus {0} kuni {1}."),max:a.validator.format("Palun sisestage väärtus, mis on väiksem või võrdne arvuga {0}."),min:a.validator.format("Palun sisestage väärtus, mis on suurem või võrdne arvuga {0}."),creditcard:"Palun sisestage korrektne krediitkaardi number."}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_eu.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_eu.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_eu.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_eu.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_eu.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_eu.min.js
new file mode 100644
index 0000000000..ff6d898f7d
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_eu.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Eremu hau beharrezkoa da.",remote:"Mesedez, bete eremu hau.",email:"Mesedez, idatzi baliozko posta helbide bat.",url:"Mesedez, idatzi baliozko URL bat.",date:"Mesedez, idatzi baliozko data bat.",dateISO:"Mesedez, idatzi baliozko (ISO) data bat.",number:"Mesedez, idatzi baliozko zenbaki oso bat.",digits:"Mesedez, idatzi digituak soilik.",creditcard:"Mesedez, idatzi baliozko txartel zenbaki bat.",equalTo:"Mesedez, idatzi berdina berriro ere.",extension:"Mesedez, idatzi onartutako luzapena duen balio bat.",maxlength:a.validator.format("Mesedez, ez idatzi {0} karaktere baino gehiago."),minlength:a.validator.format("Mesedez, ez idatzi {0} karaktere baino gutxiago."),rangelength:a.validator.format("Mesedez, idatzi {0} eta {1} karaktere arteko balio bat."),range:a.validator.format("Mesedez, idatzi {0} eta {1} arteko balio bat."),max:a.validator.format("Mesedez, idatzi {0} edo txikiagoa den balio bat."),min:a.validator.format("Mesedez, idatzi {0} edo handiagoa den balio bat.")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_fa.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_fa.js
similarity index 77%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_fa.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_fa.js
index c9806d3abd..0f5283b34a 100644
--- a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_fa.js
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_fa.js
@@ -15,16 +15,17 @@
$.extend( $.validator.messages, {
required: "تکمیل این فیلد اجباری است.",
remote: "لطفا این فیلد را تصحیح کنید.",
- email: ".لطفا یک ایمیل صحیح وارد کنید",
+ email: "لطفا یک ایمیل صحیح وارد کنید.",
url: "لطفا آدرس صحیح وارد کنید.",
- date: "لطفا یک تاریخ صحیح وارد کنید",
- dateFA: "لطفا یک تاریخ صحیح وارد کنید",
+ date: "لطفا تاریخ صحیح وارد کنید.",
+ dateFA: "لطفا یک تاریخ صحیح وارد کنید.",
dateISO: "لطفا تاریخ صحیح وارد کنید (ISO).",
number: "لطفا عدد صحیح وارد کنید.",
- digits: "لطفا تنها رقم وارد کنید",
+ digits: "لطفا تنها رقم وارد کنید.",
creditcard: "لطفا کریدیت کارت صحیح وارد کنید.",
- equalTo: "لطفا مقدار برابری وارد کنید",
- extension: "لطفا مقداری وارد کنید که ",
+ equalTo: "لطفا مقدار برابری وارد کنید.",
+ extension: "لطفا مقداری وارد کنید که",
+ alphanumeric: "لطفا مقدار را عدد (انگلیسی) وارد کنید.",
maxlength: $.validator.format( "لطفا بیشتر از {0} حرف وارد نکنید." ),
minlength: $.validator.format( "لطفا کمتر از {0} حرف وارد نکنید." ),
rangelength: $.validator.format( "لطفا مقداری بین {0} تا {1} حرف وارد کنید." ),
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_fa.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_fa.min.js
new file mode 100644
index 0000000000..e6a54f4525
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_fa.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"تکمیل این فیلد اجباری است.",remote:"لطفا این فیلد را تصحیح کنید.",email:"لطفا یک ایمیل صحیح وارد کنید.",url:"لطفا آدرس صحیح وارد کنید.",date:"لطفا تاریخ صحیح وارد کنید.",dateFA:"لطفا یک تاریخ صحیح وارد کنید.",dateISO:"لطفا تاریخ صحیح وارد کنید (ISO).",number:"لطفا عدد صحیح وارد کنید.",digits:"لطفا تنها رقم وارد کنید.",creditcard:"لطفا کریدیت کارت صحیح وارد کنید.",equalTo:"لطفا مقدار برابری وارد کنید.",extension:"لطفا مقداری وارد کنید که",alphanumeric:"لطفا مقدار را عدد (انگلیسی) وارد کنید.",maxlength:a.validator.format("لطفا بیشتر از {0} حرف وارد نکنید."),minlength:a.validator.format("لطفا کمتر از {0} حرف وارد نکنید."),rangelength:a.validator.format("لطفا مقداری بین {0} تا {1} حرف وارد کنید."),range:a.validator.format("لطفا مقداری بین {0} تا {1} حرف وارد کنید."),max:a.validator.format("لطفا مقداری کمتر از {0} وارد کنید."),min:a.validator.format("لطفا مقداری بیشتر از {0} وارد کنید."),minWords:a.validator.format("لطفا حداقل {0} کلمه وارد کنید."),maxWords:a.validator.format("لطفا حداکثر {0} کلمه وارد کنید.")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_fi.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_fi.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_fi.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_fi.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_fi.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_fi.min.js
new file mode 100644
index 0000000000..e602953638
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_fi.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Tämä kenttä on pakollinen.",email:"Syötä oikea sähköpostiosoite.",url:"Syötä oikea URL-osoite.",date:"Syötä oikea päivämäärä.",dateISO:"Syötä oikea päivämäärä muodossa VVVV-KK-PP.",number:"Syötä luku.",creditcard:"Syötä voimassa oleva luottokorttinumero.",digits:"Syötä pelkästään numeroita.",equalTo:"Syötä sama arvo uudestaan.",maxlength:a.validator.format("Voit syöttää enintään {0} merkkiä."),minlength:a.validator.format("Vähintään {0} merkkiä."),rangelength:a.validator.format("Syötä vähintään {0} ja enintään {1} merkkiä."),range:a.validator.format("Syötä arvo väliltä {0}–{1}."),max:a.validator.format("Syötä arvo, joka on enintään {0}."),min:a.validator.format("Syötä arvo, joka on vähintään {0}.")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_fr.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_fr.js
similarity index 97%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_fr.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_fr.js
index 91cb93fae8..e9f18364fe 100644
--- a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_fr.js
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_fr.js
@@ -53,7 +53,7 @@ $.extend( $.validator.messages, {
creditcardtypes: "Veuillez fournir un numéro de carte de crédit valide.",
ipv4: "Veuillez fournir une adresse IP v4 valide.",
ipv6: "Veuillez fournir une adresse IP v6 valide.",
- require_from_group: "Veuillez fournir au moins {0} de ces champs.",
+ require_from_group: $.validator.format( "Veuillez fournir au moins {0} de ces champs." ),
nifES: "Veuillez fournir un numéro NIF valide.",
nieES: "Veuillez fournir un numéro NIE valide.",
cifES: "Veuillez fournir un numéro CIF valide.",
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_fr.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_fr.min.js
new file mode 100644
index 0000000000..ed2ae057b3
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_fr.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Ce champ est obligatoire.",remote:"Veuillez corriger ce champ.",email:"Veuillez fournir une adresse électronique valide.",url:"Veuillez fournir une adresse URL valide.",date:"Veuillez fournir une date valide.",dateISO:"Veuillez fournir une date valide (ISO).",number:"Veuillez fournir un numéro valide.",digits:"Veuillez fournir seulement des chiffres.",creditcard:"Veuillez fournir un numéro de carte de crédit valide.",equalTo:"Veuillez fournir encore la même valeur.",notEqualTo:"Veuillez fournir une valeur différente, les valeurs ne doivent pas être identiques.",extension:"Veuillez fournir une valeur avec une extension valide.",maxlength:a.validator.format("Veuillez fournir au plus {0} caractères."),minlength:a.validator.format("Veuillez fournir au moins {0} caractères."),rangelength:a.validator.format("Veuillez fournir une valeur qui contient entre {0} et {1} caractères."),range:a.validator.format("Veuillez fournir une valeur entre {0} et {1}."),max:a.validator.format("Veuillez fournir une valeur inférieure ou égale à {0}."),min:a.validator.format("Veuillez fournir une valeur supérieure ou égale à {0}."),step:a.validator.format("Veuillez fournir une valeur multiple de {0}."),maxWords:a.validator.format("Veuillez fournir au plus {0} mots."),minWords:a.validator.format("Veuillez fournir au moins {0} mots."),rangeWords:a.validator.format("Veuillez fournir entre {0} et {1} mots."),letterswithbasicpunc:"Veuillez fournir seulement des lettres et des signes de ponctuation.",alphanumeric:"Veuillez fournir seulement des lettres, nombres, espaces et soulignages.",lettersonly:"Veuillez fournir seulement des lettres.",nowhitespace:"Veuillez ne pas inscrire d'espaces blancs.",ziprange:"Veuillez fournir un code postal entre 902xx-xxxx et 905-xx-xxxx.",integer:"Veuillez fournir un nombre non décimal qui est positif ou négatif.",vinUS:"Veuillez fournir un numéro d'identification du véhicule (VIN).",dateITA:"Veuillez fournir une date valide.",time:"Veuillez fournir une heure valide entre 00:00 et 23:59.",phoneUS:"Veuillez fournir un numéro de téléphone valide.",phoneUK:"Veuillez fournir un numéro de téléphone valide.",mobileUK:"Veuillez fournir un numéro de téléphone mobile valide.",strippedminlength:a.validator.format("Veuillez fournir au moins {0} caractères."),email2:"Veuillez fournir une adresse électronique valide.",url2:"Veuillez fournir une adresse URL valide.",creditcardtypes:"Veuillez fournir un numéro de carte de crédit valide.",ipv4:"Veuillez fournir une adresse IP v4 valide.",ipv6:"Veuillez fournir une adresse IP v6 valide.",require_from_group:a.validator.format("Veuillez fournir au moins {0} de ces champs."),nifES:"Veuillez fournir un numéro NIF valide.",nieES:"Veuillez fournir un numéro NIE valide.",cifES:"Veuillez fournir un numéro CIF valide.",postalCodeCA:"Veuillez fournir un code postal valide."}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_ge.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ge.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_ge.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ge.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ge.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ge.min.js
new file mode 100644
index 0000000000..cfbd586985
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ge.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"ეს ველი სავალდებულოა",remote:"გთხოვთ შეასწოროთ.",email:"გთხოვთ შეიყვანოთ სწორი ფორმატით.",url:"გთხოვთ შეიყვანოთ სწორი ფორმატით.",date:"გთხოვთ შეიყვანოთ სწორი თარიღი.",dateISO:"გთხოვთ შეიყვანოთ სწორი ფორმატით (ISO).",number:"გთხოვთ შეიყვანოთ რიცხვი.",digits:"დაშვებულია მხოლოდ ციფრები.",creditcard:"გთხოვთ შეიყვანოთ სწორი ფორმატის ბარათის კოდი.",equalTo:"გთხოვთ შეიყვანოთ იგივე მნიშვნელობა.",maxlength:a.validator.format("გთხოვთ შეიყვანოთ არა უმეტეს {0} სიმბოლოსი."),minlength:a.validator.format("შეიყვანეთ მინიმუმ {0} სიმბოლო."),rangelength:a.validator.format("გთხოვთ შეიყვანოთ {0} -დან {1} -მდე რაოდენობის სიმბოლოები."),range:a.validator.format("შეიყვანეთ {0} -სა {1} -ს შორის."),max:a.validator.format("გთხოვთ შეიყვანოთ მნიშვნელობა ნაკლები ან ტოლი {0} -ს."),min:a.validator.format("გთხოვთ შეიყვანოთ მნიშვნელობა მეტი ან ტოლი {0} -ს.")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_gl.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_gl.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_gl.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_gl.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_gl.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_gl.min.js
new file mode 100644
index 0000000000..ce3f1eb965
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_gl.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return function(a){a.extend(a.validator.messages,{required:"Este campo é obrigatorio.",remote:"Por favor, cubre este campo.",email:"Por favor, escribe unha dirección de correo válida.",url:"Por favor, escribe unha URL válida.",date:"Por favor, escribe unha data válida.",dateISO:"Por favor, escribe unha data (ISO) válida.",number:"Por favor, escribe un número válido.",digits:"Por favor, escribe só díxitos.",creditcard:"Por favor, escribe un número de tarxeta válido.",equalTo:"Por favor, escribe o mesmo valor de novo.",extension:"Por favor, escribe un valor cunha extensión aceptada.",maxlength:a.validator.format("Por favor, non escribas máis de {0} caracteres."),minlength:a.validator.format("Por favor, non escribas menos de {0} caracteres."),rangelength:a.validator.format("Por favor, escribe un valor entre {0} e {1} caracteres."),range:a.validator.format("Por favor, escribe un valor entre {0} e {1}."),max:a.validator.format("Por favor, escribe un valor menor ou igual a {0}."),min:a.validator.format("Por favor, escribe un valor maior ou igual a {0}."),nifES:"Por favor, escribe un NIF válido.",nieES:"Por favor, escribe un NIE válido.",cifES:"Por favor, escribe un CIF válido."})}(jQuery),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_he.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_he.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_he.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_he.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_he.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_he.min.js
new file mode 100644
index 0000000000..5fe9eab3cb
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_he.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"השדה הזה הינו שדה חובה",remote:"נא לתקן שדה זה",email:'נא למלא כתובת דוא"ל חוקית',url:"נא למלא כתובת אינטרנט חוקית",date:"נא למלא תאריך חוקי",dateISO:"נא למלא תאריך חוקי (ISO)",number:"נא למלא מספר",digits:"נא למלא רק מספרים",creditcard:"נא למלא מספר כרטיס אשראי חוקי",equalTo:"נא למלא את אותו ערך שוב",extension:"נא למלא ערך עם סיומת חוקית",maxlength:a.validator.format(".נא לא למלא יותר מ- {0} תווים"),minlength:a.validator.format("נא למלא לפחות {0} תווים"),rangelength:a.validator.format("נא למלא ערך בין {0} ל- {1} תווים"),range:a.validator.format("נא למלא ערך בין {0} ל- {1}"),max:a.validator.format("נא למלא ערך קטן או שווה ל- {0}"),min:a.validator.format("נא למלא ערך גדול או שווה ל- {0}")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_hr.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_hr.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_hr.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_hr.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_hr.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_hr.min.js
new file mode 100644
index 0000000000..7aaebb2cfa
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_hr.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Ovo polje je obavezno.",remote:"Ovo polje treba popraviti.",email:"Unesite ispravnu e-mail adresu.",url:"Unesite ispravan URL.",date:"Unesite ispravan datum.",dateISO:"Unesite ispravan datum (ISO).",number:"Unesite ispravan broj.",digits:"Unesite samo brojeve.",creditcard:"Unesite ispravan broj kreditne kartice.",equalTo:"Unesite ponovo istu vrijednost.",extension:"Unesite vrijednost sa ispravnom ekstenzijom.",maxlength:a.validator.format("Maksimalni broj znakova je {0} ."),minlength:a.validator.format("Minimalni broj znakova je {0} ."),rangelength:a.validator.format("Unesite vrijednost između {0} i {1} znakova."),range:a.validator.format("Unesite vrijednost između {0} i {1}."),max:a.validator.format("Unesite vrijednost manju ili jednaku {0}."),min:a.validator.format("Unesite vrijednost veću ili jednaku {0}.")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_hu.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_hu.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_hu.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_hu.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_hu.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_hu.min.js
new file mode 100644
index 0000000000..555fd02541
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_hu.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Kötelező megadni.",maxlength:a.validator.format("Legfeljebb {0} karakter hosszú legyen."),minlength:a.validator.format("Legalább {0} karakter hosszú legyen."),rangelength:a.validator.format("Legalább {0} és legfeljebb {1} karakter hosszú legyen."),email:"Érvényes e-mail címnek kell lennie.",url:"Érvényes URL-nek kell lennie.",date:"Dátumnak kell lennie.",number:"Számnak kell lennie.",digits:"Csak számjegyek lehetnek.",equalTo:"Meg kell egyeznie a két értéknek.",range:a.validator.format("{0} és {1} közé kell esnie."),max:a.validator.format("Nem lehet nagyobb, mint {0}."),min:a.validator.format("Nem lehet kisebb, mint {0}."),creditcard:"Érvényes hitelkártyaszámnak kell lennie.",remote:"Kérem javítsa ki ezt a mezőt.",dateISO:"Kérem írjon be egy érvényes dátumot (ISO).",step:a.validator.format("A {0} egyik többszörösét adja meg.")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_hy_AM.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_hy_AM.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_hy_AM.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_hy_AM.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_hy_AM.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_hy_AM.min.js
new file mode 100644
index 0000000000..4cece46e73
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_hy_AM.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Պարտադիր լրացման դաշտ",remote:"Ներմուծեք ճիշտ արժեքը",email:"Ներմուծեք վավեր էլեկտրոնային փոստի հասցե",url:"Ներմուծեք վավեր URL",date:"Ներմուծեք վավեր ամսաթիվ",dateISO:"Ներմուծեք ISO ֆորմատով վավեր ամսաթիվ։",number:"Ներմուծեք թիվ",digits:"Ներմուծեք միայն թվեր",creditcard:"Ներմուծեք ճիշտ բանկային քարտի համար",equalTo:"Ներմուծեք միևնուն արժեքը ևս մեկ անգամ",extension:"Ընտրեք ճիշտ ընդլանումով ֆայլ",maxlength:a.validator.format("Ներմուծեք ոչ ավել քան {0} նիշ"),minlength:a.validator.format("Ներմուծեք ոչ պակաս քան {0} նիշ"),rangelength:a.validator.format("Ներմուծեք {0}֊ից {1} երկարությամբ արժեք"),range:a.validator.format("Ներմուծեք թիվ {0}֊ից {1} միջակայքում"),max:a.validator.format("Ներմուծեք թիվ, որը փոքր կամ հավասար է {0}֊ին"),min:a.validator.format("Ներմուծեք թիվ, որը մեծ կամ հավասար է {0}֊ին")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_id.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_id.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_id.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_id.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_id.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_id.min.js
new file mode 100644
index 0000000000..eb1edd9e54
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_id.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Kolom ini diperlukan.",remote:"Harap benarkan kolom ini.",email:"Silakan masukkan format email yang benar.",url:"Silakan masukkan format URL yang benar.",date:"Silakan masukkan format tanggal yang benar.",dateISO:"Silakan masukkan format tanggal(ISO) yang benar.",number:"Silakan masukkan angka yang benar.",digits:"Harap masukan angka saja.",creditcard:"Harap masukkan format kartu kredit yang benar.",equalTo:"Harap masukkan nilai yg sama dengan sebelumnya.",maxlength:a.validator.format("Input dibatasi hanya {0} karakter."),minlength:a.validator.format("Input tidak kurang dari {0} karakter."),rangelength:a.validator.format("Panjang karakter yg diizinkan antara {0} dan {1} karakter."),range:a.validator.format("Harap masukkan nilai antara {0} dan {1}."),max:a.validator.format("Harap masukkan nilai lebih kecil atau sama dengan {0}."),min:a.validator.format("Harap masukkan nilai lebih besar atau sama dengan {0}.")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_is.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_is.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_is.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_is.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_is.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_is.min.js
new file mode 100644
index 0000000000..0b20220dc1
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_is.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Þessi reitur er nauðsynlegur.",remote:"Lagaðu þennan reit.",maxlength:a.validator.format("Sláðu inn mest {0} stafi."),minlength:a.validator.format("Sláðu inn minnst {0} stafi."),rangelength:a.validator.format("Sláðu inn minnst {0} og mest {1} stafi."),email:"Sláðu inn gilt netfang.",url:"Sláðu inn gilda vefslóð.",date:"Sláðu inn gilda dagsetningu.",number:"Sláðu inn tölu.",digits:"Sláðu inn tölustafi eingöngu.",equalTo:"Sláðu sama gildi inn aftur.",range:a.validator.format("Sláðu inn gildi milli {0} og {1}."),max:a.validator.format("Sláðu inn gildi sem er minna en eða jafnt og {0}."),min:a.validator.format("Sláðu inn gildi sem er stærra en eða jafnt og {0}."),creditcard:"Sláðu inn gilt greiðslukortanúmer."}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_it.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_it.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_it.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_it.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_it.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_it.min.js
new file mode 100644
index 0000000000..9d5a5d6f9e
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_it.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Campo obbligatorio",remote:"Controlla questo campo",email:"Inserisci un indirizzo email valido",url:"Inserisci un indirizzo web valido",date:"Inserisci una data valida",dateISO:"Inserisci una data valida (ISO)",number:"Inserisci un numero valido",digits:"Inserisci solo numeri",creditcard:"Inserisci un numero di carta di credito valido",equalTo:"Il valore non corrisponde",extension:"Inserisci un valore con un'estensione valida",maxlength:a.validator.format("Non inserire più di {0} caratteri"),minlength:a.validator.format("Inserisci almeno {0} caratteri"),rangelength:a.validator.format("Inserisci un valore compreso tra {0} e {1} caratteri"),range:a.validator.format("Inserisci un valore compreso tra {0} e {1}"),max:a.validator.format("Inserisci un valore minore o uguale a {0}"),min:a.validator.format("Inserisci un valore maggiore o uguale a {0}"),nifES:"Inserisci un NIF valido",nieES:"Inserisci un NIE valido",cifES:"Inserisci un CIF valido",currency:"Inserisci una valuta valida"}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_ja.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ja.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_ja.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ja.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ja.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ja.min.js
new file mode 100644
index 0000000000..f1028e196b
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ja.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"このフィールドは必須です。",remote:"このフィールドを修正してください。",email:"有効なEメールアドレスを入力してください。",url:"有効なURLを入力してください。",date:"有効な日付を入力してください。",dateISO:"有効な日付(ISO)を入力してください。",number:"有効な数字を入力してください。",digits:"数字のみを入力してください。",creditcard:"有効なクレジットカード番号を入力してください。",equalTo:"同じ値をもう一度入力してください。",extension:"有効な拡張子を含む値を入力してください。",maxlength:a.validator.format("{0} 文字以内で入力してください。"),minlength:a.validator.format("{0} 文字以上で入力してください。"),rangelength:a.validator.format("{0} 文字から {1} 文字までの値を入力してください。"),range:a.validator.format("{0} から {1} までの値を入力してください。"),step:a.validator.format("{0} の倍数を入力してください。"),max:a.validator.format("{0} 以下の値を入力してください。"),min:a.validator.format("{0} 以上の値を入力してください。")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_ka.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ka.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_ka.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ka.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ka.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ka.min.js
new file mode 100644
index 0000000000..5dbe218e51
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ka.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"ამ ველის შევსება აუცილებელია.",remote:"გთხოვთ მიუთითოთ სწორი მნიშვნელობა.",email:"გთხოვთ მიუთითოთ ელ-ფოსტის კორექტული მისამართი.",url:"გთხოვთ მიუთითოთ კორექტული URL.",date:"გთხოვთ მიუთითოთ კორექტული თარიღი.",dateISO:"გთხოვთ მიუთითოთ კორექტული თარიღი ISO ფორმატში.",number:"გთხოვთ მიუთითოთ ციფრი.",digits:"გთხოვთ მიუთითოთ მხოლოდ ციფრები.",creditcard:"გთხოვთ მიუთითოთ საკრედიტო ბარათის კორექტული ნომერი.",equalTo:"გთხოვთ მიუთითოთ ასეთივე მნიშვნელობა კიდევ ერთხელ.",extension:"გთხოვთ აირჩიოთ ფაილი კორექტული გაფართოებით.",maxlength:a.validator.format("დასაშვებია არაუმეტეს {0} სიმბოლო."),minlength:a.validator.format("აუცილებელია შეიყვანოთ მინიმუმ {0} სიმბოლო."),rangelength:a.validator.format("ტექსტში სიმბოლოების რაოდენობა უნდა იყოს {0}-დან {1}-მდე."),range:a.validator.format("გთხოვთ შეიყვანოთ ციფრი {0}-დან {1}-მდე."),max:a.validator.format("გთხოვთ შეიყვანოთ ციფრი რომელიც ნაკლებია ან უდრის {0}-ს."),min:a.validator.format("გთხოვთ შეიყვანოთ ციფრი რომელიც მეტია ან უდრის {0}-ს.")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_kk.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_kk.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_kk.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_kk.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_kk.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_kk.min.js
new file mode 100644
index 0000000000..3465935572
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_kk.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Бұл өрісті міндетті түрде толтырыңыз.",remote:"Дұрыс мағына енгізуіңізді сұраймыз.",email:"Нақты электронды поштаңызды енгізуіңізді сұраймыз.",url:"Нақты URL-ды енгізуіңізді сұраймыз.",date:"Нақты URL-ды енгізуіңізді сұраймыз.",dateISO:"Нақты ISO форматымен сәйкес датасын енгізуіңізді сұраймыз.",number:"Күнді енгізуіңізді сұраймыз.",digits:"Тек қана сандарды енгізуіңізді сұраймыз.",creditcard:"Несие картасының нөмірін дұрыс енгізуіңізді сұраймыз.",equalTo:"Осы мәнді қайта енгізуіңізді сұраймыз.",extension:"Файлдың кеңейтуін дұрыс таңдаңыз.",maxlength:a.validator.format("Ұзындығы {0} символдан көр болмасын."),minlength:a.validator.format("Ұзындығы {0} символдан аз болмасын."),rangelength:a.validator.format("Ұзындығы {0}-{1} дейін мән енгізуіңізді сұраймыз."),range:a.validator.format("Пожалуйста, введите число от {0} до {1}. - {0} - {1} санын енгізуіңізді сұраймыз."),max:a.validator.format("{0} аз немесе тең санын енгізуіңіді сұраймыз."),min:a.validator.format("{0} көп немесе тең санын енгізуіңізді сұраймыз.")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_ko.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ko.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_ko.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ko.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ko.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ko.min.js
new file mode 100644
index 0000000000..c9788f1a72
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ko.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"필수 항목입니다.",remote:"항목을 수정하세요.",email:"유효하지 않은 E-Mail주소입니다.",url:"유효하지 않은 URL입니다.",date:"올바른 날짜를 입력하세요.",dateISO:"올바른 날짜(ISO)를 입력하세요.",number:"유효한 숫자가 아닙니다.",digits:"숫자만 입력 가능합니다.",creditcard:"신용카드 번호가 바르지 않습니다.",equalTo:"같은 값을 다시 입력하세요.",extension:"올바른 확장자가 아닙니다.",maxlength:a.validator.format("{0}자를 넘을 수 없습니다. "),minlength:a.validator.format("{0}자 이상 입력하세요."),rangelength:a.validator.format("문자 길이가 {0} 에서 {1} 사이의 값을 입력하세요."),range:a.validator.format("{0} 에서 {1} 사이의 값을 입력하세요."),max:a.validator.format("{0} 이하의 값을 입력하세요."),min:a.validator.format("{0} 이상의 값을 입력하세요.")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_lt.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_lt.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_lt.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_lt.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_lt.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_lt.min.js
new file mode 100644
index 0000000000..c66863dde9
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_lt.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Šis laukas yra privalomas.",remote:"Prašau pataisyti šį lauką.",email:"Prašau įvesti teisingą elektroninio pašto adresą.",url:"Prašau įvesti teisingą URL.",date:"Prašau įvesti teisingą datą.",dateISO:"Prašau įvesti teisingą datą (ISO).",number:"Prašau įvesti teisingą skaičių.",digits:"Prašau naudoti tik skaitmenis.",creditcard:"Prašau įvesti teisingą kreditinės kortelės numerį.",equalTo:"Prašau įvestį tą pačią reikšmę dar kartą.",extension:"Prašau įvesti reikšmę su teisingu plėtiniu.",maxlength:a.validator.format("Prašau įvesti ne daugiau kaip {0} simbolių."),minlength:a.validator.format("Prašau įvesti bent {0} simbolius."),rangelength:a.validator.format("Prašau įvesti reikšmes, kurių ilgis nuo {0} iki {1} simbolių."),range:a.validator.format("Prašau įvesti reikšmę intervale nuo {0} iki {1}."),max:a.validator.format("Prašau įvesti reikšmę mažesnę arba lygią {0}."),min:a.validator.format("Prašau įvesti reikšmę didesnę arba lygią {0}.")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_lv.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_lv.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_lv.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_lv.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_lv.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_lv.min.js
new file mode 100644
index 0000000000..84bffd5a40
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_lv.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Šis lauks ir obligāts.",remote:"Lūdzu, pārbaudiet šo lauku.",email:"Lūdzu, ievadiet derīgu e-pasta adresi.",url:"Lūdzu, ievadiet derīgu URL adresi.",date:"Lūdzu, ievadiet derīgu datumu.",dateISO:"Lūdzu, ievadiet derīgu datumu (ISO).",number:"Lūdzu, ievadiet derīgu numuru.",digits:"Lūdzu, ievadiet tikai ciparus.",creditcard:"Lūdzu, ievadiet derīgu kredītkartes numuru.",equalTo:"Lūdzu, ievadiet to pašu vēlreiz.",extension:"Lūdzu, ievadiet vērtību ar derīgu paplašinājumu.",maxlength:a.validator.format("Lūdzu, ievadiet ne vairāk kā {0} rakstzīmes."),minlength:a.validator.format("Lūdzu, ievadiet vismaz {0} rakstzīmes."),rangelength:a.validator.format("Lūdzu ievadiet {0} līdz {1} rakstzīmes."),range:a.validator.format("Lūdzu, ievadiet skaitli no {0} līdz {1}."),max:a.validator.format("Lūdzu, ievadiet skaitli, kurš ir mazāks vai vienāds ar {0}."),min:a.validator.format("Lūdzu, ievadiet skaitli, kurš ir lielāks vai vienāds ar {0}.")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_mk.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_mk.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_mk.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_mk.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_mk.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_mk.min.js
new file mode 100644
index 0000000000..0491011d8a
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_mk.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Полето е задолжително.",remote:"Поправете го ова поле",email:"Внесете правилна e-mail адреса",url:"Внесете правилен URL.",date:"Внесете правилен датум",dateISO:"Внесете правилен датум (ISO).",number:"Внесете правилен број.",digits:"Внесете само бројки.",creditcard:"Внесете правилен број на кредитната картичка.",equalTo:"Внесете ја истата вредност повторно.",extension:"Внесете вредност со соодветна екстензија.",maxlength:a.validator.format("Внесете максимално {0} знаци."),minlength:a.validator.format("Внесете барем {0} знаци."),rangelength:a.validator.format("Внесете вредност со должина помеѓу {0} и {1} знаци."),range:a.validator.format("Внесете вредност помеѓу {0} и {1}."),max:a.validator.format("Внесете вредност помала или еднаква на {0}."),min:a.validator.format("Внесете вредност поголема или еднаква на {0}")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_my.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_my.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_my.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_my.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_my.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_my.min.js
new file mode 100644
index 0000000000..7a63267395
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_my.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Medan ini diperlukan.",remote:"Sila betulkan medan ini.",email:"Sila masukkan alamat emel yang betul.",url:"Sila masukkan URL yang betul.",date:"Sila masukkan tarikh yang betul.",dateISO:"Sila masukkan tarikh(ISO) yang betul.",number:"Sila masukkan nombor yang betul.",digits:"Sila masukkan nilai digit sahaja.",creditcard:"Sila masukkan nombor kredit kad yang betul.",equalTo:"Sila masukkan nilai yang sama semula.",extension:"Sila masukkan nilai yang telah diterima.",maxlength:a.validator.format("Sila masukkan tidak lebih dari {0} aksara."),minlength:a.validator.format("Sila masukkan sekurang-kurangnya {0} aksara."),rangelength:a.validator.format("Sila masukkan antara {0} dan {1} panjang aksara."),range:a.validator.format("Sila masukkan nilai antara {0} dan {1} aksara."),max:a.validator.format("Sila masukkan nilai yang kurang atau sama dengan {0}."),min:a.validator.format("Sila masukkan nilai yang lebih atau sama dengan {0}.")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_nl.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_nl.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_nl.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_nl.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_nl.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_nl.min.js
new file mode 100644
index 0000000000..d8c865e324
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_nl.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Dit is een verplicht veld.",remote:"Controleer dit veld.",email:"Vul hier een geldig e-mailadres in.",url:"Vul hier een geldige URL in.",date:"Vul hier een geldige datum in.",dateISO:"Vul hier een geldige datum in (ISO-formaat).",number:"Vul hier een geldig getal in.",digits:"Vul hier alleen getallen in.",creditcard:"Vul hier een geldig creditcardnummer in.",equalTo:"Vul hier dezelfde waarde in.",extension:"Vul hier een waarde in met een geldige extensie.",maxlength:a.validator.format("Vul hier maximaal {0} tekens in."),minlength:a.validator.format("Vul hier minimaal {0} tekens in."),rangelength:a.validator.format("Vul hier een waarde in van minimaal {0} en maximaal {1} tekens."),range:a.validator.format("Vul hier een waarde in van minimaal {0} en maximaal {1}."),max:a.validator.format("Vul hier een waarde in kleiner dan of gelijk aan {0}."),min:a.validator.format("Vul hier een waarde in groter dan of gelijk aan {0}."),step:a.validator.format("Vul hier een veelvoud van {0} in."),iban:"Vul hier een geldig IBAN in.",dateNL:"Vul hier een geldige datum in.",phoneNL:"Vul hier een geldig Nederlands telefoonnummer in.",mobileNL:"Vul hier een geldig Nederlands mobiel telefoonnummer in.",postalcodeNL:"Vul hier een geldige postcode in.",bankaccountNL:"Vul hier een geldig bankrekeningnummer in.",giroaccountNL:"Vul hier een geldig gironummer in.",bankorgiroaccountNL:"Vul hier een geldig bank- of gironummer in."}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_no.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_no.js
similarity index 85%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_no.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_no.js
index ebcca09a79..d6d7be0893 100644
--- a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_no.js
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_no.js
@@ -13,19 +13,18 @@
* Locale: NO (Norwegian; Norsk)
*/
$.extend( $.validator.messages, {
- required: "Dette feltet er obligatorisk.",
- maxlength: $.validator.format( "Maksimalt {0} tegn." ),
- minlength: $.validator.format( "Minimum {0} tegn." ),
- rangelength: $.validator.format( "Angi minimum {0} og maksimum {1} tegn." ),
- email: "Oppgi en gyldig epostadresse.",
+ required: "Angi en verdi.",
+ remote: "Ugyldig verdi.",
+ email: "Angi en gyldig epostadresse.",
url: "Angi en gyldig URL.",
date: "Angi en gyldig dato.",
dateISO: "Angi en gyldig dato (ÅÅÅÅ-MM-DD).",
- dateSE: "Angi en gyldig dato.",
- number: "Angi et gyldig nummer.",
- numberSE: "Angi et gyldig nummer.",
+ number: "Angi et gyldig tall.",
digits: "Skriv kun tall.",
equalTo: "Skriv samme verdi igjen.",
+ maxlength: $.validator.format( "Maksimalt {0} tegn." ),
+ minlength: $.validator.format( "Minimum {0} tegn." ),
+ rangelength: $.validator.format( "Angi minimum {0} og maksimum {1} tegn." ),
range: $.validator.format( "Angi en verdi mellom {0} og {1}." ),
max: $.validator.format( "Angi en verdi som er mindre eller lik {0}." ),
min: $.validator.format( "Angi en verdi som er større eller lik {0}." ),
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_no.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_no.min.js
new file mode 100644
index 0000000000..a3c8858f12
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_no.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Angi en verdi.",remote:"Ugyldig verdi.",email:"Angi en gyldig epostadresse.",url:"Angi en gyldig URL.",date:"Angi en gyldig dato.",dateISO:"Angi en gyldig dato (ÅÅÅÅ-MM-DD).",number:"Angi et gyldig tall.",digits:"Skriv kun tall.",equalTo:"Skriv samme verdi igjen.",maxlength:a.validator.format("Maksimalt {0} tegn."),minlength:a.validator.format("Minimum {0} tegn."),rangelength:a.validator.format("Angi minimum {0} og maksimum {1} tegn."),range:a.validator.format("Angi en verdi mellom {0} og {1}."),max:a.validator.format("Angi en verdi som er mindre eller lik {0}."),min:a.validator.format("Angi en verdi som er større eller lik {0}."),step:a.validator.format("Angi en verdi ganger {0}."),creditcard:"Angi et gyldig kredittkortnummer."}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_pl.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_pl.js
similarity index 96%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_pl.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_pl.js
index f5e847af6e..fc07b85200 100644
--- a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_pl.js
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_pl.js
@@ -25,6 +25,7 @@ $.extend( $.validator.messages, {
equalTo: "Proszę o podanie tej samej wartości ponownie.",
extension: "Proszę o podanie wartości z prawidłowym rozszerzeniem.",
nipPL: "Proszę o podanie prawidłowego numeru NIP.",
+ phonePL: "Proszę o podanie prawidłowego numeru telefonu",
maxlength: $.validator.format( "Proszę o podanie nie więcej niż {0} znaków." ),
minlength: $.validator.format( "Proszę o podanie przynajmniej {0} znaków." ),
rangelength: $.validator.format( "Proszę o podanie wartości o długości od {0} do {1} znaków." ),
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_pl.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_pl.min.js
new file mode 100644
index 0000000000..86b00f8369
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_pl.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"To pole jest wymagane.",remote:"Proszę o wypełnienie tego pola.",email:"Proszę o podanie prawidłowego adresu email.",url:"Proszę o podanie prawidłowego URL.",date:"Proszę o podanie prawidłowej daty.",dateISO:"Proszę o podanie prawidłowej daty (ISO).",number:"Proszę o podanie prawidłowej liczby.",digits:"Proszę o podanie samych cyfr.",creditcard:"Proszę o podanie prawidłowej karty kredytowej.",equalTo:"Proszę o podanie tej samej wartości ponownie.",extension:"Proszę o podanie wartości z prawidłowym rozszerzeniem.",nipPL:"Proszę o podanie prawidłowego numeru NIP.",phonePL:"Proszę o podanie prawidłowego numeru telefonu",maxlength:a.validator.format("Proszę o podanie nie więcej niż {0} znaków."),minlength:a.validator.format("Proszę o podanie przynajmniej {0} znaków."),rangelength:a.validator.format("Proszę o podanie wartości o długości od {0} do {1} znaków."),range:a.validator.format("Proszę o podanie wartości z przedziału od {0} do {1}."),max:a.validator.format("Proszę o podanie wartości mniejszej bądź równej {0}."),min:a.validator.format("Proszę o podanie wartości większej bądź równej {0}."),pattern:a.validator.format("Pole zawiera niedozwolone znaki.")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_pt_BR.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_pt_BR.js
similarity index 79%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_pt_BR.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_pt_BR.js
index d66b03bfdd..1ee999eb24 100644
--- a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_pt_BR.js
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_pt_BR.js
@@ -32,7 +32,7 @@ $.extend( $.validator.messages, {
range: $.validator.format( "Por favor, forneça um valor entre {0} e {1}." ),
max: $.validator.format( "Por favor, forneça um valor menor ou igual a {0}." ),
min: $.validator.format( "Por favor, forneça um valor maior ou igual a {0}." ),
- step: $.validator.format( "Por favor, forneça um valor m´tiplo de {0}." ),
+ step: $.validator.format( "Por favor, forneça um valor múltiplo de {0}." ),
// Metodos Adicionais
maxWords: $.validator.format( "Por favor, forneça com {0} palavras ou menos." ),
@@ -62,27 +62,28 @@ $.extend( $.validator.messages, {
nieES: "Por favor, forneça um NIE válido.",
nifES: "Por favor, forneça um NIF válido.",
nowhitespace: "Por favor, não utilize espaços em branco.",
- pattern: "O formato fornenecido é inválido.",
- phoneNL: "Por favor, forneceça um número de telefone válido.",
- phoneUK: "Por favor, forneceça um número de telefone válido.",
- phoneUS: "Por favor, forneceça um número de telefone válido.",
- phonesUK: "Por favor, forneceça um número de telefone válido.",
- postalCodeCA: "Por favor, forneceça um número de código postal válido.",
- postalcodeIT: "Por favor, forneceça um número de código postal válido.",
- postalcodeNL: "Por favor, forneceça um número de código postal válido.",
- postcodeUK: "Por favor, forneceça um número de código postal válido.",
+ pattern: "O formato fornecido é inválido.",
+ phoneNL: "Por favor, forneça um número de telefone válido.",
+ phoneUK: "Por favor, forneça um número de telefone válido.",
+ phoneUS: "Por favor, forneça um número de telefone válido.",
+ phonesUK: "Por favor, forneça um número de telefone válido.",
+ postalCodeCA: "Por favor, forneça um número de código postal válido.",
+ postalcodeIT: "Por favor, forneça um número de código postal válido.",
+ postalcodeNL: "Por favor, forneça um número de código postal válido.",
+ postcodeUK: "Por favor, forneça um número de código postal válido.",
postalcodeBR: "Por favor, forneça um CEP válido.",
require_from_group: $.validator.format( "Por favor, forneça pelo menos {0} destes campos." ),
skip_or_fill_minimum: $.validator.format( "Por favor, optar entre ignorar esses campos ou preencher pelo menos {0} deles." ),
stateUS: "Por favor, forneça um estado válido.",
strippedminlength: $.validator.format( "Por favor, forneça pelo menos {0} caracteres." ),
- time: "Por favor, forneça um horário válido, no intervado de 00:00 e 23:59.",
- time12h: "Por favor, forneça um horário válido, no intervado de 01:00 e 12:59 am/pm.",
- url2: "Por favor, forneceça uma URL válida.",
- vinUS: "O número de identificação de veículo informada (VIN) é inválido.",
- zipcodeUS: "Por favor, forneceça um código postal americano válido.",
+ time: "Por favor, forneça um horário válido, no intervado de 00:00 a 23:59.",
+ time12h: "Por favor, forneça um horário válido, no intervado de 01:00 a 12:59 am/pm.",
+ url2: "Por favor, forneça uma URL válida.",
+ vinUS: "O número de identificação de veículo informado (VIN) é inválido.",
+ zipcodeUS: "Por favor, forneça um código postal americano válido.",
ziprange: "O código postal deve estar entre 902xx-xxxx e 905xx-xxxx",
- cpfBR: "Por favor, forneça um CPF válido."
+ cpfBR: "Por favor, forneça um CPF válido.",
+ nisBR: "Por favor, forneça um NIS/PIS válido"
} );
return $;
}));
\ No newline at end of file
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_pt_BR.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_pt_BR.min.js
new file mode 100644
index 0000000000..31b9e2ecf3
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_pt_BR.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Este campo é requerido.",remote:"Por favor, corrija este campo.",email:"Por favor, forneça um endereço de email válido.",url:"Por favor, forneça uma URL válida.",date:"Por favor, forneça uma data válida.",dateISO:"Por favor, forneça uma data válida (ISO).",number:"Por favor, forneça um número válido.",digits:"Por favor, forneça somente dígitos.",creditcard:"Por favor, forneça um cartão de crédito válido.",equalTo:"Por favor, forneça o mesmo valor novamente.",maxlength:a.validator.format("Por favor, forneça não mais que {0} caracteres."),minlength:a.validator.format("Por favor, forneça ao menos {0} caracteres."),rangelength:a.validator.format("Por favor, forneça um valor entre {0} e {1} caracteres de comprimento."),range:a.validator.format("Por favor, forneça um valor entre {0} e {1}."),max:a.validator.format("Por favor, forneça um valor menor ou igual a {0}."),min:a.validator.format("Por favor, forneça um valor maior ou igual a {0}."),step:a.validator.format("Por favor, forneça um valor múltiplo de {0}."),maxWords:a.validator.format("Por favor, forneça com {0} palavras ou menos."),minWords:a.validator.format("Por favor, forneça pelo menos {0} palavras."),rangeWords:a.validator.format("Por favor, forneça entre {0} e {1} palavras."),accept:"Por favor, forneça um tipo válido.",alphanumeric:"Por favor, forneça somente com letras, números e sublinhados.",bankaccountNL:"Por favor, forneça com um número de conta bancária válida.",bankorgiroaccountNL:"Por favor, forneça um banco válido ou número de conta.",bic:"Por favor, forneça um código BIC válido.",cifES:"Por favor, forneça um código CIF válido.",creditcardtypes:"Por favor, forneça um número de cartão de crédito válido.",currency:"Por favor, forneça uma moeda válida.",dateFA:"Por favor, forneça uma data correta.",dateITA:"Por favor, forneça uma data correta.",dateNL:"Por favor, forneça uma data correta.",extension:"Por favor, forneça um valor com uma extensão válida.",giroaccountNL:"Por favor, forneça um número de conta corrente válido.",iban:"Por favor, forneça um código IBAN válido.",integer:"Por favor, forneça um número não decimal.",ipv4:"Por favor, forneça um IPv4 válido.",ipv6:"Por favor, forneça um IPv6 válido.",lettersonly:"Por favor, forneça apenas com letras.",letterswithbasicpunc:"Por favor, forneça apenas letras ou pontuações.",mobileNL:"Por favor, forneceça um número válido de telefone.",mobileUK:"Por favor, forneceça um número válido de telefone.",nieES:"Por favor, forneça um NIE válido.",nifES:"Por favor, forneça um NIF válido.",nowhitespace:"Por favor, não utilize espaços em branco.",pattern:"O formato fornecido é inválido.",phoneNL:"Por favor, forneça um número de telefone válido.",phoneUK:"Por favor, forneça um número de telefone válido.",phoneUS:"Por favor, forneça um número de telefone válido.",phonesUK:"Por favor, forneça um número de telefone válido.",postalCodeCA:"Por favor, forneça um número de código postal válido.",postalcodeIT:"Por favor, forneça um número de código postal válido.",postalcodeNL:"Por favor, forneça um número de código postal válido.",postcodeUK:"Por favor, forneça um número de código postal válido.",postalcodeBR:"Por favor, forneça um CEP válido.",require_from_group:a.validator.format("Por favor, forneça pelo menos {0} destes campos."),skip_or_fill_minimum:a.validator.format("Por favor, optar entre ignorar esses campos ou preencher pelo menos {0} deles."),stateUS:"Por favor, forneça um estado válido.",strippedminlength:a.validator.format("Por favor, forneça pelo menos {0} caracteres."),time:"Por favor, forneça um horário válido, no intervado de 00:00 a 23:59.",time12h:"Por favor, forneça um horário válido, no intervado de 01:00 a 12:59 am/pm.",url2:"Por favor, forneça uma URL válida.",vinUS:"O número de identificação de veículo informado (VIN) é inválido.",zipcodeUS:"Por favor, forneça um código postal americano válido.",ziprange:"O código postal deve estar entre 902xx-xxxx e 905xx-xxxx",cpfBR:"Por favor, forneça um CPF válido.",nisBR:"Por favor, forneça um NIS/PIS válido"}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_pt_PT.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_pt_PT.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_pt_PT.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_pt_PT.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_pt_PT.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_pt_PT.min.js
new file mode 100644
index 0000000000..e050c757ee
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_pt_PT.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Campo de preenchimento obrigatório.",remote:"Por favor, corrija este campo.",email:"Por favor, introduza um endereço eletrónico válido.",url:"Por favor, introduza um URL válido.",date:"Por favor, introduza uma data válida.",dateISO:"Por favor, introduza uma data válida (ISO).",number:"Por favor, introduza um número válido.",digits:"Por favor, introduza apenas dígitos.",creditcard:"Por favor, introduza um número de cartão de crédito válido.",equalTo:"Por favor, introduza de novo o mesmo valor.",extension:"Por favor, introduza um ficheiro com uma extensão válida.",maxlength:a.validator.format("Por favor, não introduza mais do que {0} caracteres."),minlength:a.validator.format("Por favor, introduza pelo menos {0} caracteres."),rangelength:a.validator.format("Por favor, introduza entre {0} e {1} caracteres."),range:a.validator.format("Por favor, introduza um valor entre {0} e {1}."),max:a.validator.format("Por favor, introduza um valor menor ou igual a {0}."),min:a.validator.format("Por favor, introduza um valor maior ou igual a {0}."),nifES:"Por favor, introduza um NIF válido.",nieES:"Por favor, introduza um NIE válido.",cifES:"Por favor, introduza um CIF válido."}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_ro.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ro.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_ro.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ro.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ro.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ro.min.js
new file mode 100644
index 0000000000..c02d82157b
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ro.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Acest câmp este obligatoriu.",remote:"Te rugăm să completezi acest câmp.",email:"Te rugăm să introduci o adresă de email validă",url:"Te rugăm sa introduci o adresă URL validă.",date:"Te rugăm să introduci o dată corectă.",dateISO:"Te rugăm să introduci o dată (ISO) corectă.",number:"Te rugăm să introduci un număr întreg valid.",digits:"Te rugăm să introduci doar cifre.",creditcard:"Te rugăm să introduci un numar de carte de credit valid.",equalTo:"Te rugăm să reintroduci valoarea.",extension:"Te rugăm să introduci o valoare cu o extensie validă.",maxlength:a.validator.format("Te rugăm să nu introduci mai mult de {0} caractere."),minlength:a.validator.format("Te rugăm să introduci cel puțin {0} caractere."),rangelength:a.validator.format("Te rugăm să introduci o valoare între {0} și {1} caractere."),range:a.validator.format("Te rugăm să introduci o valoare între {0} și {1}."),max:a.validator.format("Te rugăm să introduci o valoare egal sau mai mică decât {0}."),min:a.validator.format("Te rugăm să introduci o valoare egal sau mai mare decât {0}.")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_ru.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ru.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_ru.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ru.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ru.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ru.min.js
new file mode 100644
index 0000000000..f246919f98
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ru.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Это поле необходимо заполнить.",remote:"Пожалуйста, введите правильное значение.",email:"Пожалуйста, введите корректный адрес электронной почты.",url:"Пожалуйста, введите корректный URL.",date:"Пожалуйста, введите корректную дату.",dateISO:"Пожалуйста, введите корректную дату в формате ISO.",number:"Пожалуйста, введите число.",digits:"Пожалуйста, вводите только цифры.",creditcard:"Пожалуйста, введите правильный номер кредитной карты.",equalTo:"Пожалуйста, введите такое же значение ещё раз.",extension:"Пожалуйста, выберите файл с правильным расширением.",maxlength:a.validator.format("Пожалуйста, введите не больше {0} символов."),minlength:a.validator.format("Пожалуйста, введите не меньше {0} символов."),rangelength:a.validator.format("Пожалуйста, введите значение длиной от {0} до {1} символов."),range:a.validator.format("Пожалуйста, введите число от {0} до {1}."),max:a.validator.format("Пожалуйста, введите число, меньшее или равное {0}."),min:a.validator.format("Пожалуйста, введите число, большее или равное {0}.")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_sd.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sd.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_sd.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sd.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sd.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sd.min.js
new file mode 100644
index 0000000000..3ad37fac36
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sd.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"هنن جاين جي ضرورت آهي",remote:"هنن جاين جي ضرورت آهي",email:"لکيل اي ميل غلط آهي",url:"لکيل ايڊريس غلط آهي",date:"لکيل تاريخ غلط آهي",dateISO:"جي معيار جي مطابق نه آهي (ISO) لکيل تاريخ",number:"لکيل انگ صحيح ناهي",digits:"رڳو انگ داخل ڪري سگهجي ٿو",creditcard:"لکيل ڪارڊ نمبر صحيح نه آهي",equalTo:"داخل ٿيل ڀيٽ صحيح نه آهي",extension:"لکيل غلط آهي",maxlength:a.validator.format("وڌ کان وڌ {0} جي داخلا ڪري سگهجي ٿي"),minlength:a.validator.format("گهٽ ۾ گهٽ {0} جي داخلا ڪرڻ ضروري آهي"),rangelength:a.validator.format("داخلا جو {0} ۽ {1}جي وچ ۾ هجڻ ضروري آهي"),range:a.validator.format("داخلا جو {0} ۽ {1}جي وچ ۾ هجڻ ضروري آهي"),max:a.validator.format("وڌ کان وڌ {0} جي داخلا ڪري سگهجي ٿي"),min:a.validator.format("گهٽ ۾ گهٽ {0} جي داخلا ڪرڻ ضروري آهي")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_si.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_si.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_si.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_si.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_si.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_si.min.js
new file mode 100644
index 0000000000..8102f35353
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_si.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"To polje je obvezno.",remote:"Vpis v tem polju ni v pravi obliki.",email:"Prosimo, vnesite pravi email naslov.",url:"Prosimo, vnesite pravi URL.",date:"Prosimo, vnesite pravi datum.",dateISO:"Prosimo, vnesite pravi datum (ISO).",number:"Prosimo, vnesite pravo številko.",digits:"Prosimo, vnesite samo številke.",creditcard:"Prosimo, vnesite pravo številko kreditne kartice.",equalTo:"Prosimo, ponovno vnesite enako vsebino.",extension:"Prosimo, vnesite vsebino z pravo končnico.",maxlength:a.validator.format("Prosimo, da ne vnašate več kot {0} znakov."),minlength:a.validator.format("Prosimo, vnesite vsaj {0} znakov."),rangelength:a.validator.format("Prosimo, vnesite od {0} do {1} znakov."),range:a.validator.format("Prosimo, vnesite vrednost med {0} in {1}."),max:a.validator.format("Prosimo, vnesite vrednost manjšo ali enako {0}."),min:a.validator.format("Prosimo, vnesite vrednost večjo ali enako {0}.")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_sk.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sk.js
similarity index 89%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_sk.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sk.js
index deeed4a980..0f9becf59f 100644
--- a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_sk.js
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sk.js
@@ -26,7 +26,8 @@ $.extend( $.validator.messages, {
range: $.validator.format( "Musí byť medzi {0} a {1}." ),
max: $.validator.format( "Nemôže byť viac ako {0}." ),
min: $.validator.format( "Nemôže byť menej ako {0}." ),
- creditcard: "Číslo platobnej karty musí byť platné."
+ creditcard: "Číslo platobnej karty musí byť platné.",
+ step: $.validator.format( "Musí byť násobkom čísla {0}." )
} );
return $;
}));
\ No newline at end of file
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sk.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sk.min.js
new file mode 100644
index 0000000000..972471ea1d
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sk.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Povinné zadať.",maxlength:a.validator.format("Maximálne {0} znakov."),minlength:a.validator.format("Minimálne {0} znakov."),rangelength:a.validator.format("Minimálne {0} a maximálne {1} znakov."),email:"E-mailová adresa musí byť platná.",url:"URL musí byť platná.",date:"Musí byť dátum.",number:"Musí byť číslo.",digits:"Môže obsahovať iba číslice.",equalTo:"Dve hodnoty sa musia rovnať.",range:a.validator.format("Musí byť medzi {0} a {1}."),max:a.validator.format("Nemôže byť viac ako {0}."),min:a.validator.format("Nemôže byť menej ako {0}."),creditcard:"Číslo platobnej karty musí byť platné.",step:a.validator.format("Musí byť násobkom čísla {0}.")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_sl.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sl.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_sl.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sl.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sl.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sl.min.js
new file mode 100644
index 0000000000..390b1ef63a
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sl.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"To polje je obvezno.",remote:"Prosimo popravite to polje.",email:"Prosimo vnesite veljaven email naslov.",url:"Prosimo vnesite veljaven URL naslov.",date:"Prosimo vnesite veljaven datum.",dateISO:"Prosimo vnesite veljaven ISO datum.",number:"Prosimo vnesite veljavno število.",digits:"Prosimo vnesite samo števila.",creditcard:"Prosimo vnesite veljavno številko kreditne kartice.",equalTo:"Prosimo ponovno vnesite vrednost.",extension:"Prosimo vnesite vrednost z veljavno končnico.",maxlength:a.validator.format("Prosimo vnesite največ {0} znakov."),minlength:a.validator.format("Prosimo vnesite najmanj {0} znakov."),rangelength:a.validator.format("Prosimo vnesite najmanj {0} in največ {1} znakov."),range:a.validator.format("Prosimo vnesite vrednost med {0} in {1}."),max:a.validator.format("Prosimo vnesite vrednost manjše ali enako {0}."),min:a.validator.format("Prosimo vnesite vrednost večje ali enako {0}.")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_sr.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sr.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_sr.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sr.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sr.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sr.min.js
new file mode 100644
index 0000000000..9bcb6e6022
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sr.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Поље је обавезно.",remote:"Средите ово поље.",email:"Унесите исправну и-мејл адресу.",url:"Унесите исправан URL.",date:"Унесите исправан датум.",dateISO:"Унесите исправан датум (ISO).",number:"Унесите исправан број.",digits:"Унесите само цифе.",creditcard:"Унесите исправан број кредитне картице.",equalTo:"Унесите исту вредност поново.",extension:"Унесите вредност са одговарајућом екстензијом.",maxlength:a.validator.format("Унесите мање од {0} карактера."),minlength:a.validator.format("Унесите барем {0} карактера."),rangelength:a.validator.format("Унесите вредност дугачку између {0} и {1} карактера."),range:a.validator.format("Унесите вредност између {0} и {1}."),max:a.validator.format("Унесите вредност мању или једнаку {0}."),min:a.validator.format("Унесите вредност већу или једнаку {0}.")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_sr_lat.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sr_lat.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_sr_lat.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sr_lat.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sr_lat.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sr_lat.min.js
new file mode 100644
index 0000000000..182f68cbd3
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sr_lat.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Polje je obavezno.",remote:"Sredite ovo polje.",email:"Unesite ispravnu e-mail adresu",url:"Unesite ispravan URL.",date:"Unesite ispravan datum.",dateISO:"Unesite ispravan datum (ISO).",number:"Unesite ispravan broj.",digits:"Unesite samo cifre.",creditcard:"Unesite ispravan broj kreditne kartice.",equalTo:"Unesite istu vrednost ponovo.",extension:"Unesite vrednost sa odgovarajućom ekstenzijom.",maxlength:a.validator.format("Unesite manje od {0} karaktera."),minlength:a.validator.format("Unesite barem {0} karaktera."),rangelength:a.validator.format("Unesite vrednost dugačku između {0} i {1} karaktera."),range:a.validator.format("Unesite vrednost između {0} i {1}."),max:a.validator.format("Unesite vrednost manju ili jednaku {0}."),min:a.validator.format("Unesite vrednost veću ili jednaku {0}.")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_sv.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sv.js
similarity index 96%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_sv.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sv.js
index 6fc26b13ef..5b5c3cbab3 100644
--- a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_sv.js
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sv.js
@@ -14,6 +14,7 @@
*/
$.extend( $.validator.messages, {
required: "Detta fält är obligatoriskt.",
+ remote: "Var snäll och åtgärda detta fält.",
maxlength: $.validator.format( "Du får ange högst {0} tecken." ),
minlength: $.validator.format( "Du måste ange minst {0} tecken." ),
rangelength: $.validator.format( "Ange minst {0} och max {1} tecken." ),
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sv.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sv.min.js
new file mode 100644
index 0000000000..642fda4c96
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_sv.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Detta fält är obligatoriskt.",remote:"Var snäll och åtgärda detta fält.",maxlength:a.validator.format("Du får ange högst {0} tecken."),minlength:a.validator.format("Du måste ange minst {0} tecken."),rangelength:a.validator.format("Ange minst {0} och max {1} tecken."),email:"Ange en korrekt e-postadress.",url:"Ange en korrekt URL.",date:"Ange ett korrekt datum.",dateISO:"Ange ett korrekt datum (ÅÅÅÅ-MM-DD).",number:"Ange ett korrekt nummer.",digits:"Ange endast siffror.",equalTo:"Ange samma värde igen.",range:a.validator.format("Ange ett värde mellan {0} och {1}."),max:a.validator.format("Ange ett värde som är mindre eller lika med {0}."),min:a.validator.format("Ange ett värde som är större eller lika med {0}."),creditcard:"Ange ett korrekt kreditkortsnummer."}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_th.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_th.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_th.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_th.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_th.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_th.min.js
new file mode 100644
index 0000000000..3bd08d4a2b
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_th.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"โปรดระบุ",remote:"โปรดแก้ไขให้ถูกต้อง",email:"โปรดระบุที่อยู่อีเมล์ที่ถูกต้อง",url:"โปรดระบุ URL ที่ถูกต้อง",date:"โปรดระบุวันที่ ที่ถูกต้อง",dateISO:"โปรดระบุวันที่ ที่ถูกต้อง (ระบบ ISO).",number:"โปรดระบุทศนิยมที่ถูกต้อง",digits:"โปรดระบุจำนวนเต็มที่ถูกต้อง",creditcard:"โปรดระบุรหัสบัตรเครดิตที่ถูกต้อง",equalTo:"โปรดระบุค่าเดิมอีกครั้ง",extension:"โปรดระบุค่าที่มีส่วนขยายที่ถูกต้อง",maxlength:a.validator.format("โปรดอย่าระบุค่าที่ยาวกว่า {0} อักขระ"),minlength:a.validator.format("โปรดอย่าระบุค่าที่สั้นกว่า {0} อักขระ"),rangelength:a.validator.format("โปรดอย่าระบุค่าความยาวระหว่าง {0} ถึง {1} อักขระ"),range:a.validator.format("โปรดระบุค่าระหว่าง {0} และ {1}"),max:a.validator.format("โปรดระบุค่าน้อยกว่าหรือเท่ากับ {0}"),min:a.validator.format("โปรดระบุค่ามากกว่าหรือเท่ากับ {0}")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_tj.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_tj.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_tj.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_tj.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_tj.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_tj.min.js
new file mode 100644
index 0000000000..d48fb465d4
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_tj.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Ворид кардани ин филд маҷбури аст.",remote:"Илтимос, маълумоти саҳеҳ ворид кунед.",email:"Илтимос, почтаи электронии саҳеҳ ворид кунед.",url:"Илтимос, URL адреси саҳеҳ ворид кунед.",date:"Илтимос, таърихи саҳеҳ ворид кунед.",dateISO:"Илтимос, таърихи саҳеҳи (ISO)ӣ ворид кунед.",number:"Илтимос, рақамҳои саҳеҳ ворид кунед.",digits:"Илтимос, танҳо рақам ворид кунед.",creditcard:"Илтимос, кредит карди саҳеҳ ворид кунед.",equalTo:"Илтимос, миқдори баробар ворид кунед.",extension:"Илтимос, қофияи файлро дуруст интихоб кунед",maxlength:a.validator.format("Илтимос, бештар аз {0} рамз ворид накунед."),minlength:a.validator.format("Илтимос, камтар аз {0} рамз ворид накунед."),rangelength:a.validator.format("Илтимос, камтар аз {0} ва зиёда аз {1} рамз ворид кунед."),range:a.validator.format("Илтимос, аз {0} то {1} рақам зиёд ворид кунед."),max:a.validator.format("Илтимос, бештар аз {0} рақам ворид накунед."),min:a.validator.format("Илтимос, камтар аз {0} рақам ворид накунед.")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_tr.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_tr.js
similarity index 94%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_tr.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_tr.js
index 3721028279..bb8c32ee89 100644
--- a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_tr.js
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_tr.js
@@ -30,7 +30,7 @@ $.extend( $.validator.messages, {
range: $.validator.format( "Lütfen {0} ile {1} arasında bir değer giriniz." ),
max: $.validator.format( "Lütfen {0} değerine eşit ya da daha küçük bir değer giriniz." ),
min: $.validator.format( "Lütfen {0} değerine eşit ya da daha büyük bir değer giriniz." ),
- require_from_group: "Lütfen bu alanların en az {0} tanesini doldurunuz."
+ require_from_group: $.validator.format( "Lütfen bu alanların en az {0} tanesini doldurunuz." )
} );
return $;
}));
\ No newline at end of file
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_tr.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_tr.min.js
new file mode 100644
index 0000000000..5a489649c0
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_tr.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Bu alanın doldurulması zorunludur.",remote:"Lütfen bu alanı düzeltin.",email:"Lütfen geçerli bir e-posta adresi giriniz.",url:"Lütfen geçerli bir web adresi (URL) giriniz.",date:"Lütfen geçerli bir tarih giriniz.",dateISO:"Lütfen geçerli bir tarih giriniz(ISO formatında)",number:"Lütfen geçerli bir sayı giriniz.",digits:"Lütfen sadece sayısal karakterler giriniz.",creditcard:"Lütfen geçerli bir kredi kartı giriniz.",equalTo:"Lütfen aynı değeri tekrar giriniz.",extension:"Lütfen geçerli uzantıya sahip bir değer giriniz.",maxlength:a.validator.format("Lütfen en fazla {0} karakter uzunluğunda bir değer giriniz."),minlength:a.validator.format("Lütfen en az {0} karakter uzunluğunda bir değer giriniz."),rangelength:a.validator.format("Lütfen en az {0} ve en fazla {1} uzunluğunda bir değer giriniz."),range:a.validator.format("Lütfen {0} ile {1} arasında bir değer giriniz."),max:a.validator.format("Lütfen {0} değerine eşit ya da daha küçük bir değer giriniz."),min:a.validator.format("Lütfen {0} değerine eşit ya da daha büyük bir değer giriniz."),require_from_group:a.validator.format("Lütfen bu alanların en az {0} tanesini doldurunuz.")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_uk.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_uk.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_uk.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_uk.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_uk.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_uk.min.js
new file mode 100644
index 0000000000..8408a37fc2
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_uk.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Це поле необхідно заповнити.",remote:"Будь ласка, введіть правильне значення.",email:"Будь ласка, введіть коректну адресу електронної пошти.",url:"Будь ласка, введіть коректний URL.",date:"Будь ласка, введіть коректну дату.",dateISO:"Будь ласка, введіть коректну дату у форматі ISO.",number:"Будь ласка, введіть число.",digits:"Вводите потрібно лише цифри.",creditcard:"Будь ласка, введіть правильний номер кредитної карти.",equalTo:"Будь ласка, введіть таке ж значення ще раз.",extension:"Будь ласка, виберіть файл з правильним розширенням.",maxlength:a.validator.format("Будь ласка, введіть не більше {0} символів."),minlength:a.validator.format("Будь ласка, введіть не менше {0} символів."),rangelength:a.validator.format("Будь ласка, введіть значення довжиною від {0} до {1} символів."),range:a.validator.format("Будь ласка, введіть число від {0} до {1}."),max:a.validator.format("Будь ласка, введіть число, менше або рівно {0}."),min:a.validator.format("Будь ласка, введіть число, більше або рівно {0}.")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_ur.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ur.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_ur.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ur.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ur.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ur.min.js
new file mode 100644
index 0000000000..913f565bc8
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_ur.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"ان معلومات کا اندراج ضروری ہے",remote:"ان معلومات کا اندراج ضروری ہے",email:"درج کی ہوئی ای میل درست نہیں ہے",url:"درج کیا گیا پتہ درست نہیں ہے",date:"درج کی گئی تاریخ درست نہیں ہے",dateISO:"معیار کے مطابق نہیں ہے (ISO) درج کی گئی تاریخ",number:"درج کیےگئے ہندسے درست نہیں ہیں",digits:"صرف ہندسے اندراج کئے جاسکتے ہیں",creditcard:"درج کیا گیا کارڈ نمبر درست نہیں ہے",equalTo:"اندراج کا موازنہ درست نہیں ہے",extension:"اندراج درست نہیں ہے",maxlength:a.validator.format("زیادہ سے زیادہ {0} کا اندراج کر سکتے ہیں"),minlength:a.validator.format("کم سے کم {0} کا اندراج کرنا ضروری ہے"),rangelength:a.validator.format("اندراج کا {0} اور {1}کے درمیان ہونا ضروری ہے"),range:a.validator.format("اندراج کا {0} اور {1} کے درمیان ہونا ضروری ہے"),max:a.validator.format("زیادہ سے زیادہ {0} کا اندراج کر سکتے ہیں"),min:a.validator.format("کم سے کم {0} کا اندراج کرنا ضروری ہے")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_vi.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_vi.js
similarity index 94%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_vi.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_vi.js
index 6759f7dcef..ae415453dc 100644
--- a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_vi.js
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_vi.js
@@ -29,7 +29,7 @@ $.extend( $.validator.messages, {
rangelength: $.validator.format( "Hãy nhập từ {0} đến {1} kí tự." ),
range: $.validator.format( "Hãy nhập từ {0} đến {1}." ),
max: $.validator.format( "Hãy nhập từ {0} trở xuống." ),
- min: $.validator.format( "Hãy nhập từ {1} trở lên." )
+ min: $.validator.format( "Hãy nhập từ {0} trở lên." )
} );
return $;
}));
\ No newline at end of file
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_vi.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_vi.min.js
new file mode 100644
index 0000000000..7031b18d44
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_vi.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"Hãy nhập.",remote:"Hãy sửa cho đúng.",email:"Hãy nhập email.",url:"Hãy nhập URL.",date:"Hãy nhập ngày.",dateISO:"Hãy nhập ngày (ISO).",number:"Hãy nhập số.",digits:"Hãy nhập chữ số.",creditcard:"Hãy nhập số thẻ tín dụng.",equalTo:"Hãy nhập thêm lần nữa.",extension:"Phần mở rộng không đúng.",maxlength:a.validator.format("Hãy nhập từ {0} kí tự trở xuống."),minlength:a.validator.format("Hãy nhập từ {0} kí tự trở lên."),rangelength:a.validator.format("Hãy nhập từ {0} đến {1} kí tự."),range:a.validator.format("Hãy nhập từ {0} đến {1}."),max:a.validator.format("Hãy nhập từ {0} trở xuống."),min:a.validator.format("Hãy nhập từ {0} trở lên.")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_zh.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_zh.js
similarity index 95%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_zh.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_zh.js
index c39d13191b..afc74ab066 100644
--- a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_zh.js
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_zh.js
@@ -28,6 +28,7 @@ $.extend( $.validator.messages, {
minlength: $.validator.format( "最少要输入 {0} 个字符" ),
rangelength: $.validator.format( "请输入长度在 {0} 到 {1} 之间的字符串" ),
range: $.validator.format( "请输入范围在 {0} 到 {1} 之间的数值" ),
+ step: $.validator.format( "请输入 {0} 的整数倍值" ),
max: $.validator.format( "请输入不大于 {0} 的数值" ),
min: $.validator.format( "请输入不小于 {0} 的数值" )
} );
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_zh.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_zh.min.js
new file mode 100644
index 0000000000..b60ce95272
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_zh.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"这是必填字段",remote:"请修正此字段",email:"请输入有效的电子邮件地址",url:"请输入有效的网址",date:"请输入有效的日期",dateISO:"请输入有效的日期 (YYYY-MM-DD)",number:"请输入有效的数字",digits:"只能输入数字",creditcard:"请输入有效的信用卡号码",equalTo:"你的输入不相同",extension:"请输入有效的后缀",maxlength:a.validator.format("最多可以输入 {0} 个字符"),minlength:a.validator.format("最少要输入 {0} 个字符"),rangelength:a.validator.format("请输入长度在 {0} 到 {1} 之间的字符串"),range:a.validator.format("请输入范围在 {0} 到 {1} 之间的数值"),step:a.validator.format("请输入 {0} 的整数倍值"),max:a.validator.format("请输入不大于 {0} 的数值"),min:a.validator.format("请输入不小于 {0} 的数值")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_zh_TW.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_zh_TW.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_zh_TW.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_zh_TW.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_zh_TW.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_zh_TW.min.js
new file mode 100644
index 0000000000..1cb607be27
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/messages_zh_TW.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.messages,{required:"必須填寫",remote:"請修正此欄位",email:"請輸入有效的電子郵件",url:"請輸入有效的網址",date:"請輸入有效的日期",dateISO:"請輸入有效的日期 (YYYY-MM-DD)",number:"請輸入正確的數值",digits:"只可輸入數字",creditcard:"請輸入有效的信用卡號碼",equalTo:"請重複輸入一次",extension:"請輸入有效的後綴",maxlength:a.validator.format("最多 {0} 個字"),minlength:a.validator.format("最少 {0} 個字"),rangelength:a.validator.format("請輸入長度為 {0} 至 {1} 之間的字串"),range:a.validator.format("請輸入 {0} 至 {1} 之間的數值"),max:a.validator.format("請輸入不大於 {0} 的數值"),min:a.validator.format("請輸入不小於 {0} 的數值")}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/methods_de.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/methods_de.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/methods_de.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/methods_de.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/methods_de.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/methods_de.min.js
new file mode 100644
index 0000000000..7e6544afb0
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/methods_de.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.methods,{date:function(a,b){return this.optional(b)||/^\d\d?\.\d\d?\.\d\d\d?\d?$/.test(a)},number:function(a,b){return this.optional(b)||/^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(a)}}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/methods_es_CL.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/methods_es_CL.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/methods_es_CL.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/methods_es_CL.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/methods_es_CL.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/methods_es_CL.min.js
new file mode 100644
index 0000000000..09d85751ba
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/methods_es_CL.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.methods,{date:function(a,b){return this.optional(b)||/^\d\d?\-\d\d?\-\d\d\d?\d?$/.test(a)},number:function(a,b){return this.optional(b)||/^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(a)}}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/methods_fi.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/methods_fi.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/methods_fi.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/methods_fi.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/methods_fi.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/methods_fi.min.js
new file mode 100644
index 0000000000..365591ea9e
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/methods_fi.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.methods,{date:function(a,b){return this.optional(b)||/^\d{1,2}\.\d{1,2}\.\d{4}$/.test(a)},number:function(a,b){return this.optional(b)||/^-?(?:\d+)(?:,\d+)?$/.test(a)}}),a});
\ No newline at end of file
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/methods_it.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/methods_it.js
new file mode 100644
index 0000000000..b0ad79e501
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/methods_it.js
@@ -0,0 +1,24 @@
+(function( factory ) {
+ if ( typeof define === "function" && define.amd ) {
+ define( ["jquery", "../jquery.validate"], factory );
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory( require( "jquery" ) );
+ } else {
+ factory( jQuery );
+ }
+}(function( $ ) {
+
+/*
+ * Localized default methods for the jQuery validation plugin.
+ * Locale: IT
+ */
+$.extend( $.validator.methods, {
+ date: function( value, element ) {
+ return this.optional( element ) || /^\d\d?\-\d\d?\-\d\d\d?\d?$/.test( value );
+ },
+ number: function( value, element ) {
+ return this.optional( element ) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test( value );
+ }
+} );
+return $;
+}));
\ No newline at end of file
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/methods_it.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/methods_it.min.js
new file mode 100644
index 0000000000..09d85751ba
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/methods_it.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.methods,{date:function(a,b){return this.optional(b)||/^\d\d?\-\d\d?\-\d\d\d?\d?$/.test(a)},number:function(a,b){return this.optional(b)||/^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(a)}}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/methods_nl.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/methods_nl.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/methods_nl.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/methods_nl.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/methods_nl.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/methods_nl.min.js
new file mode 100644
index 0000000000..34c46092a3
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/methods_nl.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.methods,{date:function(a,b){return this.optional(b)||/^\d\d?[\.\/\-]\d\d?[\.\/\-]\d\d\d?\d?$/.test(a)},number:function(a,b){return this.optional(b)||/^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(a)}}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/methods_pt.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/methods_pt.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/methods_pt.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/methods_pt.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/methods_pt.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/methods_pt.min.js
new file mode 100644
index 0000000000..9352a9f354
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery-validation/localization/methods_pt.min.js
@@ -0,0 +1,4 @@
+/*! jQuery Validation Plugin - v1.18.0 - 9/9/2018
+ * https://jqueryvalidation.org/
+ * Copyright (c) 2018 Jörn Zaefferer; Licensed MIT */
+!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){return a.extend(a.validator.methods,{date:function(a,b){return this.optional(b)||/^\d\d?\/\d\d?\/\d\d\d?\d?$/.test(a)}}),a});
\ No newline at end of file
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery/jquery.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery/jquery.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery/jquery.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/jquery/jquery.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.concat.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css b/modules/docs/app/VoloDocs.Web/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/malihu-custom-scrollbar-plugin/mCSB_buttons.png b/modules/docs/app/VoloDocs.Web/wwwroot/libs/malihu-custom-scrollbar-plugin/mCSB_buttons.png
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/malihu-custom-scrollbar-plugin/mCSB_buttons.png
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/malihu-custom-scrollbar-plugin/mCSB_buttons.png
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/malihu-custom-scrollbar-plugin/package.json b/modules/docs/app/VoloDocs.Web/wwwroot/libs/malihu-custom-scrollbar-plugin/package.json
new file mode 100644
index 0000000000..5ec72f5da8
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/malihu-custom-scrollbar-plugin/package.json
@@ -0,0 +1,68 @@
+{
+ "_args": [
+ [
+ "malihu-custom-scrollbar-plugin@3.1.5",
+ "D:\\Github\\abp\\modules\\docs\\app\\VoloDocs"
+ ]
+ ],
+ "_from": "malihu-custom-scrollbar-plugin@3.1.5",
+ "_id": "malihu-custom-scrollbar-plugin@3.1.5",
+ "_inBundle": false,
+ "_integrity": "sha1-MQzsxeWUFaHCnp37XStuAdZqKe8=",
+ "_location": "/malihu-custom-scrollbar-plugin",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "version",
+ "registry": true,
+ "raw": "malihu-custom-scrollbar-plugin@3.1.5",
+ "name": "malihu-custom-scrollbar-plugin",
+ "escapedName": "malihu-custom-scrollbar-plugin",
+ "rawSpec": "3.1.5",
+ "saveSpec": null,
+ "fetchSpec": "3.1.5"
+ },
+ "_requiredBy": [
+ "/@abp/malihu-custom-scrollbar-plugin"
+ ],
+ "_resolved": "https://registry.npmjs.org/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.5.tgz",
+ "_spec": "3.1.5",
+ "_where": "D:\\Github\\abp\\modules\\docs\\app\\VoloDocs",
+ "author": {
+ "name": "malihu",
+ "url": "http://manos.malihu.gr"
+ },
+ "bugs": {
+ "url": "https://github.com/malihu/malihu-custom-scrollbar-plugin/issues"
+ },
+ "dependencies": {
+ "jquery-mousewheel": ">=3.0.6"
+ },
+ "description": "Highly customizable custom scrollbar jQuery plugin, featuring vertical/horizontal scrollbars, scrolling momentum, mouse-wheel, keyboard and touch support user defined callbacks etc.",
+ "files": [
+ "jquery.mCustomScrollbar.js",
+ "jquery.mCustomScrollbar.concat.min.js",
+ "jquery.mCustomScrollbar.css",
+ "mCSB_buttons.png",
+ "readme.md"
+ ],
+ "homepage": "http://manos.malihu.gr/jquery-custom-content-scroller",
+ "jam": {
+ "dependencies": {
+ "jquery": ">=1.6",
+ "jquery-mousewheel": ">=3.0.6"
+ }
+ },
+ "keywords": [
+ "jquery-plugin",
+ "custom-scrollbar",
+ "scrollbar"
+ ],
+ "license": "MIT",
+ "main": "./jquery.mCustomScrollbar.js",
+ "name": "malihu-custom-scrollbar-plugin",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/malihu/malihu-custom-scrollbar-plugin.git"
+ },
+ "version": "3.1.5"
+}
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/malihu-custom-scrollbar-plugin/readme.md b/modules/docs/app/VoloDocs.Web/wwwroot/libs/malihu-custom-scrollbar-plugin/readme.md
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/malihu-custom-scrollbar-plugin/readme.md
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/malihu-custom-scrollbar-plugin/readme.md
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/popper.js/popper.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/popper.js/popper.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/popper.js/popper.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/popper.js/popper.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/CHANGELOG.md b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/CHANGELOG.md
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/CHANGELOG.md
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/CHANGELOG.md
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/README.md b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/README.md
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/README.md
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/README.md
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components.json b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components.json
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components.json
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components.json
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/index.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/index.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/index.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/index.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-abap.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-abap.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-abap.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-abap.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-abap.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-abap.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-abap.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-abap.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-actionscript.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-actionscript.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-actionscript.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-actionscript.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-actionscript.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-actionscript.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-actionscript.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-actionscript.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-ada.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-ada.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-ada.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-ada.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-ada.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-ada.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-ada.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-ada.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-apacheconf.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-apacheconf.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-apacheconf.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-apacheconf.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-apacheconf.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-apacheconf.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-apacheconf.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-apacheconf.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-apl.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-apl.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-apl.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-apl.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-apl.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-apl.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-apl.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-apl.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-applescript.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-applescript.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-applescript.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-applescript.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-applescript.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-applescript.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-applescript.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-applescript.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-arduino.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-arduino.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-arduino.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-arduino.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-arduino.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-arduino.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-arduino.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-arduino.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-arff.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-arff.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-arff.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-arff.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-arff.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-arff.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-arff.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-arff.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-asciidoc.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-asciidoc.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-asciidoc.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-asciidoc.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-asciidoc.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-asciidoc.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-asciidoc.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-asciidoc.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-asm6502.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-asm6502.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-asm6502.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-asm6502.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-asm6502.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-asm6502.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-asm6502.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-asm6502.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-aspnet.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-aspnet.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-aspnet.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-aspnet.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-aspnet.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-aspnet.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-aspnet.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-aspnet.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-autohotkey.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-autohotkey.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-autohotkey.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-autohotkey.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-autohotkey.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-autohotkey.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-autohotkey.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-autohotkey.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-autoit.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-autoit.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-autoit.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-autoit.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-autoit.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-autoit.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-autoit.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-autoit.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-bash.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-bash.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-bash.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-bash.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-bash.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-bash.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-bash.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-bash.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-basic.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-basic.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-basic.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-basic.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-basic.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-basic.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-basic.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-basic.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-batch.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-batch.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-batch.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-batch.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-batch.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-batch.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-batch.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-batch.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-bison.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-bison.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-bison.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-bison.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-bison.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-bison.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-bison.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-bison.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-brainfuck.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-brainfuck.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-brainfuck.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-brainfuck.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-brainfuck.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-brainfuck.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-brainfuck.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-brainfuck.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-bro.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-bro.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-bro.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-bro.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-bro.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-bro.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-bro.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-bro.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-c.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-c.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-c.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-c.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-c.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-c.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-c.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-c.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-clike.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-clike.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-clike.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-clike.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-clike.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-clike.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-clike.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-clike.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-clojure.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-clojure.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-clojure.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-clojure.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-clojure.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-clojure.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-clojure.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-clojure.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-coffeescript.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-coffeescript.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-coffeescript.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-coffeescript.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-coffeescript.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-coffeescript.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-coffeescript.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-coffeescript.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-core.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-core.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-core.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-core.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-core.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-core.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-core.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-core.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-cpp.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-cpp.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-cpp.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-cpp.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-cpp.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-cpp.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-cpp.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-cpp.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-crystal.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-crystal.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-crystal.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-crystal.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-crystal.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-crystal.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-crystal.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-crystal.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-csharp.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-csharp.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-csharp.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-csharp.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-csharp.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-csharp.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-csharp.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-csharp.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-csp.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-csp.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-csp.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-csp.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-csp.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-csp.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-csp.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-csp.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-css-extras.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-css-extras.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-css-extras.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-css-extras.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-css-extras.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-css-extras.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-css-extras.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-css-extras.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-css.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-css.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-css.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-css.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-css.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-css.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-css.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-css.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-d.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-d.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-d.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-d.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-d.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-d.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-d.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-d.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-dart.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-dart.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-dart.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-dart.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-dart.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-dart.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-dart.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-dart.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-diff.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-diff.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-diff.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-diff.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-diff.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-diff.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-diff.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-diff.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-django.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-django.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-django.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-django.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-django.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-django.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-django.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-django.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-docker.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-docker.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-docker.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-docker.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-docker.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-docker.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-docker.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-docker.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-eiffel.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-eiffel.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-eiffel.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-eiffel.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-eiffel.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-eiffel.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-eiffel.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-eiffel.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-elixir.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-elixir.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-elixir.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-elixir.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-elixir.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-elixir.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-elixir.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-elixir.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-elm.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-elm.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-elm.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-elm.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-elm.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-elm.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-elm.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-elm.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-erb.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-erb.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-erb.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-erb.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-erb.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-erb.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-erb.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-erb.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-erlang.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-erlang.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-erlang.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-erlang.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-erlang.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-erlang.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-erlang.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-erlang.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-flow.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-flow.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-flow.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-flow.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-flow.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-flow.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-flow.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-flow.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-fortran.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-fortran.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-fortran.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-fortran.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-fortran.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-fortran.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-fortran.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-fortran.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-fsharp.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-fsharp.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-fsharp.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-fsharp.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-fsharp.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-fsharp.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-fsharp.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-fsharp.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-gedcom.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-gedcom.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-gedcom.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-gedcom.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-gedcom.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-gedcom.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-gedcom.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-gedcom.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-gherkin.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-gherkin.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-gherkin.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-gherkin.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-gherkin.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-gherkin.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-gherkin.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-gherkin.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-git.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-git.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-git.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-git.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-git.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-git.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-git.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-git.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-glsl.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-glsl.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-glsl.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-glsl.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-glsl.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-glsl.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-glsl.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-glsl.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-go.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-go.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-go.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-go.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-go.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-go.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-go.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-go.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-graphql.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-graphql.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-graphql.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-graphql.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-graphql.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-graphql.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-graphql.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-graphql.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-groovy.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-groovy.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-groovy.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-groovy.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-groovy.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-groovy.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-groovy.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-groovy.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-haml.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-haml.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-haml.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-haml.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-haml.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-haml.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-haml.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-haml.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-handlebars.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-handlebars.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-handlebars.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-handlebars.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-handlebars.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-handlebars.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-handlebars.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-handlebars.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-haskell.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-haskell.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-haskell.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-haskell.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-haskell.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-haskell.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-haskell.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-haskell.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-haxe.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-haxe.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-haxe.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-haxe.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-haxe.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-haxe.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-haxe.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-haxe.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-hpkp.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-hpkp.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-hpkp.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-hpkp.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-hpkp.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-hpkp.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-hpkp.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-hpkp.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-hsts.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-hsts.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-hsts.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-hsts.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-hsts.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-hsts.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-hsts.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-hsts.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-http.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-http.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-http.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-http.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-http.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-http.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-http.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-http.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-ichigojam.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-ichigojam.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-ichigojam.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-ichigojam.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-ichigojam.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-ichigojam.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-ichigojam.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-ichigojam.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-icon.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-icon.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-icon.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-icon.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-icon.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-icon.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-icon.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-icon.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-inform7.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-inform7.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-inform7.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-inform7.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-inform7.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-inform7.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-inform7.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-inform7.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-ini.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-ini.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-ini.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-ini.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-ini.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-ini.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-ini.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-ini.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-io.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-io.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-io.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-io.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-io.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-io.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-io.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-io.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-j.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-j.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-j.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-j.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-j.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-j.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-j.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-j.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-java.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-java.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-java.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-java.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-java.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-java.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-java.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-java.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-javascript.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-javascript.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-javascript.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-javascript.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-javascript.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-javascript.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-javascript.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-javascript.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-jolie.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-jolie.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-jolie.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-jolie.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-jolie.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-jolie.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-jolie.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-jolie.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-json.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-json.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-json.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-json.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-json.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-json.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-json.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-json.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-jsx.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-jsx.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-jsx.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-jsx.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-jsx.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-jsx.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-jsx.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-jsx.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-julia.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-julia.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-julia.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-julia.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-julia.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-julia.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-julia.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-julia.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-keyman.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-keyman.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-keyman.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-keyman.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-keyman.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-keyman.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-keyman.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-keyman.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-kotlin.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-kotlin.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-kotlin.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-kotlin.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-kotlin.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-kotlin.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-kotlin.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-kotlin.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-latex.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-latex.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-latex.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-latex.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-latex.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-latex.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-latex.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-latex.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-less.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-less.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-less.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-less.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-less.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-less.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-less.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-less.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-liquid.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-liquid.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-liquid.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-liquid.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-liquid.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-liquid.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-liquid.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-liquid.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-lisp.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-lisp.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-lisp.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-lisp.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-lisp.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-lisp.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-lisp.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-lisp.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-livescript.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-livescript.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-livescript.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-livescript.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-livescript.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-livescript.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-livescript.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-livescript.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-lolcode.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-lolcode.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-lolcode.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-lolcode.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-lolcode.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-lolcode.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-lolcode.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-lolcode.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-lua.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-lua.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-lua.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-lua.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-lua.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-lua.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-lua.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-lua.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-makefile.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-makefile.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-makefile.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-makefile.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-makefile.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-makefile.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-makefile.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-makefile.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-markdown.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-markdown.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-markdown.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-markdown.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-markdown.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-markdown.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-markdown.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-markdown.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-markup-templating.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-markup-templating.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-markup-templating.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-markup-templating.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-markup-templating.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-markup-templating.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-markup-templating.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-markup-templating.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-markup.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-markup.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-markup.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-markup.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-markup.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-markup.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-markup.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-markup.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-matlab.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-matlab.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-matlab.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-matlab.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-matlab.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-matlab.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-matlab.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-matlab.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-mel.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-mel.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-mel.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-mel.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-mel.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-mel.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-mel.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-mel.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-mizar.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-mizar.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-mizar.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-mizar.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-mizar.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-mizar.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-mizar.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-mizar.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-monkey.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-monkey.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-monkey.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-monkey.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-monkey.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-monkey.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-monkey.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-monkey.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-n4js.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-n4js.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-n4js.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-n4js.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-n4js.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-n4js.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-n4js.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-n4js.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-nasm.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-nasm.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-nasm.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-nasm.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-nasm.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-nasm.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-nasm.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-nasm.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-nginx.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-nginx.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-nginx.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-nginx.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-nginx.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-nginx.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-nginx.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-nginx.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-nim.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-nim.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-nim.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-nim.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-nim.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-nim.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-nim.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-nim.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-nix.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-nix.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-nix.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-nix.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-nix.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-nix.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-nix.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-nix.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-nsis.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-nsis.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-nsis.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-nsis.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-nsis.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-nsis.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-nsis.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-nsis.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-objectivec.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-objectivec.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-objectivec.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-objectivec.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-objectivec.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-objectivec.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-objectivec.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-objectivec.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-ocaml.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-ocaml.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-ocaml.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-ocaml.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-ocaml.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-ocaml.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-ocaml.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-ocaml.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-opencl.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-opencl.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-opencl.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-opencl.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-opencl.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-opencl.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-opencl.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-opencl.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-oz.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-oz.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-oz.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-oz.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-oz.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-oz.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-oz.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-oz.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-parigp.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-parigp.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-parigp.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-parigp.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-parigp.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-parigp.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-parigp.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-parigp.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-parser.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-parser.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-parser.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-parser.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-parser.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-parser.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-parser.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-parser.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-pascal.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-pascal.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-pascal.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-pascal.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-pascal.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-pascal.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-pascal.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-pascal.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-perl.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-perl.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-perl.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-perl.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-perl.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-perl.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-perl.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-perl.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-php-extras.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-php-extras.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-php-extras.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-php-extras.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-php-extras.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-php-extras.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-php-extras.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-php-extras.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-php.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-php.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-php.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-php.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-php.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-php.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-php.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-php.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-plsql.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-plsql.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-plsql.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-plsql.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-plsql.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-plsql.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-plsql.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-plsql.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-powershell.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-powershell.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-powershell.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-powershell.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-powershell.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-powershell.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-powershell.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-powershell.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-processing.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-processing.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-processing.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-processing.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-processing.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-processing.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-processing.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-processing.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-prolog.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-prolog.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-prolog.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-prolog.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-prolog.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-prolog.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-prolog.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-prolog.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-properties.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-properties.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-properties.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-properties.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-properties.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-properties.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-properties.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-properties.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-protobuf.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-protobuf.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-protobuf.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-protobuf.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-protobuf.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-protobuf.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-protobuf.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-protobuf.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-pug.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-pug.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-pug.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-pug.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-pug.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-pug.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-pug.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-pug.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-puppet.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-puppet.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-puppet.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-puppet.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-puppet.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-puppet.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-puppet.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-puppet.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-pure.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-pure.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-pure.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-pure.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-pure.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-pure.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-pure.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-pure.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-python.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-python.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-python.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-python.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-python.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-python.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-python.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-python.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-q.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-q.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-q.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-q.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-q.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-q.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-q.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-q.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-qore.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-qore.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-qore.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-qore.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-qore.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-qore.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-qore.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-qore.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-r.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-r.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-r.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-r.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-r.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-r.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-r.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-r.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-reason.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-reason.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-reason.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-reason.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-reason.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-reason.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-reason.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-reason.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-renpy.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-renpy.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-renpy.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-renpy.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-renpy.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-renpy.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-renpy.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-renpy.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-rest.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-rest.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-rest.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-rest.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-rest.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-rest.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-rest.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-rest.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-rip.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-rip.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-rip.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-rip.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-rip.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-rip.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-rip.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-rip.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-roboconf.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-roboconf.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-roboconf.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-roboconf.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-roboconf.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-roboconf.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-roboconf.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-roboconf.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-ruby.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-ruby.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-ruby.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-ruby.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-ruby.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-ruby.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-ruby.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-ruby.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-rust.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-rust.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-rust.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-rust.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-rust.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-rust.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-rust.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-rust.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-sas.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-sas.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-sas.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-sas.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-sas.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-sas.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-sas.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-sas.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-sass.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-sass.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-sass.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-sass.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-sass.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-sass.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-sass.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-sass.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-scala.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-scala.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-scala.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-scala.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-scala.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-scala.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-scala.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-scala.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-scheme.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-scheme.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-scheme.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-scheme.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-scheme.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-scheme.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-scheme.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-scheme.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-scss.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-scss.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-scss.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-scss.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-scss.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-scss.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-scss.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-scss.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-smalltalk.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-smalltalk.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-smalltalk.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-smalltalk.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-smalltalk.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-smalltalk.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-smalltalk.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-smalltalk.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-smarty.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-smarty.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-smarty.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-smarty.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-smarty.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-smarty.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-smarty.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-smarty.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-soy.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-soy.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-soy.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-soy.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-soy.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-soy.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-soy.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-soy.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-sql.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-sql.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-sql.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-sql.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-sql.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-sql.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-sql.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-sql.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-stylus.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-stylus.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-stylus.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-stylus.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-stylus.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-stylus.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-stylus.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-stylus.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-swift.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-swift.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-swift.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-swift.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-swift.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-swift.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-swift.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-swift.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-tap.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-tap.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-tap.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-tap.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-tap.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-tap.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-tap.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-tap.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-tcl.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-tcl.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-tcl.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-tcl.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-tcl.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-tcl.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-tcl.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-tcl.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-textile.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-textile.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-textile.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-textile.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-textile.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-textile.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-textile.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-textile.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-tsx.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-tsx.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-tsx.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-tsx.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-tsx.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-tsx.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-tsx.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-tsx.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-tt2.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-tt2.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-tt2.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-tt2.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-tt2.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-tt2.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-tt2.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-tt2.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-twig.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-twig.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-twig.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-twig.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-twig.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-twig.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-twig.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-twig.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-typescript.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-typescript.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-typescript.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-typescript.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-typescript.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-typescript.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-typescript.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-typescript.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-vbnet.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-vbnet.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-vbnet.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-vbnet.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-vbnet.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-vbnet.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-vbnet.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-vbnet.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-velocity.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-velocity.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-velocity.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-velocity.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-velocity.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-velocity.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-velocity.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-velocity.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-verilog.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-verilog.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-verilog.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-verilog.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-verilog.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-verilog.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-verilog.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-verilog.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-vhdl.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-vhdl.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-vhdl.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-vhdl.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-vhdl.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-vhdl.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-vhdl.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-vhdl.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-vim.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-vim.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-vim.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-vim.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-vim.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-vim.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-vim.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-vim.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-visual-basic.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-visual-basic.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-visual-basic.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-visual-basic.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-visual-basic.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-visual-basic.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-visual-basic.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-visual-basic.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-wasm.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-wasm.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-wasm.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-wasm.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-wasm.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-wasm.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-wasm.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-wasm.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-wiki.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-wiki.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-wiki.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-wiki.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-wiki.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-wiki.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-wiki.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-wiki.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-xeora.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-xeora.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-xeora.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-xeora.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-xeora.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-xeora.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-xeora.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-xeora.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-xojo.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-xojo.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-xojo.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-xojo.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-xojo.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-xojo.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-xojo.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-xojo.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-xquery.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-xquery.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-xquery.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-xquery.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-xquery.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-xquery.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-xquery.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-xquery.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-yaml.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-yaml.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-yaml.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-yaml.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-yaml.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-yaml.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/components/prism-yaml.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/components/prism-yaml.min.js
diff --git a/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/package.json b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/package.json
new file mode 100644
index 0000000000..9e462c482f
--- /dev/null
+++ b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/package.json
@@ -0,0 +1,83 @@
+{
+ "_args": [
+ [
+ "prismjs@1.15.0",
+ "D:\\Github\\abp\\modules\\docs\\app\\VoloDocs"
+ ]
+ ],
+ "_from": "prismjs@1.15.0",
+ "_id": "prismjs@1.15.0",
+ "_inBundle": false,
+ "_integrity": "sha512-Lf2JrFYx8FanHrjoV5oL8YHCclLQgbJcVZR+gikGGMqz6ub5QVWDTM6YIwm3BuPxM/LOV+rKns3LssXNLIf+DA==",
+ "_location": "/prismjs",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "version",
+ "registry": true,
+ "raw": "prismjs@1.15.0",
+ "name": "prismjs",
+ "escapedName": "prismjs",
+ "rawSpec": "1.15.0",
+ "saveSpec": null,
+ "fetchSpec": "1.15.0"
+ },
+ "_requiredBy": [
+ "/@abp/prismjs"
+ ],
+ "_resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.15.0.tgz",
+ "_spec": "1.15.0",
+ "_where": "D:\\Github\\abp\\modules\\docs\\app\\VoloDocs",
+ "author": {
+ "name": "Lea Verou"
+ },
+ "bugs": {
+ "url": "https://github.com/LeaVerou/prism/issues"
+ },
+ "dependencies": {
+ "clipboard": "^2.0.0"
+ },
+ "description": "Lightweight, robust, elegant syntax highlighting. A spin-off project from Dabblet.",
+ "devDependencies": {
+ "chai": "^2.3.0",
+ "gulp": "^3.8.6",
+ "gulp-concat": "^2.3.4",
+ "gulp-header": "^1.0.5",
+ "gulp-rename": "^1.2.0",
+ "gulp-replace": "^0.5.4",
+ "gulp-uglify": "^0.3.1",
+ "mocha": "^2.2.5",
+ "yargs": "^3.26.0"
+ },
+ "homepage": "https://github.com/LeaVerou/prism#readme",
+ "jspm": {
+ "main": "prism",
+ "registry": "jspm",
+ "jspmPackage": true,
+ "format": "global",
+ "files": [
+ "components/**/*.js",
+ "plugins/**/*",
+ "themes/*.css",
+ "prism.js"
+ ]
+ },
+ "keywords": [
+ "prism",
+ "highlight"
+ ],
+ "license": "MIT",
+ "main": "prism.js",
+ "name": "prismjs",
+ "optionalDependencies": {
+ "clipboard": "^2.0.0"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/LeaVerou/prism.git"
+ },
+ "scripts": {
+ "test": "mocha tests/testrunner-tests.js && mocha tests/run.js"
+ },
+ "style": "themes/prism.css",
+ "version": "1.15.0"
+}
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/autolinker/prism-autolinker.css b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/autolinker/prism-autolinker.css
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/autolinker/prism-autolinker.css
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/autolinker/prism-autolinker.css
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/autolinker/prism-autolinker.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/autolinker/prism-autolinker.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/autolinker/prism-autolinker.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/autolinker/prism-autolinker.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/autolinker/prism-autolinker.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/autolinker/prism-autolinker.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/autolinker/prism-autolinker.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/autolinker/prism-autolinker.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/autoloader/prism-autoloader.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/autoloader/prism-autoloader.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/autoloader/prism-autoloader.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/autoloader/prism-autoloader.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/autoloader/prism-autoloader.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/autoloader/prism-autoloader.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/autoloader/prism-autoloader.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/autoloader/prism-autoloader.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/command-line/prism-command-line.css b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/command-line/prism-command-line.css
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/command-line/prism-command-line.css
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/command-line/prism-command-line.css
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/command-line/prism-command-line.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/command-line/prism-command-line.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/command-line/prism-command-line.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/command-line/prism-command-line.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/command-line/prism-command-line.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/command-line/prism-command-line.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/command-line/prism-command-line.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/command-line/prism-command-line.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/custom-class/prism-custom-class.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/custom-class/prism-custom-class.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/custom-class/prism-custom-class.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/custom-class/prism-custom-class.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/custom-class/prism-custom-class.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/custom-class/prism-custom-class.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/custom-class/prism-custom-class.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/custom-class/prism-custom-class.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/data-uri-highlight/prism-data-uri-highlight.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/data-uri-highlight/prism-data-uri-highlight.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/data-uri-highlight/prism-data-uri-highlight.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/data-uri-highlight/prism-data-uri-highlight.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/data-uri-highlight/prism-data-uri-highlight.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/data-uri-highlight/prism-data-uri-highlight.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/data-uri-highlight/prism-data-uri-highlight.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/data-uri-highlight/prism-data-uri-highlight.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/file-highlight/prism-file-highlight.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/file-highlight/prism-file-highlight.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/file-highlight/prism-file-highlight.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/file-highlight/prism-file-highlight.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/file-highlight/prism-file-highlight.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/file-highlight/prism-file-highlight.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/file-highlight/prism-file-highlight.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/file-highlight/prism-file-highlight.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/highlight-keywords/prism-highlight-keywords.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/highlight-keywords/prism-highlight-keywords.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/highlight-keywords/prism-highlight-keywords.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/highlight-keywords/prism-highlight-keywords.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/highlight-keywords/prism-highlight-keywords.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/highlight-keywords/prism-highlight-keywords.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/highlight-keywords/prism-highlight-keywords.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/highlight-keywords/prism-highlight-keywords.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/jsonp-highlight/prism-jsonp-highlight.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/jsonp-highlight/prism-jsonp-highlight.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/jsonp-highlight/prism-jsonp-highlight.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/jsonp-highlight/prism-jsonp-highlight.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/jsonp-highlight/prism-jsonp-highlight.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/jsonp-highlight/prism-jsonp-highlight.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/jsonp-highlight/prism-jsonp-highlight.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/jsonp-highlight/prism-jsonp-highlight.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/keep-markup/prism-keep-markup.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/keep-markup/prism-keep-markup.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/keep-markup/prism-keep-markup.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/keep-markup/prism-keep-markup.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/keep-markup/prism-keep-markup.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/keep-markup/prism-keep-markup.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/keep-markup/prism-keep-markup.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/keep-markup/prism-keep-markup.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/line-highlight/prism-line-highlight.css b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/line-highlight/prism-line-highlight.css
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/line-highlight/prism-line-highlight.css
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/line-highlight/prism-line-highlight.css
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/line-highlight/prism-line-highlight.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/line-highlight/prism-line-highlight.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/line-highlight/prism-line-highlight.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/line-highlight/prism-line-highlight.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/line-highlight/prism-line-highlight.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/line-highlight/prism-line-highlight.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/line-highlight/prism-line-highlight.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/line-highlight/prism-line-highlight.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/line-numbers/prism-line-numbers.css b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/line-numbers/prism-line-numbers.css
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/line-numbers/prism-line-numbers.css
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/line-numbers/prism-line-numbers.css
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/line-numbers/prism-line-numbers.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/line-numbers/prism-line-numbers.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/line-numbers/prism-line-numbers.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/line-numbers/prism-line-numbers.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/line-numbers/prism-line-numbers.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/line-numbers/prism-line-numbers.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/line-numbers/prism-line-numbers.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/line-numbers/prism-line-numbers.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/normalize-whitespace/prism-normalize-whitespace.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/normalize-whitespace/prism-normalize-whitespace.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/normalize-whitespace/prism-normalize-whitespace.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/normalize-whitespace/prism-normalize-whitespace.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/normalize-whitespace/prism-normalize-whitespace.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/normalize-whitespace/prism-normalize-whitespace.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/normalize-whitespace/prism-normalize-whitespace.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/normalize-whitespace/prism-normalize-whitespace.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/previewers/prism-previewers.css b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/previewers/prism-previewers.css
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/previewers/prism-previewers.css
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/previewers/prism-previewers.css
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/previewers/prism-previewers.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/previewers/prism-previewers.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/previewers/prism-previewers.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/previewers/prism-previewers.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/previewers/prism-previewers.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/previewers/prism-previewers.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/previewers/prism-previewers.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/previewers/prism-previewers.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/remove-initial-line-feed/prism-remove-initial-line-feed.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/remove-initial-line-feed/prism-remove-initial-line-feed.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/remove-initial-line-feed/prism-remove-initial-line-feed.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/remove-initial-line-feed/prism-remove-initial-line-feed.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/remove-initial-line-feed/prism-remove-initial-line-feed.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/remove-initial-line-feed/prism-remove-initial-line-feed.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/remove-initial-line-feed/prism-remove-initial-line-feed.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/remove-initial-line-feed/prism-remove-initial-line-feed.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/show-invisibles/prism-show-invisibles.css b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/show-invisibles/prism-show-invisibles.css
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/show-invisibles/prism-show-invisibles.css
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/show-invisibles/prism-show-invisibles.css
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/show-invisibles/prism-show-invisibles.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/show-invisibles/prism-show-invisibles.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/show-invisibles/prism-show-invisibles.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/show-invisibles/prism-show-invisibles.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/show-invisibles/prism-show-invisibles.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/show-invisibles/prism-show-invisibles.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/show-invisibles/prism-show-invisibles.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/show-invisibles/prism-show-invisibles.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/show-language/prism-show-language.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/show-language/prism-show-language.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/show-language/prism-show-language.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/show-language/prism-show-language.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/show-language/prism-show-language.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/show-language/prism-show-language.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/show-language/prism-show-language.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/show-language/prism-show-language.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/toolbar/prism-toolbar.css b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/toolbar/prism-toolbar.css
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/toolbar/prism-toolbar.css
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/toolbar/prism-toolbar.css
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/toolbar/prism-toolbar.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/toolbar/prism-toolbar.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/toolbar/prism-toolbar.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/toolbar/prism-toolbar.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/toolbar/prism-toolbar.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/toolbar/prism-toolbar.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/toolbar/prism-toolbar.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/toolbar/prism-toolbar.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/unescaped-markup/prism-unescaped-markup.css b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/unescaped-markup/prism-unescaped-markup.css
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/unescaped-markup/prism-unescaped-markup.css
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/unescaped-markup/prism-unescaped-markup.css
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/unescaped-markup/prism-unescaped-markup.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/unescaped-markup/prism-unescaped-markup.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/unescaped-markup/prism-unescaped-markup.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/unescaped-markup/prism-unescaped-markup.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/unescaped-markup/prism-unescaped-markup.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/unescaped-markup/prism-unescaped-markup.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/unescaped-markup/prism-unescaped-markup.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/unescaped-markup/prism-unescaped-markup.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/wpd/prism-wpd.css b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/wpd/prism-wpd.css
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/wpd/prism-wpd.css
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/wpd/prism-wpd.css
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/wpd/prism-wpd.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/wpd/prism-wpd.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/wpd/prism-wpd.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/wpd/prism-wpd.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/wpd/prism-wpd.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/wpd/prism-wpd.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/plugins/wpd/prism-wpd.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/plugins/wpd/prism-wpd.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/prism.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/prism.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/prism.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/prism.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/themes/prism-coy.css b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/themes/prism-coy.css
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/themes/prism-coy.css
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/themes/prism-coy.css
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/themes/prism-dark.css b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/themes/prism-dark.css
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/themes/prism-dark.css
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/themes/prism-dark.css
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/themes/prism-funky.css b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/themes/prism-funky.css
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/themes/prism-funky.css
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/themes/prism-funky.css
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/themes/prism-okaidia.css b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/themes/prism-okaidia.css
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/themes/prism-okaidia.css
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/themes/prism-okaidia.css
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/themes/prism-solarizedlight.css b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/themes/prism-solarizedlight.css
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/themes/prism-solarizedlight.css
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/themes/prism-solarizedlight.css
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/themes/prism-tomorrow.css b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/themes/prism-tomorrow.css
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/themes/prism-tomorrow.css
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/themes/prism-tomorrow.css
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/themes/prism-twilight.css b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/themes/prism-twilight.css
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/themes/prism-twilight.css
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/themes/prism-twilight.css
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/themes/prism.css b/modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/themes/prism.css
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/prismjs/themes/prism.css
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/prismjs/themes/prism.css
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/css/select2.min.css b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/css/select2.min.css
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/css/select2.min.css
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/css/select2.min.css
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/af.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/af.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/af.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/af.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/ar.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/ar.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/ar.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/ar.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/az.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/az.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/az.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/az.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/bg.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/bg.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/bg.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/bg.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/bs.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/bs.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/bs.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/bs.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/ca.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/ca.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/ca.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/ca.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/cs.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/cs.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/cs.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/cs.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/da.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/da.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/da.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/da.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/de.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/de.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/de.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/de.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/dsb.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/dsb.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/dsb.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/dsb.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/el.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/el.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/el.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/el.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/en.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/en.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/en.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/en.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/es.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/es.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/es.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/es.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/et.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/et.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/et.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/et.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/eu.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/eu.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/eu.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/eu.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/fa.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/fa.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/fa.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/fa.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/fi.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/fi.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/fi.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/fi.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/fr.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/fr.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/fr.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/fr.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/gl.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/gl.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/gl.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/gl.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/he.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/he.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/he.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/he.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/hi.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/hi.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/hi.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/hi.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/hr.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/hr.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/hr.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/hr.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/hsb.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/hsb.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/hsb.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/hsb.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/hu.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/hu.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/hu.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/hu.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/hy.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/hy.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/hy.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/hy.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/id.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/id.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/id.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/id.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/is.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/is.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/is.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/is.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/it.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/it.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/it.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/it.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/ja.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/ja.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/ja.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/ja.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/km.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/km.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/km.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/km.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/ko.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/ko.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/ko.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/ko.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/lt.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/lt.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/lt.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/lt.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/lv.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/lv.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/lv.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/lv.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/mk.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/mk.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/mk.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/mk.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/ms.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/ms.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/ms.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/ms.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/nb.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/nb.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/nb.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/nb.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/nl.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/nl.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/nl.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/nl.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/pl.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/pl.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/pl.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/pl.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/ps.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/ps.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/ps.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/ps.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/pt-BR.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/pt-BR.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/pt-BR.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/pt-BR.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/pt.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/pt.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/pt.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/pt.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/ro.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/ro.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/ro.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/ro.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/ru.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/ru.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/ru.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/ru.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/sk.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/sk.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/sk.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/sk.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/sl.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/sl.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/sl.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/sl.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/sr-Cyrl.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/sr-Cyrl.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/sr-Cyrl.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/sr-Cyrl.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/sr.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/sr.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/sr.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/sr.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/sv.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/sv.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/sv.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/sv.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/th.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/th.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/th.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/th.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/tr.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/tr.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/tr.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/tr.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/uk.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/uk.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/uk.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/uk.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/vi.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/vi.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/vi.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/vi.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/zh-CN.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/zh-CN.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/zh-CN.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/zh-CN.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/zh-TW.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/zh-TW.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/i18n/zh-TW.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/i18n/zh-TW.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/select2.full.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/select2.full.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/select2.full.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/select2.full.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/select2.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/select2.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/select2/js/select2.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/select2/js/select2.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/sweetalert/sweetalert.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/sweetalert/sweetalert.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/sweetalert/sweetalert.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/sweetalert/sweetalert.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/jquery.timeago.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/jquery.timeago.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/jquery.timeago.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/jquery.timeago.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/README.md b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/README.md
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/README.md
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/README.md
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.af.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.af.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.af.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.af.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.am.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.am.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.am.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.am.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.ar.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.ar.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.ar.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.ar.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.az-short.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.az-short.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.az-short.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.az-short.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.az.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.az.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.az.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.az.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.bg.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.bg.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.bg.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.bg.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.bs.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.bs.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.bs.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.bs.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.ca.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.ca.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.ca.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.ca.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.cs.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.cs.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.cs.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.cs.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.cy.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.cy.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.cy.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.cy.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.da.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.da.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.da.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.da.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.de-short.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.de-short.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.de-short.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.de-short.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.de.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.de.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.de.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.de.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.dv.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.dv.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.dv.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.dv.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.el.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.el.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.el.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.el.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.en-short.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.en-short.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.en-short.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.en-short.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.en.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.en.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.en.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.en.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.es-short.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.es-short.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.es-short.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.es-short.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.es.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.es.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.es.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.es.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.et.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.et.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.et.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.et.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.eu.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.eu.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.eu.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.eu.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.fa-short.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.fa-short.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.fa-short.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.fa-short.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.fa.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.fa.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.fa.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.fa.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.fi.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.fi.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.fi.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.fi.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.fr-short.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.fr-short.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.fr-short.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.fr-short.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.fr.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.fr.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.fr.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.fr.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.gl.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.gl.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.gl.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.gl.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.he.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.he.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.he.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.he.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.hr.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.hr.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.hr.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.hr.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.hu.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.hu.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.hu.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.hu.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.hy.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.hy.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.hy.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.hy.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.id.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.id.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.id.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.id.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.is.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.is.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.is.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.is.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.it-short.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.it-short.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.it-short.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.it-short.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.it.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.it.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.it.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.it.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.ja.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.ja.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.ja.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.ja.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.jv.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.jv.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.jv.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.jv.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.ko.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.ko.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.ko.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.ko.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.ky.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.ky.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.ky.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.ky.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.lt.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.lt.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.lt.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.lt.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.lv.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.lv.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.lv.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.lv.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.mk.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.mk.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.mk.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.mk.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.nl.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.nl.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.nl.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.nl.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.no.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.no.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.no.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.no.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.pl.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.pl.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.pl.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.pl.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.pt-br-short.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.pt-br-short.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.pt-br-short.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.pt-br-short.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.pt-br.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.pt-br.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.pt-br.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.pt-br.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.pt-short.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.pt-short.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.pt-short.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.pt-short.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.pt.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.pt.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.pt.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.pt.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.ro.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.ro.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.ro.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.ro.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.rs.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.rs.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.rs.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.rs.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.ru.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.ru.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.ru.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.ru.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.rw.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.rw.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.rw.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.rw.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.si.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.si.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.si.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.si.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.sk.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.sk.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.sk.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.sk.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.sl.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.sl.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.sl.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.sl.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.sq.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.sq.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.sq.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.sq.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.sr.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.sr.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.sr.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.sr.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.sv.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.sv.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.sv.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.sv.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.th.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.th.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.th.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.th.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.tr-short.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.tr-short.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.tr-short.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.tr-short.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.tr.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.tr.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.tr.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.tr.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.uk.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.uk.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.uk.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.uk.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.ur.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.ur.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.ur.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.ur.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.uz.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.uz.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.uz.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.uz.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.vi.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.vi.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.vi.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.vi.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.zh-CN.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.zh-CN.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.zh-CN.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.zh-CN.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.zh-TW.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.zh-TW.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/timeago/locales/jquery.timeago.zh-TW.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/timeago/locales/jquery.timeago.zh-TW.js
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/toastr/toastr.css b/modules/docs/app/VoloDocs.Web/wwwroot/libs/toastr/toastr.css
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/toastr/toastr.css
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/toastr/toastr.css
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/toastr/toastr.js.map b/modules/docs/app/VoloDocs.Web/wwwroot/libs/toastr/toastr.js.map
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/toastr/toastr.js.map
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/toastr/toastr.js.map
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/toastr/toastr.min.css b/modules/docs/app/VoloDocs.Web/wwwroot/libs/toastr/toastr.min.css
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/toastr/toastr.min.css
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/toastr/toastr.min.css
diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/toastr/toastr.min.js b/modules/docs/app/VoloDocs.Web/wwwroot/libs/toastr/toastr.min.js
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/wwwroot/libs/toastr/toastr.min.js
rename to modules/docs/app/VoloDocs.Web/wwwroot/libs/toastr/toastr.min.js
diff --git a/modules/docs/app/Volo.DocsTestApp/yarn.lock b/modules/docs/app/VoloDocs.Web/yarn.lock
similarity index 100%
rename from modules/docs/app/Volo.DocsTestApp/yarn.lock
rename to modules/docs/app/VoloDocs.Web/yarn.lock
diff --git a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/DocsAdminPermissions.cs b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/DocsAdminPermissions.cs
index 7865c14aa3..565b70c7f5 100644
--- a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/DocsAdminPermissions.cs
+++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/DocsAdminPermissions.cs
@@ -1,8 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace Volo.Docs.Admin
+namespace Volo.Docs.Admin
{
public class DocsAdminPermissions
{
diff --git a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/pt-BR.json b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/pt-BR.json
new file mode 100644
index 0000000000..58f0943469
--- /dev/null
+++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/pt-BR.json
@@ -0,0 +1,10 @@
+{
+ "culture": "pt-BR",
+ "texts": {
+ "Permission:DocumentManagement": "Gerenciar Documentos",
+ "Permission:Projects": "Projetos",
+ "Permission:Edit": "Editar",
+ "Permission:Delete": "Excluir",
+ "Permission:Create": "Criar"
+ }
+}
\ No newline at end of file
diff --git a/modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/Projects/ProjectAdminAppService.cs b/modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/Projects/ProjectAdminAppService.cs
index ec84824d24..e8a760c940 100644
--- a/modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/Projects/ProjectAdminAppService.cs
+++ b/modules/docs/src/Volo.Docs.Admin.Application/Volo/Docs/Admin/Projects/ProjectAdminAppService.cs
@@ -26,7 +26,7 @@ namespace Volo.Docs.Admin.Projects
{
var projects = await _projectRepository.GetListAsync(input.Sorting, input.MaxResultCount, input.SkipCount);
- var totalCount = await _projectRepository.GetTotalProjectCount();
+ var totalCount = await _projectRepository.GetCountAsync();
var dtos = ObjectMapper.Map, List>(projects);
diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/en.json b/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/en.json
index 5796867c4a..8f8fdc0191 100644
--- a/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/en.json
+++ b/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/en.json
@@ -18,9 +18,9 @@
"DisplayName:DefaultDocumentName": "Default document name",
"DisplayName:NavigationDocumentName": "Navigation document name",
"DisplayName:MinimumVersion": "Minimum version",
- "DisplayName:MainWebsiteUrl": "Main web site url",
+ "DisplayName:MainWebsiteUrl": "Main web site URL",
"DisplayName:LatestVersionBranchName": "Latest version branch name",
- "DisplayName:GitHubRootUrl": "GitHub root url",
+ "DisplayName:GitHubRootUrl": "GitHub root URL",
"DisplayName:GitHubAccessToken": "GitHub access token"
}
}
\ No newline at end of file
diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/pt-BR.json b/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/pt-BR.json
new file mode 100644
index 0000000000..b1a723d8b4
--- /dev/null
+++ b/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/pt-BR.json
@@ -0,0 +1,26 @@
+{
+ "culture": "pt-BR",
+ "texts": {
+ "Menu:DocumentManagement": "Documentos",
+ "Menu:ProjectManagement": "Projetos",
+ "CreateANewProject": "Criar um novo projeto",
+ "Edit": "Editar",
+ "Create": "Criar",
+ "Projects": "Projetos",
+ "Name": "Nome",
+ "ShortName": "Nome Curto",
+ "DocumentStoreType": "DocumentStoreType",
+ "Format": "Formato",
+ "ShortNameInfoText": "Será utilizado para URL única.",
+ "DisplayName:Name": "Nome",
+ "DisplayName:ShortName": "Nome Curto",
+ "DisplayName:Format": "Formatar",
+ "DisplayName:DefaultDocumentName": "Nome padrão do documento",
+ "DisplayName:NavigationDocumentName": "Nome de navegação do documento",
+ "DisplayName:MinimumVersion": "VErsão mínima",
+ "DisplayName:MainWebsiteUrl": "URL do site principal",
+ "DisplayName:LatestVersionBranchName": "Nome do branch da última versão",
+ "DisplayName:GitHubRootUrl": "URL raíz do GitHub",
+ "DisplayName:GitHubAccessToken": "Token de acesso do GitHub"
+ }
+}
\ No newline at end of file
diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/tr.json b/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/tr.json
index 504710eaaf..7418e5493e 100644
--- a/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/tr.json
+++ b/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/tr.json
@@ -18,9 +18,9 @@
"DisplayName:DefaultDocumentName": "Varsayılan döküman adı",
"DisplayName:NavigationDocumentName": "Navigasyon dökümanı adı",
"DisplayName:MinimumVersion": "Minimum versiyon",
- "DisplayName:MainWebsiteUrl": "Ana web site url'i",
+ "DisplayName:MainWebsiteUrl": "Ana web site URL",
"DisplayName:LatestVersionBranchName": "Son versiyon Branch adı",
- "DisplayName:GitHubRootUrl": "GitHub kök url'i",
- "DisplayName:GitHubAccessToken": "GitHub erişim jetonu"
+ "DisplayName:GitHubRootUrl": "GitHub kök adresi",
+ "DisplayName:GitHubAccessToken": "GitHub erişim token"
}
}
\ No newline at end of file
diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/Index.cshtml b/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/Index.cshtml
index 3d730caec4..a72506d978 100644
--- a/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/Index.cshtml
+++ b/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/Index.cshtml
@@ -34,7 +34,7 @@
- Github
+ GitHub
}
diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/Index.cshtml.cs b/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/Index.cshtml.cs
index 66a7008a1f..0ee140360e 100644
--- a/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/Index.cshtml.cs
+++ b/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/Index.cshtml.cs
@@ -1,7 +1,9 @@
+using Microsoft.AspNetCore.Authorization;
using Volo.Abp.AspNetCore.Mvc.UI.RazorPages;
namespace Volo.Docs.Admin.Pages.Docs.Admin.Projects
{
+ [Authorize(DocsAdminPermissions.Projects.Default)]
public class IndexModel : AbpPageModel
{
public void OnGet()
diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Volo.Docs.Admin.Web.csproj b/modules/docs/src/Volo.Docs.Admin.Web/Volo.Docs.Admin.Web.csproj
index 912bef3034..ccc953146f 100644
--- a/modules/docs/src/Volo.Docs.Admin.Web/Volo.Docs.Admin.Web.csproj
+++ b/modules/docs/src/Volo.Docs.Admin.Web/Volo.Docs.Admin.Web.csproj
@@ -30,20 +30,15 @@
-
-
-
-
-
-
+
+
+
+
-
-
-
diff --git a/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Projects/IProjectAppService.cs b/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Projects/IProjectAppService.cs
index f06c676079..5bfc221e4d 100644
--- a/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Projects/IProjectAppService.cs
+++ b/modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Projects/IProjectAppService.cs
@@ -1,4 +1,3 @@
-using System;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
diff --git a/modules/docs/src/Volo.Docs.Domain/Volo.Docs.Domain.csproj b/modules/docs/src/Volo.Docs.Domain/Volo.Docs.Domain.csproj
index f8143caa2f..9ad8e3bff6 100644
--- a/modules/docs/src/Volo.Docs.Domain/Volo.Docs.Domain.csproj
+++ b/modules/docs/src/Volo.Docs.Domain/Volo.Docs.Domain.csproj
@@ -18,6 +18,7 @@
+
diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/DocsDomainModule.cs b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/DocsDomainModule.cs
index 80f42ed3ff..8adf03faa9 100644
--- a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/DocsDomainModule.cs
+++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/DocsDomainModule.cs
@@ -1,4 +1,6 @@
-using Volo.Abp.Domain;
+using System;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.Domain;
using Volo.Abp.Localization;
using Volo.Abp.Modularity;
using Volo.Abp.VirtualFileSystem;
@@ -35,6 +37,11 @@ namespace Volo.Docs
options.Stores[GithubDocumentStore.Type] = typeof(GithubDocumentStore);
options.Stores[FileSystemDocumentStore.Type] = typeof(FileSystemDocumentStore);
});
+
+ context.Services.AddHttpClient(GithubRepositoryManager.HttpClientName, client =>
+ {
+ client.Timeout = TimeSpan.FromMilliseconds(15000);
+ });
}
}
}
diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/GithubDocumentStore.cs b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/GithubDocumentStore.cs
index 5baa073b9c..715306ae5c 100644
--- a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/GithubDocumentStore.cs
+++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/GithubDocumentStore.cs
@@ -1,16 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
-using System.Net;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
-using Octokit;
-using Octokit.Internal;
using Volo.Abp.Domain.Services;
using Volo.Docs.Documents;
using Volo.Docs.GitHub.Projects;
using Volo.Docs.Projects;
using Newtonsoft.Json.Linq;
+using Octokit;
using ProductHeaderValue = Octokit.ProductHeaderValue;
using Project = Volo.Docs.Projects.Project;
@@ -22,6 +20,13 @@ namespace Volo.Docs.GitHub.Documents
{
public const string Type = "GitHub";
+ private readonly IGithubRepositoryManager _githubRepositoryManager;
+
+ public GithubDocumentStore(IGithubRepositoryManager githubRepositoryManager)
+ {
+ _githubRepositoryManager = githubRepositoryManager;
+ }
+
public virtual async Task GetDocumentAsync(Project project, string documentName, string version)
{
var token = project.GetGitHubAccessTokenOrNull();
@@ -102,20 +107,7 @@ namespace Volo.Docs.GitHub.Documents
var url = project.GetGitHubUrl();
var ownerName = GetOwnerNameFromUrl(url);
var repositoryName = GetRepositoryNameFromUrl(url);
- var gitHubClient = CreateGitHubClient(project.GetGitHubAccessTokenOrNull());
-
- return await gitHubClient
- .Repository
- .Release
- .GetAll(ownerName, repositoryName);
- }
-
- private static GitHubClient CreateGitHubClient(string token = null)
- {
- //TODO: Why hard-coded "abpframework"? Should be configurable?
- return token.IsNullOrWhiteSpace()
- ? new GitHubClient(new ProductHeaderValue("abpframework"))
- : new GitHubClient(new ProductHeaderValue("abpframework"), new InMemoryCredentialStore(new Credentials(token)));
+ return await _githubRepositoryManager.GetReleasesAsync(ownerName, repositoryName, project.GetGitHubAccessTokenOrNull());
}
protected virtual string GetOwnerNameFromUrl(string url)
@@ -151,19 +143,7 @@ namespace Volo.Docs.GitHub.Documents
{
Logger.LogInformation("Downloading content from Github (DownloadWebContentAsStringAsync): " + rawUrl);
- using (var webClient = new GithubWebClient())
- {
- if (!token.IsNullOrWhiteSpace())
- {
- webClient.Headers.Add("Authorization", "token " + token);
- }
-
- webClient.Headers.Add("User-Agent", userAgent ?? "");
-
- //TODO: SET TIMEOUT?
-
- return await webClient.DownloadStringTaskAsync(new Uri(rawUrl));
- }
+ return await _githubRepositoryManager.GetFileRawStringContentAsync(rawUrl, token, userAgent);
}
catch (Exception ex)
{
@@ -179,16 +159,7 @@ namespace Volo.Docs.GitHub.Documents
{
Logger.LogInformation("Downloading content from Github (DownloadWebContentAsByteArrayAsync): " + rawUrl);
- using (var webClient = new GithubWebClient())
- {
- if (!token.IsNullOrWhiteSpace())
- {
- webClient.Headers.Add("Authorization", "token " + token);
- }
- webClient.Headers.Add("User-Agent", userAgent ?? "");
-
- return await webClient.DownloadDataTaskAsync(new Uri(rawUrl));
- }
+ return await _githubRepositoryManager.GetFileRawByteArrayContentAsync(rawUrl, token, userAgent);
}
catch (Exception ex)
{
@@ -237,21 +208,5 @@ namespace Volo.Docs.GitHub.Documents
.Replace("github.com", "raw.githubusercontent.com")
.ReplaceFirst("/tree/", "/");
}
-
- private class GithubWebClient : WebClient
- {
- protected override WebRequest GetWebRequest(Uri address)
- {
- var webRequest = base.GetWebRequest(address);
- if (webRequest == null)
- {
- return null;
- }
-
- webRequest.Timeout = 15000;
-
- return webRequest;
- }
- }
}
}
\ No newline at end of file
diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/GithubRepositoryManager.cs b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/GithubRepositoryManager.cs
new file mode 100644
index 0000000000..be71fd4772
--- /dev/null
+++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/GithubRepositoryManager.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net.Http;
+using System.Net.Http.Headers;
+using System.Text;
+using System.Threading.Tasks;
+using Octokit;
+using Octokit.Internal;
+using ProductHeaderValue = Octokit.ProductHeaderValue;
+
+namespace Volo.Docs.GitHub.Documents
+{
+ public class GithubRepositoryManager : IGithubRepositoryManager
+ {
+ public const string HttpClientName = "GithubRepositoryManagerHttpClientName";
+
+ private readonly IHttpClientFactory _clientFactory;
+
+ public GithubRepositoryManager(IHttpClientFactory clientFactory)
+ {
+ _clientFactory = clientFactory;
+ }
+
+ public async Task GetFileRawStringContentAsync(string rawUrl, string token, string userAgent)
+ {
+ var httpClient = _clientFactory.CreateClient(HttpClientName);
+ if (!token.IsNullOrWhiteSpace())
+ {
+ httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Token", token);
+ }
+
+ httpClient.DefaultRequestHeaders.Add("User-Agent", userAgent ?? "");
+
+ return await httpClient.GetStringAsync(new Uri(rawUrl));
+ }
+
+ public async Task GetFileRawByteArrayContentAsync(string rawUrl, string token, string userAgent)
+ {
+ var httpClient = _clientFactory.CreateClient(HttpClientName);
+ if (!token.IsNullOrWhiteSpace())
+ {
+ httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Token", token);
+ }
+
+ httpClient.DefaultRequestHeaders.Add("User-Agent", userAgent ?? "");
+
+ return await httpClient.GetByteArrayAsync(new Uri(rawUrl));
+ }
+
+ public async Task> GetReleasesAsync(string name, string repositoryName, string token)
+ {
+ var client = token.IsNullOrWhiteSpace()
+ ? new GitHubClient(new ProductHeaderValue(name))
+ : new GitHubClient(new ProductHeaderValue(name), new InMemoryCredentialStore(new Credentials(token)));
+
+ return (await client
+ .Repository
+ .Release
+ .GetAll(name, repositoryName)).ToList();
+ }
+ }
+}
diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/IGithubRepositoryManager.cs b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/IGithubRepositoryManager.cs
new file mode 100644
index 0000000000..519b9829d5
--- /dev/null
+++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/IGithubRepositoryManager.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+using Octokit;
+using Volo.Abp.DependencyInjection;
+
+namespace Volo.Docs.GitHub.Documents
+{
+ public interface IGithubRepositoryManager : ITransientDependency
+ {
+ Task GetFileRawStringContentAsync(string rawUrl, string token, string userAgent);
+
+ Task GetFileRawByteArrayContentAsync(string rawUrl, string token, string userAgent);
+
+ Task> GetReleasesAsync(string name, string repositoryName, string token);
+
+ }
+}
diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/pt-BR.json b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/pt-BR.json
new file mode 100644
index 0000000000..05a642010c
--- /dev/null
+++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/pt-BR.json
@@ -0,0 +1,18 @@
+{
+ "culture": "pt-BR",
+ "texts": {
+ "Documents": "Documentos",
+ "BackToWebsite": "Voltar para o site",
+ "Contributors": "Contribuidores",
+ "ShareOn": "Compartilhar em:",
+ "Version": "Versão",
+ "Edit": "Editar",
+ "Delete": "Excluir",
+ "InThisDocument": "Neste documento",
+ "GoToTop": "Ir pra o topo",
+ "Projects": "Projeto(s)",
+ "NoProjectWarning": "Ainda não há projetos!",
+ "DocumentNotFound": "Oops, o documento solicitado foi encontrado",
+ "NavigationDocumentNotFound": "Esta versão não possui um documento de navegação!"
+ }
+}
\ No newline at end of file
diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Projects/IProjectRepository.cs b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Projects/IProjectRepository.cs
index 1872d33cd8..4a6ad77ddd 100644
--- a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Projects/IProjectRepository.cs
+++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Projects/IProjectRepository.cs
@@ -9,8 +9,6 @@ namespace Volo.Docs.Projects
{
Task> GetListAsync(string sorting, int maxResultCount, int skipCount);
- Task GetTotalProjectCount();
-
Task GetByShortNameAsync(string shortName);
}
}
\ No newline at end of file
diff --git a/modules/docs/src/Volo.Docs.EntityFrameworkCore/Volo/Docs/Projects/EfCoreProjectRepository.cs b/modules/docs/src/Volo.Docs.EntityFrameworkCore/Volo/Docs/Projects/EfCoreProjectRepository.cs
index f9e6ab4fa7..b54869edcd 100644
--- a/modules/docs/src/Volo.Docs.EntityFrameworkCore/Volo/Docs/Projects/EfCoreProjectRepository.cs
+++ b/modules/docs/src/Volo.Docs.EntityFrameworkCore/Volo/Docs/Projects/EfCoreProjectRepository.cs
@@ -21,18 +21,13 @@ namespace Volo.Docs.Projects
public async Task> GetListAsync(string sorting, int maxResultCount, int skipCount)
{
- var projects = await DbSet.OrderBy(sorting ?? "creationTime desc")
+ var projects = await DbSet.OrderBy(sorting ?? "Id desc")
.PageBy(skipCount, maxResultCount)
.ToListAsync();
return projects;
}
- public async Task GetTotalProjectCount()
- {
- return await DbSet.CountAsync();
- }
-
public async Task GetByShortNameAsync(string shortName)
{
var project = await DbSet.FirstOrDefaultAsync(p => p.ShortName == shortName);
diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Index.cshtml b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Index.cshtml
index 00e5bcf069..1c5976e760 100644
--- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Index.cshtml
+++ b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Index.cshtml
@@ -1,5 +1,4 @@
@page
-@using Castle.Core.Internal
@using Microsoft.AspNetCore.Mvc.Localization
@using Volo.Docs
@using Volo.Docs.Localization
@@ -11,18 +10,17 @@
@section styles {
-
}
- @(commentWithRepliesDto.Comment.Writer == null ? "" : commentWithRepliesDto.Comment.Writer.UserName) - @ConvertDatetimeToTimeAgo(commentWithRepliesDto.Comment.CreationTime) -
-- @commentWithRepliesDto.Comment.Text -
-@L["CommentWithCount", @Model.CommentCount]
@if (hasCommentingPermission) { - - @L["Reply"] - + @L["LeaveComment"] } - - @if (await Authorization.IsGrantedAsync(BloggingPermissions.Comments.Delete)) + else { - | - - @L["Delete"] - + @L["LeaveComment"] } ++ @(commentWithRepliesDto.Comment.Writer == null ? "" : commentWithRepliesDto.Comment.Writer.UserName) + @ConvertDatetimeToTimeAgo(commentWithRepliesDto.Comment.CreationTime) +
++ @commentWithRepliesDto.Comment.Text +
+- @L["ReplyTo", commentWithRepliesDto.Comment.Writer == null ? "" : commentWithRepliesDto.Comment.Writer.UserName] + @if (hasCommentingPermission) + { + + @L["Reply"] + + } -
-- @(reply.Writer == null ? "" : reply.Writer.UserName) - @ConvertDatetimeToTimeAgo(reply.CreationTime) -
-- @reply.Text -
-+ @(reply.Writer == null ? "" : reply.Writer.UserName) + @ConvertDatetimeToTimeAgo(reply.CreationTime) +
++ @reply.Text +
+- @L["ReplyTo", commentWithRepliesDto.Comment.Writer == null ? "" : commentWithRepliesDto.Comment.Writer.UserName] -
-+ @L["ReplyTo", commentWithRepliesDto.Comment.Writer == null ? "" : commentWithRepliesDto.Comment.Writer.UserName] +
+@L["LeaveComment"]
-@L["LeaveComment"]
+Welcome to the Docs Demo!
-Go to documents... \ No newline at end of file diff --git a/modules/docs/app/Volo.DocsTestApp/Pages/Index.cshtml.cs b/modules/docs/app/Volo.DocsTestApp/Pages/Index.cshtml.cs deleted file mode 100644 index c1600215d5..0000000000 --- a/modules/docs/app/Volo.DocsTestApp/Pages/Index.cshtml.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.RazorPages; - -namespace Volo.DocsTestApp.Pages -{ - public class IndexModel : PageModel - { - public void OnGet() - { - } - } -} \ No newline at end of file diff --git a/modules/docs/app/Volo.DocsTestApp/appsettings.json b/modules/docs/app/Volo.DocsTestApp/appsettings.json deleted file mode 100644 index 50d08262f8..0000000000 --- a/modules/docs/app/Volo.DocsTestApp/appsettings.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "ConnectionStrings": { - "SqlServer": "Server=localhost;Database=DocsTestApp;Trusted_Connection=True;MultipleActiveResultSets=true", - "MongoDb": "mongodb://localhost:27017|DocsTestApp" - } -} \ No newline at end of file diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_de.js b/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_de.js deleted file mode 100644 index 89c00c1bab..0000000000 --- a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/jquery-validation/localization/messages_de.js +++ /dev/null @@ -1,32 +0,0 @@ -(function( factory ) { - if ( typeof define === "function" && define.amd ) { - define( ["jquery", "../jquery.validate"], factory ); - } else if (typeof module === "object" && module.exports) { - module.exports = factory( require( "jquery" ) ); - } else { - factory( jQuery ); - } -}(function( $ ) { - -/* - * Translated default messages for the jQuery validation plugin. - * Locale: DE (German, Deutsch) - */ -$.extend( $.validator.messages, { - required: "Dieses Feld ist ein Pflichtfeld.", - maxlength: $.validator.format( "Geben Sie bitte maximal {0} Zeichen ein." ), - minlength: $.validator.format( "Geben Sie bitte mindestens {0} Zeichen ein." ), - rangelength: $.validator.format( "Geben Sie bitte mindestens {0} und maximal {1} Zeichen ein." ), - email: "Geben Sie bitte eine gültige E-Mail Adresse ein.", - url: "Geben Sie bitte eine gültige URL ein.", - date: "Bitte geben Sie ein gültiges Datum ein.", - number: "Geben Sie bitte eine Nummer ein.", - digits: "Geben Sie bitte nur Ziffern ein.", - equalTo: "Bitte denselben Wert wiederholen.", - range: $.validator.format( "Geben Sie bitte einen Wert zwischen {0} und {1} ein." ), - max: $.validator.format( "Geben Sie bitte einen Wert kleiner oder gleich {0} ein." ), - min: $.validator.format( "Geben Sie bitte einen Wert größer oder gleich {0} ein." ), - creditcard: "Geben Sie bitte eine gültige Kreditkarten-Nummer ein." -} ); -return $; -})); \ No newline at end of file diff --git a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/lodash/lodash.min.js b/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/lodash/lodash.min.js deleted file mode 100644 index fced00b390..0000000000 --- a/modules/docs/app/Volo.DocsTestApp/wwwroot/libs/lodash/lodash.min.js +++ /dev/null @@ -1,137 +0,0 @@ -/** - * @license - * Lodash lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE - */ -;(function(){function n(n,t,r){switch(r.length){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function t(n,t,r,e){for(var u=-1,i=null==n?0:n.length;++u"']/g,G=RegExp(V.source),H=RegExp(K.source),J=/<%-([\s\S]+?)%>/g,Y=/<%([\s\S]+?)%>/g,Q=/<%=([\s\S]+?)%>/g,X=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nn=/^\w*$/,tn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,rn=/[\\^$.*+?()[\]{}|]/g,en=RegExp(rn.source),un=/^\s+|\s+$/g,on=/^\s+/,fn=/\s+$/,cn=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,an=/\{\n\/\* \[wrapped with (.+)\] \*/,ln=/,? & /,sn=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,hn=/\\(\\)?/g,pn=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,_n=/\w*$/,vn=/^[-+]0x[0-9a-f]+$/i,gn=/^0b[01]+$/i,dn=/^\[object .+?Constructor\]$/,yn=/^0o[0-7]+$/i,bn=/^(?:0|[1-9]\d*)$/,xn=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,jn=/($^)/,wn=/['\n\r\u2028\u2029\\]/g,mn="[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?)*",An="(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])"+mn,En="(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]?|[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])",kn=RegExp("['\u2019]","g"),Sn=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]","g"),On=RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|"+En+mn,"g"),In=RegExp(["[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+(?:['\u2019](?:d|ll|m|re|s|t|ve))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde]|$)|(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]|[A-Z\\xc0-\\xd6\\xd8-\\xde](?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])|$)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?(?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:d|ll|m|re|s|t|ve))?|[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?|\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])|\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])|\\d+",An].join("|"),"g"),Rn=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]"),zn=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Wn="Array Buffer DataView Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Map Math Object Promise RegExp Set String Symbol TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap _ clearTimeout isFinite parseInt setTimeout".split(" "),Bn={}; -Bn["[object Float32Array]"]=Bn["[object Float64Array]"]=Bn["[object Int8Array]"]=Bn["[object Int16Array]"]=Bn["[object Int32Array]"]=Bn["[object Uint8Array]"]=Bn["[object Uint8ClampedArray]"]=Bn["[object Uint16Array]"]=Bn["[object Uint32Array]"]=true,Bn["[object Arguments]"]=Bn["[object Array]"]=Bn["[object ArrayBuffer]"]=Bn["[object Boolean]"]=Bn["[object DataView]"]=Bn["[object Date]"]=Bn["[object Error]"]=Bn["[object Function]"]=Bn["[object Map]"]=Bn["[object Number]"]=Bn["[object Object]"]=Bn["[object RegExp]"]=Bn["[object Set]"]=Bn["[object String]"]=Bn["[object WeakMap]"]=false; -var Ln={};Ln["[object Arguments]"]=Ln["[object Array]"]=Ln["[object ArrayBuffer]"]=Ln["[object DataView]"]=Ln["[object Boolean]"]=Ln["[object Date]"]=Ln["[object Float32Array]"]=Ln["[object Float64Array]"]=Ln["[object Int8Array]"]=Ln["[object Int16Array]"]=Ln["[object Int32Array]"]=Ln["[object Map]"]=Ln["[object Number]"]=Ln["[object Object]"]=Ln["[object RegExp]"]=Ln["[object Set]"]=Ln["[object String]"]=Ln["[object Symbol]"]=Ln["[object Uint8Array]"]=Ln["[object Uint8ClampedArray]"]=Ln["[object Uint16Array]"]=Ln["[object Uint32Array]"]=true, -Ln["[object Error]"]=Ln["[object Function]"]=Ln["[object WeakMap]"]=false;var Un={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Cn=parseFloat,Dn=parseInt,Mn=typeof global=="object"&&global&&global.Object===Object&&global,Tn=typeof self=="object"&&self&&self.Object===Object&&self,$n=Mn||Tn||Function("return this")(),Fn=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Nn=Fn&&typeof module=="object"&&module&&!module.nodeType&&module,Pn=Nn&&Nn.exports===Fn,Zn=Pn&&Mn.process,qn=function(){ -try{var n=Nn&&Nn.f&&Nn.f("util").types;return n?n:Zn&&Zn.binding&&Zn.binding("util")}catch(n){}}(),Vn=qn&&qn.isArrayBuffer,Kn=qn&&qn.isDate,Gn=qn&&qn.isMap,Hn=qn&&qn.isRegExp,Jn=qn&&qn.isSet,Yn=qn&&qn.isTypedArray,Qn=b("length"),Xn=x({"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I", -"\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss","\u0100":"A","\u0102":"A","\u0104":"A","\u0101":"a","\u0103":"a","\u0105":"a","\u0106":"C", -"\u0108":"C","\u010a":"C","\u010c":"C","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\u010e":"D","\u0110":"D","\u010f":"d","\u0111":"d","\u0112":"E","\u0114":"E","\u0116":"E","\u0118":"E","\u011a":"E","\u0113":"e","\u0115":"e","\u0117":"e","\u0119":"e","\u011b":"e","\u011c":"G","\u011e":"G","\u0120":"G","\u0122":"G","\u011d":"g","\u011f":"g","\u0121":"g","\u0123":"g","\u0124":"H","\u0126":"H","\u0125":"h","\u0127":"h","\u0128":"I","\u012a":"I","\u012c":"I","\u012e":"I","\u0130":"I","\u0129":"i", -"\u012b":"i","\u012d":"i","\u012f":"i","\u0131":"i","\u0134":"J","\u0135":"j","\u0136":"K","\u0137":"k","\u0138":"k","\u0139":"L","\u013b":"L","\u013d":"L","\u013f":"L","\u0141":"L","\u013a":"l","\u013c":"l","\u013e":"l","\u0140":"l","\u0142":"l","\u0143":"N","\u0145":"N","\u0147":"N","\u014a":"N","\u0144":"n","\u0146":"n","\u0148":"n","\u014b":"n","\u014c":"O","\u014e":"O","\u0150":"O","\u014d":"o","\u014f":"o","\u0151":"o","\u0154":"R","\u0156":"R","\u0158":"R","\u0155":"r","\u0157":"r","\u0159":"r", -"\u015a":"S","\u015c":"S","\u015e":"S","\u0160":"S","\u015b":"s","\u015d":"s","\u015f":"s","\u0161":"s","\u0162":"T","\u0164":"T","\u0166":"T","\u0163":"t","\u0165":"t","\u0167":"t","\u0168":"U","\u016a":"U","\u016c":"U","\u016e":"U","\u0170":"U","\u0172":"U","\u0169":"u","\u016b":"u","\u016d":"u","\u016f":"u","\u0171":"u","\u0173":"u","\u0174":"W","\u0175":"w","\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017b":"Z","\u017d":"Z","\u017a":"z","\u017c":"z","\u017e":"z","\u0132":"IJ","\u0133":"ij", -"\u0152":"Oe","\u0153":"oe","\u0149":"'n","\u017f":"s"}),nt=x({"&":"&","<":"<",">":">",'"':""","'":"'"}),tt=x({"&":"&","<":"<",">":">",""":'"',"'":"'"}),rt=function x(mn){function An(n){if(du(n)&&!of(n)&&!(n instanceof Un)){if(n instanceof On)return n;if(ii.call(n,"__wrapped__"))return $e(n)}return new On(n)}function En(){}function On(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=T}function Un(n){this.__wrapped__=n, -this.__actions__=[],this.__dir__=1,this.__filtered__=false,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function Mn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t{0}Go to home page+ @L["WelcomeVoloDocs"] +
+ + @if (!Model.Projects.Any()) + { +@L["NoProjectWarning"]
++ @L["CreateYourFirstProject"] +
@L["Projects"]
++
+ @foreach (var project in Model.Projects) + { +-
+
+ }
+
+ + } + ++ + @project.Name + +
+, List>(projects);
diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/en.json b/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/en.json
index 5796867c4a..8f8fdc0191 100644
--- a/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/en.json
+++ b/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/en.json
@@ -18,9 +18,9 @@
"DisplayName:DefaultDocumentName": "Default document name",
"DisplayName:NavigationDocumentName": "Navigation document name",
"DisplayName:MinimumVersion": "Minimum version",
- "DisplayName:MainWebsiteUrl": "Main web site url",
+ "DisplayName:MainWebsiteUrl": "Main web site URL",
"DisplayName:LatestVersionBranchName": "Latest version branch name",
- "DisplayName:GitHubRootUrl": "GitHub root url",
+ "DisplayName:GitHubRootUrl": "GitHub root URL",
"DisplayName:GitHubAccessToken": "GitHub access token"
}
}
\ No newline at end of file
diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/pt-BR.json b/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/pt-BR.json
new file mode 100644
index 0000000000..b1a723d8b4
--- /dev/null
+++ b/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/pt-BR.json
@@ -0,0 +1,26 @@
+{
+ "culture": "pt-BR",
+ "texts": {
+ "Menu:DocumentManagement": "Documentos",
+ "Menu:ProjectManagement": "Projetos",
+ "CreateANewProject": "Criar um novo projeto",
+ "Edit": "Editar",
+ "Create": "Criar",
+ "Projects": "Projetos",
+ "Name": "Nome",
+ "ShortName": "Nome Curto",
+ "DocumentStoreType": "DocumentStoreType",
+ "Format": "Formato",
+ "ShortNameInfoText": "Será utilizado para URL única.",
+ "DisplayName:Name": "Nome",
+ "DisplayName:ShortName": "Nome Curto",
+ "DisplayName:Format": "Formatar",
+ "DisplayName:DefaultDocumentName": "Nome padrão do documento",
+ "DisplayName:NavigationDocumentName": "Nome de navegação do documento",
+ "DisplayName:MinimumVersion": "VErsão mínima",
+ "DisplayName:MainWebsiteUrl": "URL do site principal",
+ "DisplayName:LatestVersionBranchName": "Nome do branch da última versão",
+ "DisplayName:GitHubRootUrl": "URL raíz do GitHub",
+ "DisplayName:GitHubAccessToken": "Token de acesso do GitHub"
+ }
+}
\ No newline at end of file
diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/tr.json b/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/tr.json
index 504710eaaf..7418e5493e 100644
--- a/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/tr.json
+++ b/modules/docs/src/Volo.Docs.Admin.Web/Localization/Resources/Docs/Web/tr.json
@@ -18,9 +18,9 @@
"DisplayName:DefaultDocumentName": "Varsayılan döküman adı",
"DisplayName:NavigationDocumentName": "Navigasyon dökümanı adı",
"DisplayName:MinimumVersion": "Minimum versiyon",
- "DisplayName:MainWebsiteUrl": "Ana web site url'i",
+ "DisplayName:MainWebsiteUrl": "Ana web site URL",
"DisplayName:LatestVersionBranchName": "Son versiyon Branch adı",
- "DisplayName:GitHubRootUrl": "GitHub kök url'i",
- "DisplayName:GitHubAccessToken": "GitHub erişim jetonu"
+ "DisplayName:GitHubRootUrl": "GitHub kök adresi",
+ "DisplayName:GitHubAccessToken": "GitHub erişim token"
}
}
\ No newline at end of file
diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/Index.cshtml b/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/Index.cshtml
index 3d730caec4..a72506d978 100644
--- a/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/Index.cshtml
+++ b/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/Index.cshtml
@@ -34,7 +34,7 @@
- Github
+ GitHub
}
diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/Index.cshtml.cs b/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/Index.cshtml.cs
index 66a7008a1f..0ee140360e 100644
--- a/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/Index.cshtml.cs
+++ b/modules/docs/src/Volo.Docs.Admin.Web/Pages/Docs/Admin/Projects/Index.cshtml.cs
@@ -1,7 +1,9 @@
+using Microsoft.AspNetCore.Authorization;
using Volo.Abp.AspNetCore.Mvc.UI.RazorPages;
namespace Volo.Docs.Admin.Pages.Docs.Admin.Projects
{
+ [Authorize(DocsAdminPermissions.Projects.Default)]
public class IndexModel : AbpPageModel
{
public void OnGet()
diff --git a/modules/docs/src/Volo.Docs.Admin.Web/Volo.Docs.Admin.Web.csproj b/modules/docs/src/Volo.Docs.Admin.Web/Volo.Docs.Admin.Web.csproj
index 912bef3034..ccc953146f 100644
--- a/modules/docs/src/Volo.Docs.Admin.Web/Volo.Docs.Admin.Web.csproj
+++ b/modules/docs/src/Volo.Docs.Admin.Web/Volo.Docs.Admin.Web.csproj
@@ -30,20 +30,15 @@
> GetListAsync(string sorting, int maxResultCount, int skipCount); - Task GetTotalProjectCount();
-
Task GetByShortNameAsync(string shortName);
}
}
\ No newline at end of file
diff --git a/modules/docs/src/Volo.Docs.EntityFrameworkCore/Volo/Docs/Projects/EfCoreProjectRepository.cs b/modules/docs/src/Volo.Docs.EntityFrameworkCore/Volo/Docs/Projects/EfCoreProjectRepository.cs
index f9e6ab4fa7..b54869edcd 100644
--- a/modules/docs/src/Volo.Docs.EntityFrameworkCore/Volo/Docs/Projects/EfCoreProjectRepository.cs
+++ b/modules/docs/src/Volo.Docs.EntityFrameworkCore/Volo/Docs/Projects/EfCoreProjectRepository.cs
@@ -21,18 +21,13 @@ namespace Volo.Docs.Projects
public async Task
> GetListAsync(string sorting, int maxResultCount, int skipCount) { - var projects = await DbSet.OrderBy(sorting ?? "creationTime desc") + var projects = await DbSet.OrderBy(sorting ?? "Id desc") .PageBy(skipCount, maxResultCount) .ToListAsync(); return projects; } - public async Task GetTotalProjectCount()
- {
- return await DbSet.CountAsync();
- }
-
public async Task GetByShortNameAsync(string shortName)
{
var project = await DbSet.FirstOrDefaultAsync(p => p.ShortName == shortName);
diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Index.cshtml b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Index.cshtml
index 00e5bcf069..1c5976e760 100644
--- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Index.cshtml
+++ b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Index.cshtml
@@ -1,5 +1,4 @@
@page
-@using Castle.Core.Internal
@using Microsoft.AspNetCore.Mvc.Localization
@using Volo.Docs
@using Volo.Docs.Localization
@@ -11,18 +10,17 @@
@section styles {
-
}
- @if (Model.Projects.IsNullOrEmpty())
+ @if (Model.Projects == null || !Model.Projects.Any())
{
@L["NoProjectWarning"]
}
- @if (Model.Projects.Count > 0)
+ else
{
@L["Projects"]
diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/Styles/vs.css b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/Styles/vs.css index 0e9f1cdb01..ac21149c59 100644 --- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/Styles/vs.css +++ b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/Styles/vs.css @@ -72,7 +72,7 @@ font-weight: 700; padding: 7px 0; display: block; - border-bottom: 1px solid #eeeff3; } + border-bottom: 0; } .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a:hover { color: #000; } .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a.last-link { @@ -82,7 +82,7 @@ color: #999; padding: 7px 0; display: block; - border-bottom: 1px solid #eeeff3; } + border-bottom: 0; } .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li .plus-icon { font-size: .85em; transition: .3s; @@ -321,7 +321,7 @@ color: #aaa; } .docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a { color: #aaa; - border-bottom: 1px solid #333; } + border-bottom: 0; } .docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a:hover { color: #fff; } .docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a .plus-icon { @@ -349,7 +349,7 @@ color: #555; padding: 7px 0; display: block; - border-bottom: 1px solid #333; } + border-bottom: 0; } .docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree > a { color: #fff; transition: .4s; } diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/Styles/vs.min.css b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/Styles/vs.min.css index 833d37db6d..30820acc67 100644 --- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/Styles/vs.min.css +++ b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/Styles/vs.min.css @@ -1 +1 @@ -body{position:relative;}.docs-page{background:#f5f7f9;}.docs-page .anchorjs-link{transition:all .25s linear;}.docs-page *:hover>.anchorjs-link{margin-left:-1.125em !important;transition:color .25s linear;color:#808080;}.docs-page .anchorjs-link:hover{color:#007bff;text-decoration:none;}.docs-page .docs-sidebar{background:#f5f7f9;padding-right:1rem;position:relative;top:0;left:0;position:fixed;}.docs-page .docs-sidebar .docs-sidebar-wrapper{width:270px;float:right;}.docs-page .docs-sidebar .docs-sidebar-wrapper input.form-control{background:none;background:#fff;border:0;}.docs-page .docs-sidebar .docs-sidebar-wrapper input.form-control:focus,.docs-page .docs-sidebar .docs-sidebar-wrapper input.form-control:active,.docs-page .docs-sidebar .docs-sidebar-wrapper input.form-control:hover,.docs-page .docs-sidebar .docs-sidebar-wrapper input.form-control:visited{box-shadow:none;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version{position:relative;padding:0 1rem;margin:.45rem 0;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select{border-radius:8px;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select .input-group-text{border:0;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control{line-height:1;border-top-left-radius:0;border-bottom-left-radius:0;padding:.3em .5em .5em;border:0;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control:focus,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control:active,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control:hover,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control:visited,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control:focus,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control:active,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control:hover,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control:visited{box-shadow:none;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-filter{padding:0 1rem;margin:.5rem 0;font-size:.9em;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-filter .filter-icon i.fa{color:#ddd;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list{height:100vh;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list>ul{display:block;height:calc(100vh - 220px);overflow-y:auto;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul{font-size:.935em;list-style:none;padding:0 1rem;margin:0;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li{margin-left:0;padding-left:24px;display:block;width:100%;position:relative;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a{color:#999;font-weight:700;padding:7px 0;display:block;border-bottom:1px solid #eeeff3;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a:hover{color:#000;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a.last-link{top:11px;color:#aaa;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li span.tree-toggle{color:#999;padding:7px 0;display:block;border-bottom:1px solid #eeeff3;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li .plus-icon{font-size:.85em;transition:.3s;width:18px;height:18px;text-align:center;padding:0;line-height:1;border-radius:50%;margin-right:4px;position:absolute;left:2px;top:11px;color:#aaa;cursor:default;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li .plus-icon .fa-long-arrow-right.no-link{color:#555;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li .plus-icon .fa-chevron-right{cursor:pointer;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li ul{padding:0;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li ul li a{font-weight:400;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li ul li ul{padding:0;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li ul li ul li a{font-weight:300;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree>a{color:#000;transition:.4s;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree>span .fa{transform:rotate(90deg);color:#007bff;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree.last-link>span .fa{transform:rotate(0deg);}.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-brand{font-size:1.5rem;color:#000;font-weight:700;padding:20px 0 10px;line-height:1;}.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-brand strong{font-weight:300;text-transform:uppercase;font-size:.9rem;opacity:.6;}.docs-page .docs-sidebar .docs-top .navbar-logo .go-back-site{color:#000;opacity:.15;transition:.4s;font-size:.75rem;font-weight:300;}.docs-page .docs-sidebar .docs-top .navbar-logo .go-back-site:hover{text-decoration:none;opacity:.5;}.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-logo-desc{font-size:.85em;}.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-logo-desc strong{display:block;}.docs-page .docs-content{overflow-x:scroll;}.docs-page .docs-content .contributors{position:absolute;top:15px;right:5px;}.docs-page .docs-content .contributors .contributors-avatar{border-radius:21px;width:21px;height:21px;}.docs-page .docs-content .contributors a{padding:0;width:21px;height:21px;display:inline-block;margin:0 0 0 2px;}.docs-page .docs-content .contributors a:hover{text-decoration:none;}.docs-page .docs-content .docs-link-btns{border-bottom:1px solid #f4f5f7;background:#fdfdfd;padding:10px 20px;margin:0 -15px;text-align:right;font-size:.8em;min-height:40px;}.docs-page .docs-content .docs-link-btns a{color:#999;}.docs-page .docs-content .docs-link-btns a:hover{color:#444;text-decoration:none;}.docs-page .docs-content .docs-link-btns .twitter{color:#00acee;}.docs-page .docs-content .docs-link-btns .linkedin{color:#0077b5;}.docs-page .docs-content .docs-link-btns .email{color:#5a5a5a;}.docs-page .docs-content .docs-link-btns .share-button{margin-left:10px;}.docs-page .docs-content .docs-text-field{padding:2rem;}.docs-page .docs-content article.docs-body h1{padding-top:1rem;font-size:2.25rem;padding-bottom:10px;}.docs-page .docs-content article.docs-body h2{padding-top:2rem;padding-bottom:10px;font-size:2rem;}.docs-page .docs-content article.docs-body h3,.docs-page .docs-content article.docs-body h4,.docs-page .docs-content article.docs-body h5,.docs-page .docs-content article.docs-body h6{padding-top:20px;padding-bottom:5px;font-size:1.5rem;}.docs-page .docs-content article.docs-body h1,.docs-page .docs-content article.docs-body h2,.docs-page .docs-content article.docs-body h3,.docs-page .docs-content article.docs-body h4,.docs-page .docs-content article.docs-body h5,.docs-page .docs-content article.docs-body h6{position:relative;}.docs-page .docs-content article.docs-body h1 .anchor,.docs-page .docs-content article.docs-body h2 .anchor,.docs-page .docs-content article.docs-body h3 .anchor,.docs-page .docs-content article.docs-body h4 .anchor,.docs-page .docs-content article.docs-body h5 .anchor,.docs-page .docs-content article.docs-body h6 .anchor{position:absolute;right:-26px;font-size:18px;bottom:5px;color:#999;opacity:0;transition:.5s;}.docs-page .docs-content article.docs-body h1:hover .anchor,.docs-page .docs-content article.docs-body h2:hover .anchor,.docs-page .docs-content article.docs-body h3:hover .anchor,.docs-page .docs-content article.docs-body h4:hover .anchor,.docs-page .docs-content article.docs-body h5:hover .anchor,.docs-page .docs-content article.docs-body h6:hover .anchor{opacity:1;}.docs-page .docs-content article.docs-body img{max-width:100%;border:1px solid #f4f5f7;margin:15px 0 25px;box-shadow:0 0 45px #f8f9fa;border-radius:6px;}.docs-page .docs-content article.docs-body table{display:block;overflow:auto;width:100%;}.docs-page .docs-content article.docs-body table thead tr{border-bottom:2px inset;}.docs-page .docs-content article.docs-body table th{font-weight:600;}.docs-page .docs-content article.docs-body table td,.docs-page .docs-content article.docs-body table th{border:1px solid #dfe2e5;padding:6px 13px;}.docs-page .docs-content article.docs-body table tr{background-color:#fff;border-top:1px solid #c6cbd1;}.docs-page .docs-content article.docs-body table tr:nth-child(2n){background-color:#f6f8fa;}.docs-page .docs-content article.docs-body table img{background-color:initial;}.docs-page .docs-page-index{min-height:100vh;}.docs-page .docs-page-index #scroll-index{max-height:100vh;}.docs-page .docs-page-index .docs-inner-anchors{position:fixed;top:0;padding:10px;font-size:.9em;}.docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills{font-size:.92em;margin-left:15px;border-left:1px solid #eee;}.docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills .nav-link{padding:3px 14px 4px;color:#aaa;line-height:1.2;position:relative;border-left:1px solid #eee;border-radius:0;margin-left:-1px;margin-top:1px;margin-bottom:1px;transition:.2s;}.docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills .nav-link.active{border-left:2px solid #007bff;background:none;color:#007bff;}.docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills .nav-pills .nav-link.active{color:#007bff;}.docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills .nav-pills .nav-pills .nav-link.active{color:#007bff;}.docs-page .docs-page-index .docs-inner-anchors .index-scroll{margin-left:-30px;}.docs-page .docs-page-index .docs-inner-anchors .docs-anchors-wrapper{max-width:300px;float:left;}.docs-page .docs-page-index .scroll-top-btn{display:none;font-size:.85em;color:#aaa;text-decoration:none;padding-left:18px;}.docs-page .docs-page-index .scroll-top-btn.showup{display:block;}@media(min-width:1100px){.container{max-width:1080px;}.docs-page .docs-sidebar.dark-sidebar{background:#191919;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control,.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control{background:#333;border-color:#333;color:#999;font-size:.9em;min-height:40px;padding-left:8px;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control{background:#333;border-color:#333;color:#999;font-size:.9em;min-height:40px;padding-left:12px;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control::placeholder{color:#999;opacity:.5;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .version-select label{background:#444;border-color:#444;color:#ddd;width:36px;text-align:center;padding-left:0;padding-right:0;display:inline-block;line-height:26px;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-filter .form-control{background:#333;color:#999;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-filter select{border:0;border-radius:6px;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-filter .filter-icon i.fa{color:#aaa;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a{color:#aaa;border-bottom:1px solid #333;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a:hover{color:#fff;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a .plus-icon{font-size:.85em;transition:.3s;width:18px;height:18px;text-align:center;padding:0;line-height:1;border-radius:50%;margin-right:4px;position:absolute;left:2px;top:11px;color:#aaa;cursor:default;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a .plus-icon .fa-long-arrow-right.no-link{color:#555;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a .plus-icon .fa-chevron-right{cursor:pointer;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a .plus-icon.last-link{top:11px;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li span.tree-toggle{color:#555;padding:7px 0;display:block;border-bottom:1px solid #333;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree>a{color:#fff;transition:.4s;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree>a span .fa{color:#fff;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree>a span:not(.last-link) .fa{transform:rotate(90deg);color:#fff;}.docs-page .docs-sidebar.dark-sidebar .docs-top .navbar-logo .navbar-brand{color:#fff;text-transform:uppercase;white-space:unset;}.docs-page .docs-sidebar.dark-sidebar .docs-top .navbar-logo .go-back-site{color:#fff;}.docs-page .docs-sidebar.dark-sidebar .docs-top .navbar-logo .navbar-logo-desc{color:#ddd;}}@media(min-width:1366px){.container{max-width:1340px;}}@media(min-width:1440px){.container{max-width:1400px;}}@media(max-width:767px){.docs-page .docs-content article.docs-body h1{padding-top:1.5rem;}.docs-page{background:#f5f7f9;}.docs-page>.container-fluid{display:block;}.docs-page>.container-fluid>.row{display:block;}.docs-page .docs-sidebar{position:fixed;max-width:100%;width:100%;display:block;padding:0 !important;top:0;left:0;z-index:100;right:0;}.docs-page .docs-sidebar .docs-sidebar-wrapper{max-width:100%;width:100%;top:0;position:relative;margin:0 !important;height:72px;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list{padding:.5rem 1.5rem 2rem 1.5rem;position:fixed;top:70px;font-size:17px;left:0;width:100%;z-index:100;background:#f5f7f9;display:none;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list .docs-filter{padding:0 0 1rem !important;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version label{width:36px;text-align:center;padding-left:0;padding-right:0;display:inline-block;line-height:26px;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version input.form-control{padding-left:12px !important;}.docs-page .docs-sidebar .docs-top .navbar-logo{padding:0;padding-top:.3rem;display:block;text-align:center;}.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-brand{font-size:1.5rem;font-weight:700;display:block;margin-right:0;padding:7px 0 10px;text-transform:uppercase;}.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-brand .docs-logo{width:110px;}.docs-page .docs-sidebar .docs-top .navbar-logo .go-back-site{display:none;}.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-logo-desc{font-size:1em;display:none;}.docs-page .docs-sidebar .docs-top .open-dmenu{position:absolute;top:10px;left:20px;}.docs-page .docs-content{padding-top:72px;max-width:100%;display:block !important;}.docs-page .docs-content .docs-text-field{padding:1rem 1.5rem;}.docs-page .docs-page-index{display:none;}}.for-mobile{display:none;}.for-desktop{display:inline-block;}pre[class*="language-"]{padding:1.4em 2em !important;margin:15px 0 25px !important;border-radius:6px;}code{padding:.2em .4em;margin:0;font-size:82%;background-color:#f0f1f3;border-radius:3px;color:#28a745;}pre code{padding:0;}pre .token.keyword{color:#569cd6;}pre .token.atrule,pre .token.attr-value,pre .token.function,pre .token.class-name{color:#d69d85;}:not(pre)>code[class*="language-"],pre[class*="language-"]{background:#191919 !important;}div.code-toolbar>.toolbar span{cursor:default;}div.code-toolbar>.toolbar a{cursor:copy;}@media(max-width:767px){body{font-size:14px;}.for-mobile{display:inline-block;}.for-desktop{display:none;}.close-mmenu,.close-dmenu{position:absolute;top:-78px;left:25px;color:#fff;font-size:68px;background:#fff;opacity:0;}.navbar{padding:.5rem 1.75rem;}.navbar .navbar-collapse{background:#38003d;position:fixed;top:86px;left:0;width:100%;height:100vh;height:calc(100vh - 86px);z-index:100 !important;}.navbar .navbar-collapse .navbar-nav{height:100vh;padding:20px 30px;overflow:auto;}.navbar .navbar-collapse .navbar-nav .nav-link{padding:1.2rem !important;}.navbar .navbar-toggler{padding:.5rem .75rem;font-size:1.5rem;line-height:1;background-color:transparent;border:0;border-radius:.25rem;color:#fff !important;margin-left:-1rem;}.section-with-logos img{margin:15px;opacity:1;-webkit-filter:grayscale(0%);filter:grayscale(0%);}span.code-arrow{padding:0 0 0;display:block;transform:rotate(90deg);font-size:2em;}.mb-5,.my-5{margin-bottom:2rem !important;}}@media screen and (max-width:767px){.navbar-logo .navbar-brand{display:inline-block;margin:0 auto !important;max-width:70%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}} \ No newline at end of file +body{position:relative;}.docs-page{background:#f5f7f9;}.docs-page .anchorjs-link{transition:all .25s linear;}.docs-page *:hover>.anchorjs-link{margin-left:-1.125em !important;transition:color .25s linear;color:#808080;}.docs-page .anchorjs-link:hover{color:#007bff;text-decoration:none;}.docs-page .docs-sidebar{background:#f5f7f9;padding-right:1rem;position:relative;top:0;left:0;position:fixed;}.docs-page .docs-sidebar .docs-sidebar-wrapper{width:270px;float:right;}.docs-page .docs-sidebar .docs-sidebar-wrapper input.form-control{background:none;background:#fff;border:0;}.docs-page .docs-sidebar .docs-sidebar-wrapper input.form-control:focus,.docs-page .docs-sidebar .docs-sidebar-wrapper input.form-control:active,.docs-page .docs-sidebar .docs-sidebar-wrapper input.form-control:hover,.docs-page .docs-sidebar .docs-sidebar-wrapper input.form-control:visited{box-shadow:none;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version{position:relative;padding:0 1rem;margin:.45rem 0;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select{border-radius:8px;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select .input-group-text{border:0;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control{line-height:1;border-top-left-radius:0;border-bottom-left-radius:0;padding:.3em .5em .5em;border:0;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control:focus,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control:active,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control:hover,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control:visited,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control:focus,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control:active,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control:hover,.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control:visited{box-shadow:none;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-filter{padding:0 1rem;margin:.5rem 0;font-size:.9em;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-filter .filter-icon i.fa{color:#ddd;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list{height:100vh;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list>ul{display:block;height:calc(100vh - 220px);overflow-y:auto;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul{font-size:.935em;list-style:none;padding:0 1rem;margin:0;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li{margin-left:0;padding-left:24px;display:block;width:100%;position:relative;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a{color:#999;font-weight:700;padding:7px 0;display:block;border-bottom:0;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a:hover{color:#000;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a.last-link{top:11px;color:#aaa;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li span.tree-toggle{color:#999;padding:7px 0;display:block;border-bottom:0;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li .plus-icon{font-size:.85em;transition:.3s;width:18px;height:18px;text-align:center;padding:0;line-height:1;border-radius:50%;margin-right:4px;position:absolute;left:2px;top:11px;color:#aaa;cursor:default;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li .plus-icon .fa-long-arrow-right.no-link{color:#555;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li .plus-icon .fa-chevron-right{cursor:pointer;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li ul{padding:0;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li ul li a{font-weight:400;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li ul li ul{padding:0;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li ul li ul li a{font-weight:300;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree>a{color:#000;transition:.4s;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree>span .fa{transform:rotate(90deg);color:#007bff;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree.last-link>span .fa{transform:rotate(0deg);}.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-brand{font-size:1.5rem;color:#000;font-weight:700;padding:20px 0 10px;line-height:1;}.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-brand strong{font-weight:300;text-transform:uppercase;font-size:.9rem;opacity:.6;}.docs-page .docs-sidebar .docs-top .navbar-logo .go-back-site{color:#000;opacity:.15;transition:.4s;font-size:.75rem;font-weight:300;}.docs-page .docs-sidebar .docs-top .navbar-logo .go-back-site:hover{text-decoration:none;opacity:.5;}.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-logo-desc{font-size:.85em;}.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-logo-desc strong{display:block;}.docs-page .docs-content{overflow-x:scroll;}.docs-page .docs-content .contributors{position:absolute;top:15px;right:5px;}.docs-page .docs-content .contributors .contributors-avatar{border-radius:21px;width:21px;height:21px;}.docs-page .docs-content .contributors a{padding:0;width:21px;height:21px;display:inline-block;margin:0 0 0 2px;}.docs-page .docs-content .contributors a:hover{text-decoration:none;}.docs-page .docs-content .docs-link-btns{border-bottom:1px solid #f4f5f7;background:#fdfdfd;padding:10px 20px;margin:0 -15px;text-align:right;font-size:.8em;min-height:40px;}.docs-page .docs-content .docs-link-btns a{color:#999;}.docs-page .docs-content .docs-link-btns a:hover{color:#444;text-decoration:none;}.docs-page .docs-content .docs-link-btns .twitter{color:#00acee;}.docs-page .docs-content .docs-link-btns .linkedin{color:#0077b5;}.docs-page .docs-content .docs-link-btns .email{color:#5a5a5a;}.docs-page .docs-content .docs-link-btns .share-button{margin-left:10px;}.docs-page .docs-content .docs-text-field{padding:2rem;}.docs-page .docs-content article.docs-body h1{padding-top:1rem;font-size:2.25rem;padding-bottom:10px;}.docs-page .docs-content article.docs-body h2{padding-top:2rem;padding-bottom:10px;font-size:2rem;}.docs-page .docs-content article.docs-body h3,.docs-page .docs-content article.docs-body h4,.docs-page .docs-content article.docs-body h5,.docs-page .docs-content article.docs-body h6{padding-top:20px;padding-bottom:5px;font-size:1.5rem;}.docs-page .docs-content article.docs-body h1,.docs-page .docs-content article.docs-body h2,.docs-page .docs-content article.docs-body h3,.docs-page .docs-content article.docs-body h4,.docs-page .docs-content article.docs-body h5,.docs-page .docs-content article.docs-body h6{position:relative;}.docs-page .docs-content article.docs-body h1 .anchor,.docs-page .docs-content article.docs-body h2 .anchor,.docs-page .docs-content article.docs-body h3 .anchor,.docs-page .docs-content article.docs-body h4 .anchor,.docs-page .docs-content article.docs-body h5 .anchor,.docs-page .docs-content article.docs-body h6 .anchor{position:absolute;right:-26px;font-size:18px;bottom:5px;color:#999;opacity:0;transition:.5s;}.docs-page .docs-content article.docs-body h1:hover .anchor,.docs-page .docs-content article.docs-body h2:hover .anchor,.docs-page .docs-content article.docs-body h3:hover .anchor,.docs-page .docs-content article.docs-body h4:hover .anchor,.docs-page .docs-content article.docs-body h5:hover .anchor,.docs-page .docs-content article.docs-body h6:hover .anchor{opacity:1;}.docs-page .docs-content article.docs-body img{max-width:100%;border:1px solid #f4f5f7;margin:15px 0 25px;box-shadow:0 0 45px #f8f9fa;border-radius:6px;}.docs-page .docs-content article.docs-body table{display:block;overflow:auto;width:100%;}.docs-page .docs-content article.docs-body table thead tr{border-bottom:2px inset;}.docs-page .docs-content article.docs-body table th{font-weight:600;}.docs-page .docs-content article.docs-body table td,.docs-page .docs-content article.docs-body table th{border:1px solid #dfe2e5;padding:6px 13px;}.docs-page .docs-content article.docs-body table tr{background-color:#fff;border-top:1px solid #c6cbd1;}.docs-page .docs-content article.docs-body table tr:nth-child(2n){background-color:#f6f8fa;}.docs-page .docs-content article.docs-body table img{background-color:initial;}.docs-page .docs-page-index{min-height:100vh;}.docs-page .docs-page-index #scroll-index{max-height:100vh;}.docs-page .docs-page-index .docs-inner-anchors{position:fixed;top:0;padding:10px;font-size:.9em;}.docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills{font-size:.92em;margin-left:15px;border-left:1px solid #eee;}.docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills .nav-link{padding:3px 14px 4px;color:#aaa;line-height:1.2;position:relative;border-left:1px solid #eee;border-radius:0;margin-left:-1px;margin-top:1px;margin-bottom:1px;transition:.2s;}.docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills .nav-link.active{border-left:2px solid #007bff;background:none;color:#007bff;}.docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills .nav-pills .nav-link.active{color:#007bff;}.docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills .nav-pills .nav-pills .nav-link.active{color:#007bff;}.docs-page .docs-page-index .docs-inner-anchors .index-scroll{margin-left:-30px;}.docs-page .docs-page-index .docs-inner-anchors .docs-anchors-wrapper{max-width:300px;float:left;}.docs-page .docs-page-index .scroll-top-btn{display:none;font-size:.85em;color:#aaa;text-decoration:none;padding-left:18px;}.docs-page .docs-page-index .scroll-top-btn.showup{display:block;}@media(min-width:1100px){.container{max-width:1080px;}.docs-page .docs-sidebar.dark-sidebar{background:#191919;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .version-select select.form-control,.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control{background:#333;border-color:#333;color:#999;font-size:.9em;min-height:40px;padding-left:8px;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control{background:#333;border-color:#333;color:#999;font-size:.9em;min-height:40px;padding-left:12px;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .version-select input.form-control::placeholder{color:#999;opacity:.5;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .version-select label{background:#444;border-color:#444;color:#ddd;width:36px;text-align:center;padding-left:0;padding-right:0;display:inline-block;line-height:26px;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-filter .form-control{background:#333;color:#999;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-filter select{border:0;border-radius:6px;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-filter .filter-icon i.fa{color:#aaa;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a{color:#aaa;border-bottom:0;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a:hover{color:#fff;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a .plus-icon{font-size:.85em;transition:.3s;width:18px;height:18px;text-align:center;padding:0;line-height:1;border-radius:50%;margin-right:4px;position:absolute;left:2px;top:11px;color:#aaa;cursor:default;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a .plus-icon .fa-long-arrow-right.no-link{color:#555;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a .plus-icon .fa-chevron-right{cursor:pointer;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a .plus-icon.last-link{top:11px;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li span.tree-toggle{color:#555;padding:7px 0;display:block;border-bottom:0;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree>a{color:#fff;transition:.4s;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree>a span .fa{color:#fff;}.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree>a span:not(.last-link) .fa{transform:rotate(90deg);color:#fff;}.docs-page .docs-sidebar.dark-sidebar .docs-top .navbar-logo .navbar-brand{color:#fff;text-transform:uppercase;white-space:unset;}.docs-page .docs-sidebar.dark-sidebar .docs-top .navbar-logo .go-back-site{color:#fff;}.docs-page .docs-sidebar.dark-sidebar .docs-top .navbar-logo .navbar-logo-desc{color:#ddd;}}@media(min-width:1366px){.container{max-width:1340px;}}@media(min-width:1440px){.container{max-width:1400px;}}@media(max-width:767px){.docs-page .docs-content article.docs-body h1{padding-top:1.5rem;}.docs-page{background:#f5f7f9;}.docs-page>.container-fluid{display:block;}.docs-page>.container-fluid>.row{display:block;}.docs-page .docs-sidebar{position:fixed;max-width:100%;width:100%;display:block;padding:0 !important;top:0;left:0;z-index:100;right:0;}.docs-page .docs-sidebar .docs-sidebar-wrapper{max-width:100%;width:100%;top:0;position:relative;margin:0 !important;height:72px;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list{padding:.5rem 1.5rem 2rem 1.5rem;position:fixed;top:70px;font-size:17px;left:0;width:100%;z-index:100;background:#f5f7f9;display:none;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list .docs-filter{padding:0 0 1rem !important;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version label{width:36px;text-align:center;padding-left:0;padding-right:0;display:inline-block;line-height:26px;}.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-version input.form-control{padding-left:12px !important;}.docs-page .docs-sidebar .docs-top .navbar-logo{padding:0;padding-top:.3rem;display:block;text-align:center;}.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-brand{font-size:1.5rem;font-weight:700;display:block;margin-right:0;padding:7px 0 10px;text-transform:uppercase;}.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-brand .docs-logo{width:110px;}.docs-page .docs-sidebar .docs-top .navbar-logo .go-back-site{display:none;}.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-logo-desc{font-size:1em;display:none;}.docs-page .docs-sidebar .docs-top .open-dmenu{position:absolute;top:10px;left:20px;}.docs-page .docs-content{padding-top:72px;max-width:100%;display:block !important;}.docs-page .docs-content .docs-text-field{padding:1rem 1.5rem;}.docs-page .docs-page-index{display:none;}}.for-mobile{display:none;}.for-desktop{display:inline-block;}pre[class*="language-"]{padding:1.4em 2em !important;margin:15px 0 25px !important;border-radius:6px;}code{padding:.2em .4em;margin:0;font-size:82%;background-color:#f0f1f3;border-radius:3px;color:#28a745;}pre code{padding:0;}pre .token.keyword{color:#569cd6;}pre .token.atrule,pre .token.attr-value,pre .token.function,pre .token.class-name{color:#d69d85;}:not(pre)>code[class*="language-"],pre[class*="language-"]{background:#191919 !important;}div.code-toolbar>.toolbar span{cursor:default;}div.code-toolbar>.toolbar a{cursor:copy;}@media(max-width:767px){body{font-size:14px;}.for-mobile{display:inline-block;}.for-desktop{display:none;}.close-mmenu,.close-dmenu{position:absolute;top:-78px;left:25px;color:#fff;font-size:68px;background:#fff;opacity:0;}.navbar{padding:.5rem 1.75rem;}.navbar .navbar-collapse{background:#38003d;position:fixed;top:86px;left:0;width:100%;height:100vh;height:calc(100vh - 86px);z-index:100 !important;}.navbar .navbar-collapse .navbar-nav{height:100vh;padding:20px 30px;overflow:auto;}.navbar .navbar-collapse .navbar-nav .nav-link{padding:1.2rem !important;}.navbar .navbar-toggler{padding:.5rem .75rem;font-size:1.5rem;line-height:1;background-color:transparent;border:0;border-radius:.25rem;color:#fff !important;margin-left:-1rem;}.section-with-logos img{margin:15px;opacity:1;-webkit-filter:grayscale(0%);filter:grayscale(0%);}span.code-arrow{padding:0 0 0;display:block;transform:rotate(90deg);font-size:2em;}.mb-5,.my-5{margin-bottom:2rem !important;}}@media screen and (max-width:767px){.navbar-logo .navbar-brand{display:inline-block;margin:0 auto !important;max-width:70%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}} \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/Styles/vs.scss b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/Styles/vs.scss index 728c5ad94a..22edcbb149 100644 --- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/Styles/vs.scss +++ b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/Styles/vs.scss @@ -113,7 +113,7 @@ body { font-weight: 700; padding: 7px 0; display: block; - border-bottom: 1px solid #eeeff3; + border-bottom: 0; &:hover { color: #000; @@ -129,7 +129,7 @@ body { color: #999; padding: 7px 0; display: block; - border-bottom: 1px solid #eeeff3; + border-bottom: 0; } .plus-icon { @@ -555,7 +555,7 @@ body { a { color: #aaa; - border-bottom: 1px solid #333; + border-bottom: 0; &:hover { color: #fff; @@ -598,7 +598,7 @@ body { color: #555; padding: 7px 0; display: block; - border-bottom: 1px solid #333; + border-bottom: 0; } diff --git a/modules/docs/test/Volo.Docs.Admin.Application.Tests/Volo.Docs.Admin.Application.Tests.csproj b/modules/docs/test/Volo.Docs.Admin.Application.Tests/Volo.Docs.Admin.Application.Tests.csproj new file mode 100644 index 0000000000..390476a38f --- /dev/null +++ b/modules/docs/test/Volo.Docs.Admin.Application.Tests/Volo.Docs.Admin.Application.Tests.csproj @@ -0,0 +1,17 @@ +
+
+
+ netcoreapp2.2
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/docs/test/Volo.Docs.Admin.Application.Tests/Volo/Docs/DocsAdminApplicationTestBase.cs b/modules/docs/test/Volo.Docs.Admin.Application.Tests/Volo/Docs/DocsAdminApplicationTestBase.cs
new file mode 100644
index 0000000000..c11233849a
--- /dev/null
+++ b/modules/docs/test/Volo.Docs.Admin.Application.Tests/Volo/Docs/DocsAdminApplicationTestBase.cs
@@ -0,0 +1,7 @@
+namespace Volo.Docs
+{
+ public class DocsAdminApplicationTestBase : DocsTestBase
+ {
+
+ }
+}
diff --git a/modules/docs/test/Volo.Docs.Admin.Application.Tests/Volo/Docs/DocsAdminApplicationTestModule.cs b/modules/docs/test/Volo.Docs.Admin.Application.Tests/Volo/Docs/DocsAdminApplicationTestModule.cs
new file mode 100644
index 0000000000..e85bac8ce3
--- /dev/null
+++ b/modules/docs/test/Volo.Docs.Admin.Application.Tests/Volo/Docs/DocsAdminApplicationTestModule.cs
@@ -0,0 +1,14 @@
+using Volo.Abp.Modularity;
+using Volo.Docs.Admin;
+
+namespace Volo.Docs
+{
+ [DependsOn(
+ typeof(DocsAdminApplicationModule),
+ typeof(DocsDomainTestModule)
+ )]
+ public class DocsAdminApplicationTestModule : AbpModule
+ {
+
+ }
+}
diff --git a/modules/docs/test/Volo.Docs.Admin.Application.Tests/Volo/Docs/ProjectAdminAppService_Tests.cs b/modules/docs/test/Volo.Docs.Admin.Application.Tests/Volo/Docs/ProjectAdminAppService_Tests.cs
new file mode 100644
index 0000000000..9fcb65f9ae
--- /dev/null
+++ b/modules/docs/test/Volo.Docs.Admin.Application.Tests/Volo/Docs/ProjectAdminAppService_Tests.cs
@@ -0,0 +1,121 @@
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using Shouldly;
+using Volo.Abp.Application.Dtos;
+using Volo.Docs.Admin.Projects;
+using Volo.Docs.Projects;
+using Xunit;
+
+namespace Volo.Docs
+{
+ public class ProjectAdminAppService_Tests : DocsAdminApplicationTestBase
+ {
+ private readonly IProjectAdminAppService _projectAdminAppService;
+ private readonly IProjectRepository _projectRepository;
+ private readonly DocsTestData _testData;
+
+ public ProjectAdminAppService_Tests()
+ {
+ _projectRepository = GetRequiredService();
+ _projectAdminAppService = GetRequiredService();
+ _testData = GetRequiredService();
+ }
+
+ [Fact]
+ public async Task GetListAsync()
+ {
+ var projects = await _projectAdminAppService.GetListAsync(new PagedAndSortedResultRequestDto());
+ projects.ShouldNotBeNull();
+ projects.TotalCount.ShouldBe(1);
+ projects.Items.ShouldContain(x => x.Name == "ABP vNext");
+ }
+
+ [Fact]
+ public async Task GetAsync()
+ {
+ var project = await _projectAdminAppService.GetAsync(_testData.PorjectId);
+ project.ShouldNotBeNull();
+ project.Id.ShouldBe(_testData.PorjectId);
+ }
+
+ [Fact]
+ public async Task CreateAsync()
+ {
+ var createProjectDto = new CreateProjectDto
+ {
+ Name = "ABP vNext",
+ ShortName = "ABP",
+ Format = "md",
+ DefaultDocumentName = "index",
+ NavigationDocumentName = "docs-nav.json",
+ MinimumVersion = "1",
+ MainWebsiteUrl = "abp.io",
+ LatestVersionBranchName = "",
+ DocumentStoreType = "GitHub",
+ ExtraProperties = new Dictionary()
+ };
+ createProjectDto.ExtraProperties.Add("GitHubRootUrl",
+ "https://github.com/abpframework/abp/tree/{version}/docs/en/");
+ createProjectDto.ExtraProperties.Add("GitHubAccessToken", "123456");
+ createProjectDto.ExtraProperties.Add("GitHubUserAgent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)");
+
+ //Act
+ var projectDto = await _projectAdminAppService.CreateAsync(createProjectDto);
+ projectDto.ShouldNotBeNull();
+ projectDto.Name.ShouldBe(createProjectDto.Name);
+ projectDto.ShortName.ShouldBe(createProjectDto.ShortName);
+ projectDto.Format.ShouldBe(createProjectDto.Format);
+ projectDto.DefaultDocumentName.ShouldBe(createProjectDto.DefaultDocumentName);
+ projectDto.NavigationDocumentName.ShouldBe(createProjectDto.NavigationDocumentName);
+ projectDto.MinimumVersion.ShouldBe(createProjectDto.MinimumVersion);
+ projectDto.MainWebsiteUrl.ShouldBe(createProjectDto.MainWebsiteUrl);
+ projectDto.LatestVersionBranchName.ShouldBe(createProjectDto.LatestVersionBranchName);
+ projectDto.DocumentStoreType.ShouldBe(createProjectDto.DocumentStoreType);
+
+ projectDto.ExtraProperties.Except(createProjectDto.ExtraProperties).Any().ShouldBe(false);
+ }
+
+ [Fact]
+ public async Task UpdateAsync()
+ {
+ var updateProjectDto = new UpdateProjectDto
+ {
+ Name = "ABP vNext",
+ Format = "md",
+ DefaultDocumentName = "index",
+ NavigationDocumentName = "docs-nav.json",
+
+ MinimumVersion = "1",
+ MainWebsiteUrl = "abp.io",
+ LatestVersionBranchName = "",
+ ExtraProperties = new Dictionary()
+ };
+ updateProjectDto.ExtraProperties.Add("test", "test");
+
+ var projectDto = await _projectAdminAppService.UpdateAsync(_testData.PorjectId, updateProjectDto);
+
+
+ projectDto.ShouldNotBeNull();
+ projectDto.Name.ShouldBe(updateProjectDto.Name);
+
+ projectDto.Format.ShouldBe(updateProjectDto.Format);
+ projectDto.DefaultDocumentName.ShouldBe(updateProjectDto.DefaultDocumentName);
+ projectDto.NavigationDocumentName.ShouldBe(updateProjectDto.NavigationDocumentName);
+ projectDto.MinimumVersion.ShouldBe(updateProjectDto.MinimumVersion);
+ projectDto.MainWebsiteUrl.ShouldBe(updateProjectDto.MainWebsiteUrl);
+ projectDto.LatestVersionBranchName.ShouldBe(updateProjectDto.LatestVersionBranchName);
+ projectDto.ExtraProperties.ShouldContainKey("test");
+ }
+
+ [Fact]
+ public async Task DeleteAsync()
+ {
+ (await _projectRepository.GetAsync(_testData.PorjectId)).ShouldNotBeNull();
+
+ await _projectAdminAppService.DeleteAsync(_testData.PorjectId);
+
+ (await _projectRepository.GetListAsync()).ShouldBeEmpty();
+ }
+ }
+}
diff --git a/modules/docs/test/Volo.Docs.Application.Tests/Volo.Docs.Application.Tests.csproj b/modules/docs/test/Volo.Docs.Application.Tests/Volo.Docs.Application.Tests.csproj
new file mode 100644
index 0000000000..87144ccfe9
--- /dev/null
+++ b/modules/docs/test/Volo.Docs.Application.Tests/Volo.Docs.Application.Tests.csproj
@@ -0,0 +1,17 @@
+
+
+
+ netcoreapp2.2
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/docs/test/Volo.Docs.Application.Tests/Volo/Docs/ApplicationService_Tests.cs b/modules/docs/test/Volo.Docs.Application.Tests/Volo/Docs/ApplicationService_Tests.cs
new file mode 100644
index 0000000000..bff7f09e1f
--- /dev/null
+++ b/modules/docs/test/Volo.Docs.Application.Tests/Volo/Docs/ApplicationService_Tests.cs
@@ -0,0 +1,45 @@
+using System.Threading.Tasks;
+using Shouldly;
+using Volo.Docs.Projects;
+using Xunit;
+
+namespace Volo.Docs
+{
+ public class ApplicationService_Tests : DocsApplicationTestBase
+ {
+ private readonly IProjectAppService _projectAppService;
+ private readonly DocsTestData _testData;
+
+ public ApplicationService_Tests()
+ {
+ _projectAppService = GetRequiredService();
+ _testData = GetRequiredService();
+ }
+
+ [Fact]
+ public async Task GetListAsync()
+ {
+ var projects = await _projectAppService.GetListAsync();
+ projects.ShouldNotBeNull();
+ projects.Items.Count.ShouldBe(1);
+ projects.Items.ShouldContain(x => x.Id == _testData.PorjectId);
+ }
+
+ [Fact]
+ public async Task GetAsync()
+ {
+ var project = await _projectAppService.GetAsync("ABP");
+ project.ShouldNotBeNull();
+ project.ShortName.ShouldBe("ABP");
+ }
+
+ [Fact]
+ public async Task GetVersionsAsync()
+ {
+ var versions = await _projectAppService.GetVersionsAsync("ABP");
+ versions.ShouldNotBeNull();
+ versions.Items.Count.ShouldBe(1);
+ versions.Items.ShouldContain(x => x.Name == "0.15.0" && x.DisplayName == "0.15.0");
+ }
+ }
+}
diff --git a/modules/docs/test/Volo.Docs.Application.Tests/Volo/Docs/DocsApplicationTestBase.cs b/modules/docs/test/Volo.Docs.Application.Tests/Volo/Docs/DocsApplicationTestBase.cs
new file mode 100644
index 0000000000..f0fb94d40b
--- /dev/null
+++ b/modules/docs/test/Volo.Docs.Application.Tests/Volo/Docs/DocsApplicationTestBase.cs
@@ -0,0 +1,7 @@
+namespace Volo.Docs
+{
+ public class DocsApplicationTestBase : DocsTestBase
+ {
+
+ }
+}
diff --git a/modules/docs/test/Volo.Docs.Application.Tests/Volo/Docs/DocsApplicationTestModule.cs b/modules/docs/test/Volo.Docs.Application.Tests/Volo/Docs/DocsApplicationTestModule.cs
new file mode 100644
index 0000000000..62d027c220
--- /dev/null
+++ b/modules/docs/test/Volo.Docs.Application.Tests/Volo/Docs/DocsApplicationTestModule.cs
@@ -0,0 +1,13 @@
+using Volo.Abp.Modularity;
+
+namespace Volo.Docs
+{
+ [DependsOn(
+ typeof(DocsApplicationModule),
+ typeof(DocsDomainTestModule)
+ )]
+ public class DocsApplicationTestModule : AbpModule
+ {
+
+ }
+}
diff --git a/modules/docs/test/Volo.Docs.Domain.Tests/Volo.Docs.Domain.Tests.csproj b/modules/docs/test/Volo.Docs.Domain.Tests/Volo.Docs.Domain.Tests.csproj
new file mode 100644
index 0000000000..ba1185b397
--- /dev/null
+++ b/modules/docs/test/Volo.Docs.Domain.Tests/Volo.Docs.Domain.Tests.csproj
@@ -0,0 +1,17 @@
+
+
+
+ netcoreapp2.2
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/docs/test/Volo.Docs.Domain.Tests/Volo/Docs/DocsDomainTestBase.cs b/modules/docs/test/Volo.Docs.Domain.Tests/Volo/Docs/DocsDomainTestBase.cs
new file mode 100644
index 0000000000..b46e054370
--- /dev/null
+++ b/modules/docs/test/Volo.Docs.Domain.Tests/Volo/Docs/DocsDomainTestBase.cs
@@ -0,0 +1,7 @@
+namespace Volo.Docs
+{
+ public abstract class DocsDomainTestBase : DocsTestBase
+ {
+
+ }
+}
diff --git a/modules/docs/test/Volo.Docs.Domain.Tests/Volo/Docs/DocsDomainTestModule.cs b/modules/docs/test/Volo.Docs.Domain.Tests/Volo/Docs/DocsDomainTestModule.cs
new file mode 100644
index 0000000000..c8ed977193
--- /dev/null
+++ b/modules/docs/test/Volo.Docs.Domain.Tests/Volo/Docs/DocsDomainTestModule.cs
@@ -0,0 +1,14 @@
+using Volo.Docs.EntityFrameworkCore;
+using Volo.Abp.Modularity;
+
+namespace Volo.Docs
+{
+ [DependsOn(
+ typeof(DocsEntityFrameworkCoreTestModule),
+ typeof(DocsTestBaseModule)
+ )]
+ public class DocsDomainTestModule : AbpModule
+ {
+
+ }
+}
diff --git a/modules/docs/test/Volo.Docs.Domain.Tests/Volo/Docs/DocumentStoreFactory_Tests.cs b/modules/docs/test/Volo.Docs.Domain.Tests/Volo/Docs/DocumentStoreFactory_Tests.cs
new file mode 100644
index 0000000000..73e07ec8e2
--- /dev/null
+++ b/modules/docs/test/Volo.Docs.Domain.Tests/Volo/Docs/DocumentStoreFactory_Tests.cs
@@ -0,0 +1,25 @@
+using Shouldly;
+using Volo.Docs.Documents;
+using Volo.Docs.FileSystem.Documents;
+using Volo.Docs.GitHub.Documents;
+using Xunit;
+
+namespace Volo.Docs
+{
+ public class DocumentStoreFactory_Tests : DocsDomainTestBase
+ {
+ private readonly IDocumentStoreFactory _documentStoreFactory;
+
+ public DocumentStoreFactory_Tests()
+ {
+ _documentStoreFactory = GetRequiredService();
+ }
+
+ [Fact]
+ public void Create()
+ {
+ _documentStoreFactory.Create(GithubDocumentStore.Type).GetType().ShouldBe(typeof(GithubDocumentStore));
+ _documentStoreFactory.Create(FileSystemDocumentStore.Type).GetType().ShouldBe(typeof(FileSystemDocumentStore));
+ }
+ }
+}
diff --git a/modules/docs/test/Volo.Docs.Domain.Tests/Volo/Docs/GithubDocumentStore_Tests.cs b/modules/docs/test/Volo.Docs.Domain.Tests/Volo/Docs/GithubDocumentStore_Tests.cs
new file mode 100644
index 0000000000..1f8bfeca77
--- /dev/null
+++ b/modules/docs/test/Volo.Docs.Domain.Tests/Volo/Docs/GithubDocumentStore_Tests.cs
@@ -0,0 +1,72 @@
+using System.Threading.Tasks;
+using Shouldly;
+using Volo.Docs.Documents;
+using Volo.Docs.GitHub.Documents;
+using Volo.Docs.Projects;
+using Xunit;
+
+namespace Volo.Docs
+{
+ public class GithubDocumentStore_Tests : DocsDomainTestBase
+ {
+ private readonly IDocumentStoreFactory _documentStoreFactory;
+ private readonly IProjectRepository _projectRepository;
+ private readonly DocsTestData _testData;
+
+ public GithubDocumentStore_Tests()
+ {
+ _documentStoreFactory = GetRequiredService();
+ _projectRepository = GetRequiredService();
+ _testData = GetRequiredService();
+ }
+
+ [Fact]
+ public async Task GetDocumentAsync()
+ {
+ var store = _documentStoreFactory.Create(GithubDocumentStore.Type);
+
+ var project = await _projectRepository.FindAsync(_testData.PorjectId);
+ project.ShouldNotBeNull();
+
+ var document = await store.GetDocumentAsync(project, "index2", "0.123.0");
+ document.ShouldNotBeNull();
+
+ document.Title.ShouldBe("index2");
+ document.FileName.ShouldBe("index2");
+ document.Version.ShouldBe("0.123.0");
+ document.Content.ShouldBe("stringContent");
+ }
+
+ [Fact]
+ public async Task GetVersionsAsync()
+ {
+ var store = _documentStoreFactory.Create(GithubDocumentStore.Type);
+
+ var project = await _projectRepository.FindAsync(_testData.PorjectId);
+ project.ShouldNotBeNull();
+
+ var document = await store.GetVersionsAsync(project);
+ document.ShouldNotBeNull();
+
+ document.Count.ShouldBe(1);
+ document.ShouldContain(x => x.Name == "0.15.0" && x.DisplayName == "0.15.0");
+ }
+
+ [Fact]
+ public async Task GetResource()
+ {
+ var store = _documentStoreFactory.Create(GithubDocumentStore.Type);
+
+ var project = await _projectRepository.FindAsync(_testData.PorjectId);
+ project.ShouldNotBeNull();
+
+ var documentResource = await store.GetResource(project, "index.md", "0.123.0");
+ documentResource.ShouldNotBeNull();
+
+ documentResource.Content.ShouldBe(new byte[]
+ {
+ 0x01, 0x02, 0x03
+ });
+ }
+ }
+}
diff --git a/modules/docs/test/Volo.Docs.EntityFrameworkCore.Tests/Volo.Docs.EntityFrameworkCore.Tests.csproj b/modules/docs/test/Volo.Docs.EntityFrameworkCore.Tests/Volo.Docs.EntityFrameworkCore.Tests.csproj
new file mode 100644
index 0000000000..666c1e813f
--- /dev/null
+++ b/modules/docs/test/Volo.Docs.EntityFrameworkCore.Tests/Volo.Docs.EntityFrameworkCore.Tests.csproj
@@ -0,0 +1,20 @@
+
+
+
+ netcoreapp2.2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/docs/test/Volo.Docs.EntityFrameworkCore.Tests/Volo/Docs/EntityFrameworkCore/DocsEntityFrameworkCoreTestModule.cs b/modules/docs/test/Volo.Docs.EntityFrameworkCore.Tests/Volo/Docs/EntityFrameworkCore/DocsEntityFrameworkCoreTestModule.cs
new file mode 100644
index 0000000000..a4d5eb5a25
--- /dev/null
+++ b/modules/docs/test/Volo.Docs.EntityFrameworkCore.Tests/Volo/Docs/EntityFrameworkCore/DocsEntityFrameworkCoreTestModule.cs
@@ -0,0 +1,41 @@
+using Microsoft.Data.Sqlite;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Storage;
+using Volo.Abp.EntityFrameworkCore;
+using Volo.Abp.Modularity;
+
+namespace Volo.Docs.EntityFrameworkCore
+{
+ [DependsOn(
+ typeof(DocsTestBaseModule),
+ typeof(DocsEntityFrameworkCoreModule)
+ )]
+ public class DocsEntityFrameworkCoreTestModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ var sqliteConnection = CreateDatabaseAndGetConnection();
+
+ Configure(options =>
+ {
+ options.Configure(abpDbContextConfigurationContext =>
+ {
+ abpDbContextConfigurationContext.DbContextOptions.UseSqlite(sqliteConnection);
+ });
+ });
+ }
+
+ private static SqliteConnection CreateDatabaseAndGetConnection()
+ {
+ var connection = new SqliteConnection("Data Source=:memory:");
+ connection.Open();
+
+ new DocsDbContext(
+ new DbContextOptionsBuilder().UseSqlite(connection).Options
+ ).GetService().CreateTables();
+
+ return connection;
+ }
+ }
+}
diff --git a/modules/docs/test/Volo.Docs.EntityFrameworkCore.Tests/Volo/Docs/EntityFrameworkCore/ProjectRepository_Tests.cs b/modules/docs/test/Volo.Docs.EntityFrameworkCore.Tests/Volo/Docs/EntityFrameworkCore/ProjectRepository_Tests.cs
new file mode 100644
index 0000000000..9f04386b09
--- /dev/null
+++ b/modules/docs/test/Volo.Docs.EntityFrameworkCore.Tests/Volo/Docs/EntityFrameworkCore/ProjectRepository_Tests.cs
@@ -0,0 +1,7 @@
+namespace Volo.Docs.EntityFrameworkCore
+{
+ public class ProjectRepository_Tests : ProjectRepository_Tests
+ {
+
+ }
+}
diff --git a/modules/docs/test/Volo.Docs.TestBase/Volo.Docs.TestBase.csproj b/modules/docs/test/Volo.Docs.TestBase/Volo.Docs.TestBase.csproj
new file mode 100644
index 0000000000..a92946140a
--- /dev/null
+++ b/modules/docs/test/Volo.Docs.TestBase/Volo.Docs.TestBase.csproj
@@ -0,0 +1,26 @@
+
+
+
+ netcoreapp2.2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/docs/test/Volo.Docs.TestBase/Volo/Docs/DocsTestBase.cs b/modules/docs/test/Volo.Docs.TestBase/Volo/Docs/DocsTestBase.cs
new file mode 100644
index 0000000000..e8b7fa0126
--- /dev/null
+++ b/modules/docs/test/Volo.Docs.TestBase/Volo/Docs/DocsTestBase.cs
@@ -0,0 +1,51 @@
+using System;
+using System.Collections.Generic;
+using Microsoft.Extensions.DependencyInjection;
+using NSubstitute;
+using Octokit;
+using Volo.Abp;
+using Volo.Abp.Modularity;
+using Volo.Docs.GitHub.Documents;
+
+namespace Volo.Docs
+{
+ public abstract class DocsTestBase : AbpIntegratedTest
+ where TStartupModule : IAbpModule
+ {
+ protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options)
+ {
+ options.UseAutofac();
+ }
+
+ protected override void AfterAddApplication(IServiceCollection services)
+ {
+ var repositoryManager = Substitute.For();
+ repositoryManager.GetFileRawStringContentAsync(Arg.Any(), Arg.Any(), Arg.Any())
+ .Returns("stringContent");
+ repositoryManager.GetFileRawByteArrayContentAsync(Arg.Any(), Arg.Any(), Arg.Any())
+ .Returns(new byte[] { 0x01, 0x02, 0x03 });
+ repositoryManager.GetReleasesAsync(Arg.Any(), Arg.Any(), Arg.Any())
+ .Returns(new List
+ {
+ new Release("https://api.github.com/repos/abpframework/abp/releases/16293679",
+ "https://github.com/abpframework/abp/releases/tag/0.15.0",
+ "https://api.github.com/repos/abpframework/abp/releases/16293679/assets",
+ "https://uploads.github.com/repos/abpframework/abp/releases/16293679/assets{?name,label}",
+ 16293679,
+ "0.15.0",
+ "master",
+ "0.15.0",
+ "0.15.0 already release",
+ false,
+ false,
+ DateTimeOffset.Parse("2019-03-22T18:43:58Z"),
+ DateTimeOffset.Parse("2019-03-22T19:44:25Z"),
+ null,
+ "https://api.github.com/repos/abpframework/abp/tarball/0.15.0",
+ "https://api.github.com/repos/abpframework/abp/zipball/0.15.0",
+ null)
+ });
+ services.AddSingleton(repositoryManager);
+ }
+ }
+}
diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.TestBase/Volo/Abp/FeatureManagement/AbpFeatureManagementTestBaseModule.cs b/modules/docs/test/Volo.Docs.TestBase/Volo/Docs/DocsTestBaseModule.cs
similarity index 79%
rename from modules/feature-management/test/Volo.Abp.FeatureManagement.TestBase/Volo/Abp/FeatureManagement/AbpFeatureManagementTestBaseModule.cs
rename to modules/docs/test/Volo.Docs.TestBase/Volo/Docs/DocsTestBaseModule.cs
index bf6169b488..a4661075d0 100644
--- a/modules/feature-management/test/Volo.Abp.FeatureManagement.TestBase/Volo/Abp/FeatureManagement/AbpFeatureManagementTestBaseModule.cs
+++ b/modules/docs/test/Volo.Docs.TestBase/Volo/Docs/DocsTestBaseModule.cs
@@ -1,17 +1,18 @@
using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp;
using Volo.Abp.Authorization;
using Volo.Abp.Autofac;
using Volo.Abp.Modularity;
-namespace Volo.Abp.FeatureManagement
+namespace Volo.Docs
{
[DependsOn(
typeof(AbpAutofacModule),
typeof(AbpTestBaseModule),
typeof(AbpAuthorizationModule),
- typeof(AbpFeatureManagementDomainModule)
+ typeof(DocsDomainModule)
)]
- public class AbpFeatureManagementTestBaseModule : AbpModule
+ public class DocsTestBaseModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
@@ -28,7 +29,7 @@ namespace Volo.Abp.FeatureManagement
using (var scope = context.ServiceProvider.CreateScope())
{
scope.ServiceProvider
- .GetRequiredService()
+ .GetRequiredService()
.Build();
}
}
diff --git a/modules/docs/test/Volo.Docs.TestBase/Volo/Docs/DocsTestData.cs b/modules/docs/test/Volo.Docs.TestBase/Volo/Docs/DocsTestData.cs
new file mode 100644
index 0000000000..829195efe6
--- /dev/null
+++ b/modules/docs/test/Volo.Docs.TestBase/Volo/Docs/DocsTestData.cs
@@ -0,0 +1,10 @@
+using System;
+using Volo.Abp.DependencyInjection;
+
+namespace Volo.Docs
+{
+ public class DocsTestData : ISingletonDependency
+ {
+ public Guid PorjectId { get; } = Guid.NewGuid();
+ }
+}
diff --git a/modules/docs/test/Volo.Docs.TestBase/Volo/Docs/DocsTestDataBuilder.cs b/modules/docs/test/Volo.Docs.TestBase/Volo/Docs/DocsTestDataBuilder.cs
new file mode 100644
index 0000000000..39ffc9691e
--- /dev/null
+++ b/modules/docs/test/Volo.Docs.TestBase/Volo/Docs/DocsTestDataBuilder.cs
@@ -0,0 +1,41 @@
+using Volo.Abp.Data;
+using Volo.Abp.DependencyInjection;
+using Volo.Docs.GitHub.Documents;
+using Volo.Docs.Projects;
+
+namespace Volo.Docs
+{
+ public class DocsTestDataBuilder : ITransientDependency
+ {
+ private readonly DocsTestData _testData;
+ private readonly IProjectRepository _projectRepository;
+
+ public DocsTestDataBuilder(
+ DocsTestData testData,
+ IProjectRepository projectRepository)
+ {
+ _testData = testData;
+ _projectRepository = projectRepository;
+ }
+
+ public void Build()
+ {
+ var project = new Project(
+ _testData.PorjectId,
+ "ABP vNext",
+ "ABP",
+ GithubDocumentStore.Type,
+ "md",
+ "index",
+ "docs-nav.json"
+ );
+
+ project
+ .SetProperty("GitHubRootUrl", "https://github.com/abpframework/abp/tree/{version}/docs/en/")
+ .SetProperty("GitHubAccessToken", "123456")
+ .SetProperty("GitHubUserAgent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)");
+
+ _projectRepository.Insert(project);
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/docs/test/Volo.Docs.TestBase/Volo/Docs/ProjectRepository_Tests.cs b/modules/docs/test/Volo.Docs.TestBase/Volo/Docs/ProjectRepository_Tests.cs
new file mode 100644
index 0000000000..d4351aa11e
--- /dev/null
+++ b/modules/docs/test/Volo.Docs.TestBase/Volo/Docs/ProjectRepository_Tests.cs
@@ -0,0 +1,36 @@
+using System.Threading.Tasks;
+using Shouldly;
+using Volo.Abp.Modularity;
+using Volo.Docs.Projects;
+using Xunit;
+
+namespace Volo.Docs
+{
+ public abstract class ProjectRepository_Tests : DocsTestBase
+ where TStartupModule : IAbpModule
+ {
+ protected readonly IProjectRepository ProjectRepository;
+
+ protected ProjectRepository_Tests()
+ {
+ ProjectRepository = GetRequiredService(); ;
+ }
+
+ [Fact]
+ public async Task GetListAsync()
+ {
+ var projects = await ProjectRepository.GetListAsync();
+
+ projects.Count.ShouldBe(1);
+ }
+
+ [Fact]
+ public async Task GetByShortNameAsync()
+ {
+ var project = await ProjectRepository.GetByShortNameAsync("ABP");
+
+ project.ShouldNotBeNull();
+ project.ShortName.ShouldBe("ABP");
+ }
+ }
+}
diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/Localization/ApplicationContracts/pt-BR.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/Localization/ApplicationContracts/pt-BR.json
new file mode 100644
index 0000000000..6d746df04c
--- /dev/null
+++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/Localization/ApplicationContracts/pt-BR.json
@@ -0,0 +1,6 @@
+{
+ "culture": "pt-BR",
+ "texts": {
+
+ }
+}
\ No newline at end of file
diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/Localization/ApplicationContracts/zh-Hans.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/Localization/ApplicationContracts/zh-Hans.json
new file mode 100644
index 0000000000..25137f1ee3
--- /dev/null
+++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application.Contracts/Volo/Abp/FeatureManagement/Localization/ApplicationContracts/zh-Hans.json
@@ -0,0 +1,6 @@
+{
+ "culture": "zh-Hans",
+ "texts": {
+
+ }
+}
\ No newline at end of file
diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs
index b8b6c33d7c..ca2ea995c7 100644
--- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs
+++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Application/Volo/Abp/FeatureManagement/FeatureAppService.cs
@@ -45,7 +45,7 @@ namespace Volo.Abp.FeatureManagement
{
Name = featureDefinition.Name,
ValueType = featureDefinition.ValueType,
- Description = featureDefinition.Description.Localize(_stringLocalizerFactory),
+ Description = featureDefinition.Description?.Localize(_stringLocalizerFactory),
ParentName = featureDefinition.Parent?.Name,
Value = await _featureManager.GetOrNullAsync(featureDefinition.Name, providerName, providerKey)
});
diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/Localization/Domain/pt-BR.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/Localization/Domain/pt-BR.json
new file mode 100644
index 0000000000..6d746df04c
--- /dev/null
+++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/Localization/Domain/pt-BR.json
@@ -0,0 +1,6 @@
+{
+ "culture": "pt-BR",
+ "texts": {
+
+ }
+}
\ No newline at end of file
diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/Localization/Domain/tr.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/Localization/Domain/tr.json
new file mode 100644
index 0000000000..3f906a3cdc
--- /dev/null
+++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/Localization/Domain/tr.json
@@ -0,0 +1,6 @@
+{
+ "culture": "tr",
+ "texts": {
+
+ }
+}
\ No newline at end of file
diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/Localization/Domain/zh-Hans.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/Localization/Domain/zh-Hans.json
new file mode 100644
index 0000000000..25137f1ee3
--- /dev/null
+++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/Localization/Domain/zh-Hans.json
@@ -0,0 +1,6 @@
+{
+ "culture": "zh-Hans",
+ "texts": {
+
+ }
+}
\ No newline at end of file
diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Localization/Resources/FeatureManagement/pt-BR.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Localization/Resources/FeatureManagement/pt-BR.json
new file mode 100644
index 0000000000..6d746df04c
--- /dev/null
+++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Localization/Resources/FeatureManagement/pt-BR.json
@@ -0,0 +1,6 @@
+{
+ "culture": "pt-BR",
+ "texts": {
+
+ }
+}
\ No newline at end of file
diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Localization/Resources/FeatureManagement/tr.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Localization/Resources/FeatureManagement/tr.json
new file mode 100644
index 0000000000..3f906a3cdc
--- /dev/null
+++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Localization/Resources/FeatureManagement/tr.json
@@ -0,0 +1,6 @@
+{
+ "culture": "tr",
+ "texts": {
+
+ }
+}
\ No newline at end of file
diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Localization/Resources/FeatureManagement/zh-Hans.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Localization/Resources/FeatureManagement/zh-Hans.json
new file mode 100644
index 0000000000..25137f1ee3
--- /dev/null
+++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Localization/Resources/FeatureManagement/zh-Hans.json
@@ -0,0 +1,6 @@
+{
+ "culture": "zh-Hans",
+ "texts": {
+
+ }
+}
\ No newline at end of file
diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Volo.Abp.FeatureManagement.Web.csproj b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Volo.Abp.FeatureManagement.Web.csproj
index ffe9acd932..2983c95ddf 100644
--- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Volo.Abp.FeatureManagement.Web.csproj
+++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Web/Volo.Abp.FeatureManagement.Web.csproj
@@ -21,7 +21,6 @@
-
diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/FeatureAppService_Tests.cs b/modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/FeatureAppService_Tests.cs
new file mode 100644
index 0000000000..5198ea7277
--- /dev/null
+++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/FeatureAppService_Tests.cs
@@ -0,0 +1,80 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using NSubstitute;
+using Shouldly;
+using Volo.Abp.Features;
+using Volo.Abp.Users;
+using Xunit;
+
+namespace Volo.Abp.FeatureManagement
+{
+ public class FeatureAppService_Tests : FeatureManagementApplicationTestBase
+ {
+ private readonly IFeatureAppService _featureAppService;
+ private readonly IFeatureValueRepository _featureValueRepository;
+ private ICurrentUser _currentUser;
+ private readonly FeatureManagementTestData _testData;
+
+
+ public FeatureAppService_Tests()
+ {
+ _featureAppService = GetRequiredService();
+ _featureValueRepository = GetRequiredService();
+ _testData = GetRequiredService();
+ }
+
+ protected override void AfterAddApplication(IServiceCollection services)
+ {
+ _currentUser = Substitute.For();
+ services.AddSingleton(_currentUser);
+ }
+
+ [Fact]
+ public async Task GetAsync()
+ {
+ Login(_testData.User1Id);
+
+ var featureList = await _featureAppService.GetAsync(EditionFeatureValueProvider.ProviderName,
+ TestEditionIds.Regular.ToString("N"));
+
+ featureList.ShouldNotBeNull();
+ featureList.Features.ShouldContain(feature => feature.Name == TestFeatureDefinitionProvider.SocialLogins);
+ }
+
+ [Fact]
+ public async Task UpdateAsync()
+ {
+ Login(_testData.User1Id);
+
+ await _featureAppService.UpdateAsync(EditionFeatureValueProvider.ProviderName,
+ TestEditionIds.Regular.ToString("N"), new UpdateFeaturesDto()
+ {
+ Features = new List()
+ {
+ new UpdateFeatureDto()
+ {
+ Name = TestFeatureDefinitionProvider.SocialLogins,
+ Value = false.ToString().ToLowerInvariant()
+ }
+ }
+ });
+
+ (await _featureAppService.GetAsync(EditionFeatureValueProvider.ProviderName,
+ TestEditionIds.Regular.ToString("N"))).Features.Any(x =>
+ x.Name == TestFeatureDefinitionProvider.SocialLogins &&
+ x.Value == false.ToString().ToLowerInvariant())
+ .ShouldBeTrue();
+
+ }
+
+ private void Login(Guid userId)
+ {
+ _currentUser.Id.Returns(userId);
+ _currentUser.IsAuthenticated.Returns(true);
+ }
+ }
+}
diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/FeatureManagementApplicationTestBase.cs b/modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/FeatureManagementApplicationTestBase.cs
new file mode 100644
index 0000000000..f9e74aed57
--- /dev/null
+++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/FeatureManagementApplicationTestBase.cs
@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Volo.Abp.FeatureManagement
+{
+ public class FeatureManagementApplicationTestBase : FeatureManagementTestBase
+ {
+
+ }
+}
diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/AbpFeatureManagementApplicationTestModule.cs b/modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/FeatureManagementApplicationTestModule.cs
similarity index 75%
rename from modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/AbpFeatureManagementApplicationTestModule.cs
rename to modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/FeatureManagementApplicationTestModule.cs
index fb65739dca..2952c7da60 100644
--- a/modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/AbpFeatureManagementApplicationTestModule.cs
+++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.Application.Tests/Volo/Abp/FeatureManagement/FeatureManagementApplicationTestModule.cs
@@ -6,7 +6,7 @@ namespace Volo.Abp.FeatureManagement
typeof(AbpFeatureManagementApplicationModule),
typeof(AbpFeatureManagementDomainTestModule)
)]
- public class AbpFeatureManagementApplicationTestModule : AbpModule
+ public class FeatureManagementApplicationTestModule : AbpModule
{
}
diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.Domain.Tests/Volo/Abp/FeatureManagement/FeatureValueCacheItemInvalidator_Tests.cs b/modules/feature-management/test/Volo.Abp.FeatureManagement.Domain.Tests/Volo/Abp/FeatureManagement/FeatureValueCacheItemInvalidator_Tests.cs
new file mode 100644
index 0000000000..d6666c6c09
--- /dev/null
+++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.Domain.Tests/Volo/Abp/FeatureManagement/FeatureValueCacheItemInvalidator_Tests.cs
@@ -0,0 +1,47 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+using Shouldly;
+using Volo.Abp.Caching;
+using Volo.Abp.Features;
+using Xunit;
+
+namespace Volo.Abp.FeatureManagement
+{
+ public class FeatureValueCacheItemInvalidator_Tests : FeatureManagementTestBase
+ {
+ private IDistributedCache _cache;
+ private IFeatureValueRepository _featureValueRepository;
+ private IFeatureManagementStore _featureManagementStore;
+
+ public FeatureValueCacheItemInvalidator_Tests()
+ {
+ _cache = GetRequiredService>();
+ _featureValueRepository = GetRequiredService();
+ _featureManagementStore = GetRequiredService();
+ }
+
+ [Fact]
+ public async Task Cache_Should_Invalidator_WhenFeatureChanged()
+ {
+ // Arrange cache feature.
+ await _featureManagementStore.GetOrNullAsync(TestFeatureDefinitionProvider.SocialLogins,
+ EditionFeatureValueProvider.ProviderName,
+ TestEditionIds.Regular.ToString("N"));
+
+ var feature = await _featureValueRepository.FindAsync(TestFeatureDefinitionProvider.SocialLogins,
+ EditionFeatureValueProvider.ProviderName,
+ TestEditionIds.Regular.ToString("N"));
+
+ // Act
+ await _featureValueRepository.DeleteAsync(feature);
+
+ // Assert
+ (await _cache.GetAsync(FeatureValueCacheItem.CalculateCacheKey(TestFeatureDefinitionProvider.SocialLogins,
+ EditionFeatureValueProvider.ProviderName,
+ TestEditionIds.Regular.ToString("N")))).ShouldBeNull();
+
+ }
+ }
+}
diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests/Volo/Abp/FeatureManagement/EntityFrameworkCore/AbpFeatureManagementEntityFrameworkCoreTestModule.cs b/modules/feature-management/test/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests/Volo/Abp/FeatureManagement/EntityFrameworkCore/AbpFeatureManagementEntityFrameworkCoreTestModule.cs
index 7a1eef410e..d5c573a360 100644
--- a/modules/feature-management/test/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests/Volo/Abp/FeatureManagement/EntityFrameworkCore/AbpFeatureManagementEntityFrameworkCoreTestModule.cs
+++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests/Volo/Abp/FeatureManagement/EntityFrameworkCore/AbpFeatureManagementEntityFrameworkCoreTestModule.cs
@@ -8,7 +8,7 @@ using Volo.Abp.Modularity;
namespace Volo.Abp.FeatureManagement.EntityFrameworkCore
{
[DependsOn(
- typeof(AbpFeatureManagementTestBaseModule),
+ typeof(FeatureManagementTestBaseModule),
typeof(AbpFeatureManagementEntityFrameworkCoreModule)
)]
public class AbpFeatureManagementEntityFrameworkCoreTestModule : AbpModule
diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests/Volo/Abp/FeatureManagement/EntityFrameworkCore/FeatureManagementStore_Tests.cs b/modules/feature-management/test/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests/Volo/Abp/FeatureManagement/EntityFrameworkCore/FeatureManagementStore_Tests.cs
new file mode 100644
index 0000000000..78f27fa222
--- /dev/null
+++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.EntityFrameworkCore.Tests/Volo/Abp/FeatureManagement/EntityFrameworkCore/FeatureManagementStore_Tests.cs
@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Volo.Abp.FeatureManagement.EntityFrameworkCore
+{
+ public class FeatureManagementStore_Tests : FeatureManagementStore_Tests
+ {
+
+ }
+}
diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/AbpFeatureManagementMongoDbTestModule.cs b/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/AbpFeatureManagementMongoDbTestModule.cs
index bc5dfa0b52..6c39cf74ae 100644
--- a/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/AbpFeatureManagementMongoDbTestModule.cs
+++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/AbpFeatureManagementMongoDbTestModule.cs
@@ -5,7 +5,7 @@ using Volo.Abp.Modularity;
namespace Volo.Abp.FeatureManagement.MongoDB
{
[DependsOn(
- typeof(AbpFeatureManagementTestBaseModule),
+ typeof(FeatureManagementTestBaseModule),
typeof(AbpFeatureManagementMongoDbModule)
)]
public class AbpFeatureManagementMongoDbTestModule : AbpModule
diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/FeatureManagementStore_Tests.cs b/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/FeatureManagementStore_Tests.cs
new file mode 100644
index 0000000000..7df6e3516b
--- /dev/null
+++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.MongoDB.Tests/Volo/Abp/FeatureManagement/MongoDB/FeatureManagementStore_Tests.cs
@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Volo.Abp.FeatureManagement.MongoDB
+{
+ public class FeatureManagementStore_Tests : FeatureManagementStore_Tests
+ {
+
+ }
+}
diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.TestBase/Volo/Abp/FeatureManagement/FeatureManagementStore_Tests.cs b/modules/feature-management/test/Volo.Abp.FeatureManagement.TestBase/Volo/Abp/FeatureManagement/FeatureManagementStore_Tests.cs
new file mode 100644
index 0000000000..c03c5dea65
--- /dev/null
+++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.TestBase/Volo/Abp/FeatureManagement/FeatureManagementStore_Tests.cs
@@ -0,0 +1,98 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+using Shouldly;
+using Volo.Abp.Features;
+using Volo.Abp.Modularity;
+using Xunit;
+
+namespace Volo.Abp.FeatureManagement
+{
+ public abstract class FeatureManagementStore_Tests : FeatureManagementTestBase
+ where TStartupModule : IAbpModule
+ {
+ private IFeatureManagementStore FeatureManagementStore { get; set; }
+ private IFeatureValueRepository FeatureValueRepository { get; set; }
+
+ protected FeatureManagementStore_Tests()
+ {
+ FeatureManagementStore = GetRequiredService();
+ FeatureValueRepository = GetRequiredService();
+ }
+
+ [Fact]
+ public async Task GetOrNullAsync()
+ {
+ // Act
+ (await FeatureManagementStore.GetOrNullAsync(Guid.NewGuid().ToString("N"),
+ EditionFeatureValueProvider.ProviderName,
+ TestEditionIds.Regular.ToString("N"))).ShouldBeNull();
+
+ (await FeatureManagementStore.GetOrNullAsync(TestFeatureDefinitionProvider.SocialLogins,
+ EditionFeatureValueProvider.ProviderName,
+ TestEditionIds.Regular.ToString("N"))).ShouldNotBeNull();
+ }
+
+ [Fact]
+ public async Task Should_Get_Null_Where_Feature_Deleted()
+ {
+ // Arrange
+ (await FeatureManagementStore.GetOrNullAsync(TestFeatureDefinitionProvider.SocialLogins,
+ EditionFeatureValueProvider.ProviderName,
+ TestEditionIds.Regular.ToString("N"))).ShouldNotBeNull();
+
+ // Act
+ await FeatureManagementStore.DeleteAsync(TestFeatureDefinitionProvider.SocialLogins,
+ EditionFeatureValueProvider.ProviderName,
+ TestEditionIds.Regular.ToString("N"));
+
+ // Assert
+ (await FeatureManagementStore.GetOrNullAsync(TestFeatureDefinitionProvider.SocialLogins,
+ EditionFeatureValueProvider.ProviderName,
+ TestEditionIds.Regular.ToString("N"))).ShouldBeNull();
+ }
+
+ [Fact]
+ public async Task SetAsync()
+ {
+ // Arrange
+ (await FeatureValueRepository.FindAsync(TestFeatureDefinitionProvider.SocialLogins,
+ EditionFeatureValueProvider.ProviderName,
+ TestEditionIds.Regular.ToString("N"))).Value.ShouldBe(true.ToString().ToLowerInvariant());
+
+ // Act
+ await FeatureManagementStore.SetAsync(TestFeatureDefinitionProvider.SocialLogins,
+ false.ToString().ToUpperInvariant(),
+ EditionFeatureValueProvider.ProviderName,
+ TestEditionIds.Regular.ToString("N"));
+
+ // Assert
+ (await FeatureValueRepository.FindAsync(TestFeatureDefinitionProvider.SocialLogins,
+ EditionFeatureValueProvider.ProviderName,
+ TestEditionIds.Regular.ToString("N"))).Value.ShouldBe(false.ToString().ToUpperInvariant());
+ }
+
+ [Fact]
+ public async Task DeleteAsync()
+ {
+ // Arrange
+ (await FeatureValueRepository.FindAsync(TestFeatureDefinitionProvider.SocialLogins,
+ EditionFeatureValueProvider.ProviderName,
+ TestEditionIds.Regular.ToString("N"))).ShouldNotBeNull();
+
+ // Act
+ await FeatureManagementStore.DeleteAsync(TestFeatureDefinitionProvider.SocialLogins,
+ EditionFeatureValueProvider.ProviderName,
+ TestEditionIds.Regular.ToString("N"));
+
+
+ // Assert
+ (await FeatureValueRepository.FindAsync(TestFeatureDefinitionProvider.SocialLogins,
+ EditionFeatureValueProvider.ProviderName,
+ TestEditionIds.Regular.ToString("N"))).ShouldBeNull();
+
+
+ }
+ }
+}
diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.TestBase/Volo/Abp/FeatureManagement/FeatureManagementTestBaseModule.cs b/modules/feature-management/test/Volo.Abp.FeatureManagement.TestBase/Volo/Abp/FeatureManagement/FeatureManagementTestBaseModule.cs
new file mode 100644
index 0000000000..48a90400c8
--- /dev/null
+++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.TestBase/Volo/Abp/FeatureManagement/FeatureManagementTestBaseModule.cs
@@ -0,0 +1,46 @@
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.Authorization;
+using Volo.Abp.Autofac;
+using Volo.Abp.Features;
+using Volo.Abp.Modularity;
+
+namespace Volo.Abp.FeatureManagement
+{
+ [DependsOn(
+ typeof(AbpAutofacModule),
+ typeof(AbpTestBaseModule),
+ typeof(AbpAuthorizationModule),
+ typeof(AbpFeatureManagementDomainModule)
+ )]
+ public class FeatureManagementTestBaseModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ context.Services.AddAlwaysAllowAuthorization();
+ }
+
+ public override void OnApplicationInitialization(ApplicationInitializationContext context)
+ {
+ SeedTestData(context);
+ }
+
+ public override void PostConfigureServices(ServiceConfigurationContext context)
+ {
+ context.Services.Configure(options =>
+ {
+ //TODO: Any value can pass. After completing the permission unit test, look at it again.
+ options.ProviderPolicies[EditionFeatureValueProvider.ProviderName] = EditionFeatureValueProvider.ProviderName;
+ });
+ }
+
+ private static void SeedTestData(ApplicationInitializationContext context)
+ {
+ using (var scope = context.ServiceProvider.CreateScope())
+ {
+ scope.ServiceProvider
+ .GetRequiredService()
+ .Build();
+ }
+ }
+ }
+}
diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.TestBase/Volo/Abp/FeatureManagement/FeatureManagementTestData.cs b/modules/feature-management/test/Volo.Abp.FeatureManagement.TestBase/Volo/Abp/FeatureManagement/FeatureManagementTestData.cs
index e6d2273307..ede4af5f2a 100644
--- a/modules/feature-management/test/Volo.Abp.FeatureManagement.TestBase/Volo/Abp/FeatureManagement/FeatureManagementTestData.cs
+++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.TestBase/Volo/Abp/FeatureManagement/FeatureManagementTestData.cs
@@ -1,9 +1,10 @@
-using Volo.Abp.DependencyInjection;
+using System;
+using Volo.Abp.DependencyInjection;
namespace Volo.Abp.FeatureManagement
{
public class FeatureManagementTestData : ISingletonDependency
{
-
+ public Guid User1Id { get; } = Guid.NewGuid();
}
}
diff --git a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Localization/ApplicationContracts/pt-BR.json b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Localization/ApplicationContracts/pt-BR.json
index bef013c26a..d57c51ed5e 100644
--- a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Localization/ApplicationContracts/pt-BR.json
+++ b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Localization/ApplicationContracts/pt-BR.json
@@ -1,12 +1,14 @@
{
"culture": "pt-BR",
"texts": {
+ "Volo.Abp.Identity:010001": "Você não pode deletar sua própria conta!",
"Permission:IdentityManagement": "Acessos",
"Permission:RoleManagement": "Perfis",
"Permission:Create": "Criar",
"Permission:Edit": "Editar",
"Permission:Delete": "Excluir",
"Permission:ChangePermissions": "Alterar Permissões",
- "Permission:UserManagement": "Usuários"
+ "Permission:UserManagement": "Usuários",
+ "Permission:UserLookup": "Pesquisa de usuário"
}
}
\ No newline at end of file
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserStore.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserStore.cs
index e9646d38cf..bac63a0c11 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserStore.cs
+++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserStore.cs
@@ -981,7 +981,7 @@ namespace Volo.Abp.Identity
/// The value of the token.
/// The used to propagate notifications that the operation should be canceled.
/// The that represents the asynchronous operation.
- public virtual async Task SetTokenAsync([NotNull] IdentityUser user, string loginProvider, string name, string value, CancellationToken cancellationToken)
+ public virtual async Task SetTokenAsync([NotNull] IdentityUser user, string loginProvider, string name, string value, CancellationToken cancellationToken = default)
{
cancellationToken.ThrowIfCancellationRequested();
@@ -1000,7 +1000,7 @@ namespace Volo.Abp.Identity
/// The name of the token.
/// The used to propagate notifications that the operation should be canceled.
/// The that represents the asynchronous operation.
- public async Task RemoveTokenAsync(IdentityUser user, string loginProvider, string name, CancellationToken cancellationToken)
+ public async Task RemoveTokenAsync(IdentityUser user, string loginProvider, string name, CancellationToken cancellationToken = default)
{
cancellationToken.ThrowIfCancellationRequested();
@@ -1019,7 +1019,7 @@ namespace Volo.Abp.Identity
/// The name of the token.
/// The used to propagate notifications that the operation should be canceled.
/// The that represents the asynchronous operation.
- public async Task GetTokenAsync(IdentityUser user, string loginProvider, string name, CancellationToken cancellationToken)
+ public async Task GetTokenAsync(IdentityUser user, string loginProvider, string name, CancellationToken cancellationToken = default)
{
cancellationToken.ThrowIfCancellationRequested();
@@ -1030,12 +1030,12 @@ namespace Volo.Abp.Identity
return user.FindToken(loginProvider, name)?.Value;
}
- public Task SetAuthenticatorKeyAsync(IdentityUser user, string key, CancellationToken cancellationToken)
+ public Task SetAuthenticatorKeyAsync(IdentityUser user, string key, CancellationToken cancellationToken = default)
{
return SetTokenAsync(user, InternalLoginProvider, AuthenticatorKeyTokenName, key, cancellationToken);
}
- public Task GetAuthenticatorKeyAsync(IdentityUser user, CancellationToken cancellationToken)
+ public Task GetAuthenticatorKeyAsync(IdentityUser user, CancellationToken cancellationToken = default)
{
return GetTokenAsync(user, InternalLoginProvider, AuthenticatorKeyTokenName, cancellationToken);
}
@@ -1046,7 +1046,7 @@ namespace Volo.Abp.Identity
/// The user who owns the recovery code.
/// The used to propagate notifications that the operation should be canceled.
/// The number of valid recovery codes for the user..
- public virtual async Task CountCodesAsync(IdentityUser user, CancellationToken cancellationToken)
+ public virtual async Task CountCodesAsync(IdentityUser user, CancellationToken cancellationToken = default)
{
cancellationToken.ThrowIfCancellationRequested();
@@ -1068,7 +1068,7 @@ namespace Volo.Abp.Identity
/// The new recovery codes for the user.
/// The used to propagate notifications that the operation should be canceled.
/// The new recovery codes for the user.
- public virtual Task ReplaceCodesAsync(IdentityUser user, IEnumerable recoveryCodes, CancellationToken cancellationToken)
+ public virtual Task ReplaceCodesAsync(IdentityUser user, IEnumerable recoveryCodes, CancellationToken cancellationToken = default)
{
var mergedCodes = string.Join(";", recoveryCodes);
return SetTokenAsync(user, InternalLoginProvider, RecoveryCodeTokenName, mergedCodes, cancellationToken);
@@ -1082,7 +1082,7 @@ namespace Volo.Abp.Identity
/// The recovery code to use.
/// The used to propagate notifications that the operation should be canceled.
/// True if the recovery code was found for the user.
- public virtual async Task RedeemCodeAsync(IdentityUser user, string code, CancellationToken cancellationToken)
+ public virtual async Task RedeemCodeAsync(IdentityUser user, string code, CancellationToken cancellationToken = default)
{
cancellationToken.ThrowIfCancellationRequested();
diff --git a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Roles/Index.cshtml b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Roles/Index.cshtml
index 1979c87bb2..d2758f05d4 100644
--- a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Roles/Index.cshtml
+++ b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Roles/Index.cshtml
@@ -12,6 +12,11 @@
PageLayout.Content.BreadCrumb.Add(L["Menu:IdentityManagement"].Value);
PageLayout.Content.MenuItemName = IdentityMenuNames.Roles;
}
+@section styles {
+
+
+
+}
@section scripts {
diff --git a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/Index.cshtml b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/Index.cshtml
index bcef02cc72..23f7747ac8 100644
--- a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/Index.cshtml
+++ b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/Index.cshtml
@@ -15,6 +15,11 @@
PageLayout.Content.BreadCrumb.Add(L["Menu:IdentityManagement"].Value);
PageLayout.Content.MenuItemName = IdentityMenuNames.Users;
}
+@section styles {
+
+
+
+}
@section scripts {
diff --git a/modules/identity/test/Volo.Abp.Identity.Application.Tests/Volo/Abp/Identity/IdentityUserLookupAppService_Tests.cs b/modules/identity/test/Volo.Abp.Identity.Application.Tests/Volo/Abp/Identity/IdentityUserLookupAppService_Tests.cs
new file mode 100644
index 0000000000..7358238294
--- /dev/null
+++ b/modules/identity/test/Volo.Abp.Identity.Application.Tests/Volo/Abp/Identity/IdentityUserLookupAppService_Tests.cs
@@ -0,0 +1,56 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Identity;
+using Shouldly;
+using Xunit;
+
+namespace Volo.Abp.Identity
+{
+ public class IdentityUserLookupAppService_Tests : AbpIdentityApplicationTestBase
+ {
+ private readonly IIdentityUserLookupAppService _identityUserLookupAppService;
+ private readonly IIdentityUserRepository _identityUserRepository;
+ private readonly ILookupNormalizer _lookupNormalizer;
+
+ public IdentityUserLookupAppService_Tests()
+ {
+ _identityUserLookupAppService = GetRequiredService();
+ _identityUserRepository = GetRequiredService();
+ _lookupNormalizer = GetRequiredService();
+ }
+
+ [Fact]
+ public async Task FindByIdAsync()
+ {
+ var user = await _identityUserRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ (await _identityUserLookupAppService.FindByIdAsync(user.Id)).UserName.ShouldBe(user.UserName);
+ }
+
+ [Fact]
+ public async Task FindById_NotExist_Should_Return_Null()
+ {
+ var user = await _identityUserLookupAppService.FindByIdAsync(Guid.NewGuid());
+ user.ShouldBeNull();
+ }
+
+ [Fact]
+ public async Task FindByUserNameAsync()
+ {
+ var user = await _identityUserRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ (await _identityUserLookupAppService.FindByUserNameAsync(user.UserName)).UserName.ShouldBe(user.UserName);
+ }
+
+ [Fact]
+ public async Task FindByUserName_NotExist_Should_Return_Null()
+ {
+ var user = await _identityUserLookupAppService.FindByUserNameAsync(Guid.NewGuid().ToString());
+ user.ShouldBeNull();
+ }
+ }
+}
diff --git a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdenityClaimTypeManager_Tests.cs b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdenityClaimTypeManager_Tests.cs
new file mode 100644
index 0000000000..c27967e704
--- /dev/null
+++ b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdenityClaimTypeManager_Tests.cs
@@ -0,0 +1,73 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+using Shouldly;
+using Xunit;
+
+namespace Volo.Abp.Identity
+{
+ public class IdenityClaimTypeManager_Tests : AbpIdentityDomainTestBase
+ {
+ private readonly IIdentityClaimTypeRepository _identityClaimTypeRepository;
+ private readonly IdenityClaimTypeManager _claimTypeManager;
+ private readonly IdentityTestData _testData;
+
+ public IdenityClaimTypeManager_Tests()
+ {
+ _identityClaimTypeRepository = GetRequiredService();
+ _claimTypeManager = GetRequiredService();
+ _testData = GetRequiredService();
+ }
+
+ [Fact]
+ public async Task CreateAsync()
+ {
+ var claimType = await _claimTypeManager.CreateAsync(new IdentityClaimType(Guid.NewGuid(), "Phone", false,
+ false, null,
+ null, null, IdentityClaimValueType.String));
+
+ claimType.ShouldNotBeNull();
+ claimType.Name.ShouldBe("Phone");
+ }
+
+ [Fact]
+ public async Task Create_Name_Exist_Should_Exception()
+ {
+ await Assert.ThrowsAnyAsync(async () => await _claimTypeManager.CreateAsync(
+ new IdentityClaimType(
+ Guid.NewGuid(), "Age")));
+ }
+
+ [Fact]
+ public async Task UpdateAsync()
+ {
+ var ageClaim = _identityClaimTypeRepository.Find(_testData.AgeClaimId);
+ ageClaim.ShouldNotBeNull();
+ ageClaim.Description = "this is age";
+
+ var updatedAgeClaimType = await _claimTypeManager.UpdateAsync(ageClaim);
+ updatedAgeClaimType.ShouldNotBeNull();
+ updatedAgeClaimType.Description.ShouldBe("this is age");
+ }
+
+
+ [Fact]
+ public async Task Update_Name_Exist_Should_Exception()
+ {
+ await Assert.ThrowsAnyAsync(async () => await _claimTypeManager.UpdateAsync(
+ new IdentityClaimType(
+ Guid.NewGuid(), "Age")));
+ }
+
+
+ [Fact]
+ public async Task Static_IdentityClaimType_Cant_Not_Update()
+ {
+ var phoneClaim = new IdentityClaimType(Guid.NewGuid(), "Phone", true, true);
+ _identityClaimTypeRepository.Insert(phoneClaim);
+
+ await Assert.ThrowsAnyAsync(async () => await _claimTypeManager.UpdateAsync(phoneClaim));
+ }
+ }
+}
diff --git a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityRoleManager_Tests.cs b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityRoleManager_Tests.cs
new file mode 100644
index 0000000000..9cdafa10bb
--- /dev/null
+++ b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityRoleManager_Tests.cs
@@ -0,0 +1,60 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Identity;
+using Shouldly;
+using Volo.Abp.Uow;
+using Xunit;
+
+namespace Volo.Abp.Identity
+{
+ public class IdentityRoleManager_Tests : AbpIdentityDomainTestBase
+ {
+ private readonly IdentityRoleManager _identityRoleManager;
+ private readonly IIdentityRoleRepository _identityRoleRepository;
+ private readonly ILookupNormalizer _lookupNormalizer;
+ private readonly IdentityTestData _testData;
+
+ public IdentityRoleManager_Tests()
+ {
+ _identityRoleManager = GetRequiredService();
+ _identityRoleRepository = GetRequiredService();
+ _lookupNormalizer = GetRequiredService();
+ _testData = GetRequiredService();
+ }
+
+
+ [Fact]
+ public async Task GetByIdAsync()
+ {
+ var role = await _identityRoleManager.FindByIdAsync(_testData.RoleModeratorId.ToString());
+
+ role.ShouldNotBeNull();
+ role.Name.ShouldBe("moderator");
+ }
+
+ [Fact]
+ public async Task SetRoleNameAsync()
+ {
+ var role = await _identityRoleRepository.FindByNormalizedNameAsync(_lookupNormalizer.Normalize("moderator"));
+ role.ShouldNotBeNull();
+
+ (await _identityRoleManager.SetRoleNameAsync(role, "teacher")).Succeeded.ShouldBeTrue();
+
+ role.Name.ShouldBe("teacher");
+ }
+
+ [Fact]
+ public async Task DeleteAsync()
+ {
+ var role = await _identityRoleRepository.FindByNormalizedNameAsync(_lookupNormalizer.Normalize("moderator"));
+ role.ShouldNotBeNull();
+
+ await _identityRoleManager.DeleteAsync(role);
+
+ (await _identityRoleRepository.FindByNormalizedNameAsync(_lookupNormalizer.Normalize("moderator"))).ShouldBeNull();
+ }
+
+ }
+}
diff --git a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityRoleStore_Tests.cs b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityRoleStore_Tests.cs
new file mode 100644
index 0000000000..d2f674411b
--- /dev/null
+++ b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityRoleStore_Tests.cs
@@ -0,0 +1,186 @@
+using System;
+using System.Collections.Generic;
+using System.Security.Claims;
+using System.Text;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Identity;
+using Shouldly;
+using Volo.Abp.Uow;
+using Xunit;
+
+namespace Volo.Abp.Identity
+{
+ public class IdentityRoleStore_Tests : AbpIdentityDomainTestBase
+ {
+ private readonly IdentityRoleStore _identityRoleStore;
+ private readonly ILookupNormalizer _lookupNormalizer;
+ private readonly IIdentityRoleRepository _identityRoleRepository;
+ private readonly IdentityTestData _testData;
+ private readonly IUnitOfWorkManager _unitOfWorkManager;
+
+ public IdentityRoleStore_Tests()
+ {
+ _identityRoleStore = GetRequiredService();
+ _lookupNormalizer = GetRequiredService();
+ _identityRoleRepository = GetRequiredService();
+ _testData = GetRequiredService();
+ _unitOfWorkManager = GetRequiredService();
+ }
+
+ [Fact]
+ public async Task CreateAsync()
+ {
+ var roleId = Guid.NewGuid();
+ var role = new IdentityRole(roleId, "teacher");
+ (await _identityRoleStore.CreateAsync(role)).Succeeded.ShouldBeTrue();
+
+ var teacher = await _identityRoleStore.FindByIdAsync(roleId.ToString());
+
+ teacher.ShouldNotBeNull();
+ teacher.Name.ShouldBe("teacher");
+ }
+
+ [Fact]
+ public async Task UpdateAsync()
+ {
+ var role = await _identityRoleRepository.FindByNormalizedNameAsync(_lookupNormalizer.Normalize("moderator"));
+ role.ShouldNotBeNull();
+
+ role.IsDefault = true;
+ await _identityRoleStore.UpdateAsync(role);
+
+ role.IsDefault.ShouldBeTrue();
+ }
+
+
+ [Fact]
+ public async Task DeleteAsync()
+ {
+ var role = await _identityRoleRepository.FindByNormalizedNameAsync(_lookupNormalizer.Normalize("moderator"));
+ role.ShouldNotBeNull();
+
+ await _identityRoleStore.DeleteAsync(role);
+
+ (await _identityRoleStore.FindByIdAsync(_testData.RoleModeratorId.ToString())).ShouldBeNull();
+ }
+
+ [Fact]
+ public async Task GetRoleIdAsync()
+ {
+ var role = await _identityRoleRepository.FindByNormalizedNameAsync(_lookupNormalizer.Normalize("moderator"));
+ role.ShouldNotBeNull();
+
+ (await _identityRoleStore.GetRoleIdAsync(role)).ShouldBe(_testData.RoleModeratorId.ToString());
+ }
+
+ [Fact]
+ public async Task GetRoleNameAsync()
+ {
+ var role = await _identityRoleRepository.FindByNormalizedNameAsync(_lookupNormalizer.Normalize("moderator"));
+ role.ShouldNotBeNull();
+
+ (await _identityRoleStore.GetRoleNameAsync(role)).ShouldBe(role.Name);
+ }
+
+
+ [Fact]
+ public async Task SetRoleNameAsync()
+ {
+ var role = await _identityRoleRepository.FindByNormalizedNameAsync(_lookupNormalizer.Normalize("moderator"));
+ role.ShouldNotBeNull();
+
+ await _identityRoleStore.SetRoleNameAsync(role, "teacher");
+
+ role.Name.ShouldBe("teacher");
+ }
+
+ [Fact]
+ public async Task FindByIdAsync()
+ {
+ var role = await _identityRoleStore.FindByIdAsync(_testData.RoleModeratorId.ToString());
+
+ role.ShouldNotBeNull();
+ role.Name.ShouldBe("moderator");
+ }
+
+ [Fact]
+ public async Task FindByNameAsync()
+ {
+ var role = await _identityRoleStore.FindByNameAsync(_lookupNormalizer.Normalize("moderator"));
+
+ role.ShouldNotBeNull();
+ role.Name.ShouldBe("moderator");
+ }
+
+ [Fact]
+ public async Task GetNormalizedRoleNameAsync()
+ {
+ var role = await _identityRoleRepository.FindByNormalizedNameAsync(_lookupNormalizer.Normalize("moderator"));
+ role.ShouldNotBeNull();
+
+ (await _identityRoleStore.GetNormalizedRoleNameAsync(role)).ShouldBe(role.NormalizedName);
+ }
+
+ [Fact]
+ public async Task SetNormalizedRoleNameAsync()
+ {
+ var role = await _identityRoleRepository.FindByNormalizedNameAsync(_lookupNormalizer.Normalize("moderator"));
+ role.ShouldNotBeNull();
+
+ await _identityRoleStore.SetNormalizedRoleNameAsync(role, _lookupNormalizer.Normalize("teacher"));
+
+ role.NormalizedName.ShouldBe(_lookupNormalizer.Normalize("teacher"));
+ }
+
+ [Fact]
+ public async Task GetClaimsAsync()
+ {
+ using (var uow = _unitOfWorkManager.Begin())
+ {
+ var role = await _identityRoleRepository.FindByNormalizedNameAsync(_lookupNormalizer.Normalize("moderator"));
+ role.ShouldNotBeNull();
+
+ var claims = await _identityRoleStore.GetClaimsAsync(role);
+
+ claims.ShouldNotBeEmpty();
+ claims.ShouldContain(x => x.Type == "test-claim" && x.Value == "test-value");
+
+ await uow.CompleteAsync();
+ }
+ }
+
+
+ [Fact]
+ public async Task AddClaimAsync()
+ {
+ using (var uow = _unitOfWorkManager.Begin())
+ {
+ var role = await _identityRoleRepository.FindByNormalizedNameAsync(_lookupNormalizer.Normalize("moderator"));
+ role.ShouldNotBeNull();
+
+ await _identityRoleStore.AddClaimAsync(role, new Claim("my-claim", "my-value"));
+
+ role.Claims.ShouldContain(x => x.ClaimType == "my-claim" && x.ClaimValue == "my-value");
+
+ await uow.CompleteAsync();
+ }
+ }
+
+
+ [Fact]
+ public async Task RemoveClaimAsync()
+ {
+ using (var uow = _unitOfWorkManager.Begin())
+ {
+ var role = await _identityRoleRepository.FindByNormalizedNameAsync(_lookupNormalizer.Normalize("moderator"));
+ role.ShouldNotBeNull();
+
+ await _identityRoleStore.RemoveClaimAsync(role, new Claim("test-claim", "test-value"));
+
+ role.Claims.ShouldNotContain(x => x.ClaimType == "test-claim" && x.ClaimValue == "test-value");
+
+ await uow.CompleteAsync();
+ }
+ }
+ }
+}
diff --git a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityUserManager_Tests.cs b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityUserManager_Tests.cs
new file mode 100644
index 0000000000..3755342375
--- /dev/null
+++ b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityUserManager_Tests.cs
@@ -0,0 +1,87 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Identity;
+using Shouldly;
+using Volo.Abp.Uow;
+using Xunit;
+
+namespace Volo.Abp.Identity
+{
+ public class IdentityUserManager_Tests : AbpIdentityDomainTestBase
+ {
+ private readonly IdentityUserManager _identityUserManager;
+ private readonly IIdentityUserRepository _identityUserRepository;
+ private readonly IIdentityRoleRepository _identityRoleRepository;
+ private readonly ILookupNormalizer _lookupNormalizer;
+ private readonly IUnitOfWorkManager _unitOfWorkManager;
+ private readonly IdentityTestData _testData;
+
+ public IdentityUserManager_Tests()
+ {
+ _identityUserManager = GetRequiredService();
+ _identityUserRepository = GetRequiredService();
+ _identityRoleRepository = GetRequiredService();
+ _lookupNormalizer = GetRequiredService();
+ _testData = GetRequiredService();
+ _unitOfWorkManager = GetRequiredService();
+ }
+
+ [Fact]
+ public async Task GetByIdAsync()
+ {
+ var user = await _identityUserManager.GetByIdAsync(_testData.UserJohnId);
+
+ user.ShouldNotBeNull();
+ user.UserName.ShouldBe("john.nash");
+ }
+
+ [Fact]
+ public async Task SetRolesAsync()
+ {
+ using (var uow = _unitOfWorkManager.Begin())
+ {
+ var user = await _identityUserRepository.FindByNormalizedUserNameAsync(
+ _lookupNormalizer.Normalize("david"));
+ user.ShouldNotBeNull();
+
+ var identityResult = await _identityUserManager.SetRolesAsync(user, new List()
+ {
+ "moderator",
+ });
+
+ identityResult.Succeeded.ShouldBeTrue();
+ user.Roles.ShouldContain(x => x.RoleId == _testData.RoleModeratorId);
+
+ await uow.CompleteAsync();
+ }
+ }
+
+ [Fact]
+ public async Task SetRoles_Should_Remove_Other_Roles()
+ {
+ using (var uow = _unitOfWorkManager.Begin())
+ {
+ var roleSupporter =
+ await _identityRoleRepository.FindByNormalizedNameAsync(_lookupNormalizer.Normalize("supporter"));
+ roleSupporter.ShouldNotBeNull();
+
+ var user = await _identityUserRepository.FindByNormalizedUserNameAsync(
+ _lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ var identityResult = await _identityUserManager.SetRolesAsync(user, new List()
+ {
+ "admin",
+ });
+
+ identityResult.Succeeded.ShouldBeTrue();
+ user.Roles.ShouldNotContain(x => x.RoleId == _testData.RoleModeratorId);
+ user.Roles.ShouldNotContain(x => x.RoleId == roleSupporter.Id);
+
+ await uow.CompleteAsync();
+ }
+ }
+ }
+}
diff --git a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityUserStore_Tests.cs b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityUserStore_Tests.cs
new file mode 100644
index 0000000000..0e4c1e8bc6
--- /dev/null
+++ b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityUserStore_Tests.cs
@@ -0,0 +1,777 @@
+using System;
+using System.Collections.Generic;
+using System.Security.Claims;
+using System.Text;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Identity;
+using Shouldly;
+using Volo.Abp.Guids;
+using Volo.Abp.Uow;
+using Xunit;
+
+namespace Volo.Abp.Identity
+{
+ public class IdentityUserStore_Tests : AbpIdentityDomainTestBase
+ {
+ private readonly IdentityUserStore _identityUserStore;
+ private readonly ILookupNormalizer _lookupNormalizer;
+ private readonly IIdentityUserRepository _userRepository;
+ private readonly IdentityTestData _testData;
+ private readonly IUnitOfWorkManager _unitOfWorkManager;
+
+ public IdentityUserStore_Tests()
+ {
+ _identityUserStore = GetRequiredService();
+ _lookupNormalizer = GetRequiredService();
+ _userRepository = GetRequiredService();
+ _testData = GetRequiredService();
+ _unitOfWorkManager = GetRequiredService();
+ }
+
+ [Fact]
+ public async Task GetUserIdAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ (await _identityUserStore.GetUserIdAsync(user)).ShouldBe(user.Id.ToString());
+ }
+
+
+ [Fact]
+ public async Task GetUserNameAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ (await _identityUserStore.GetUserNameAsync(user)).ShouldBe(user.UserName);
+ }
+
+ [Fact]
+ public async Task SetUserNameAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ await _identityUserStore.SetUserNameAsync(user, "bob.lee");
+ user.UserName.ShouldBe("bob.lee");
+ //user.NormalizedUserName.ShouldBe(_lookupNormalizer.Normalize("bob.lee"));
+ }
+
+
+ [Fact]
+ public async Task GetNormalizedUserNameAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ (await _identityUserStore.GetNormalizedUserNameAsync(user)).ShouldBe(user.NormalizedUserName);
+ }
+
+ [Fact]
+ public async Task SetNormalizedUserNameAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ await _identityUserStore.SetNormalizedUserNameAsync(user, _lookupNormalizer.Normalize("bob.lee"));
+
+ user.NormalizedUserName.ShouldBe(_lookupNormalizer.Normalize("bob.lee"));
+ }
+
+ [Fact]
+ public async Task CreateAsync()
+ {
+ var userId = Guid.NewGuid();
+ var user = new IdentityUser(userId, "bob.lee", "bob.lee@abp.io");
+
+ await _identityUserStore.CreateAsync(user);
+
+ var bobLee = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("bob.lee"));
+ bobLee.ShouldNotBeNull();
+ bobLee.UserName.ShouldBe("bob.lee");
+ bobLee.Email.ShouldBe("bob.lee@abp.io");
+ }
+
+ [Fact]
+ public async Task UpdateAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ user.Name = "lee";
+ (await _identityUserStore.UpdateAsync(user)).Succeeded.ShouldBeTrue();
+
+ (await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"))).Name
+ .ShouldBe("lee");
+ }
+
+ [Fact]
+ public async Task Update_Concurrency()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ (await _identityUserStore.UpdateAsync(user)).Succeeded.ShouldBeTrue();
+
+ user.ConcurrencyStamp = Guid.NewGuid().ToString();
+ var identityResult = await _identityUserStore.UpdateAsync(user);
+
+ identityResult.Succeeded.ShouldBeFalse();
+ identityResult.Errors.ShouldContain(x =>
+ x.Code == nameof(IdentityErrorDescriber.ConcurrencyFailure));
+
+ // && x.Description == Resources.PasswordMismatch);
+ }
+
+
+ [Fact]
+ public async Task DeleteAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ (await _identityUserStore.DeleteAsync(user)).Succeeded.ShouldBeTrue();
+
+ (await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"))).ShouldBeNull();
+ }
+
+
+ [Fact]
+ public async Task FindByIdAsync()
+ {
+ var user = await _identityUserStore.FindByIdAsync(_testData.UserJohnId.ToString());
+
+ user.ShouldNotBeNull();
+ user.UserName.ShouldBe("john.nash");
+ }
+
+
+ [Fact]
+ public async Task FindByNameAsync()
+ {
+ var user = await _identityUserStore.FindByNameAsync(_lookupNormalizer.Normalize("john.nash"));
+
+ user.ShouldNotBeNull();
+ user.UserName.ShouldBe("john.nash");
+ }
+
+
+ [Fact]
+ public async Task SetPasswordHashAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+ user.PasswordHash.ShouldBeNull();
+
+ await _identityUserStore.SetPasswordHashAsync(user, "P@ssw0rd");
+ user.PasswordHash.ShouldBe("P@ssw0rd");
+ }
+
+
+ [Fact]
+ public async Task GetPasswordHashAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+ await _identityUserStore.SetPasswordHashAsync(user, "P@ssw0rd");
+
+ (await _identityUserStore.GetPasswordHashAsync(user)).ShouldBe("P@ssw0rd");
+ }
+
+
+ [Fact]
+ public async Task HasPasswordAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+ (await _identityUserStore.HasPasswordAsync(user)).ShouldBeFalse();
+
+ await _identityUserStore.SetPasswordHashAsync(user, "P@ssw0rd");
+ (await _identityUserStore.HasPasswordAsync(user)).ShouldBeTrue();
+ }
+
+
+ [Fact]
+ public async Task AddToRoleAsync()
+ {
+ using (var uow = _unitOfWorkManager.Begin())
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("david"));
+ user.ShouldNotBeNull();
+ user.Roles.ShouldBeEmpty();
+
+ await _identityUserStore.AddToRoleAsync(user, _lookupNormalizer.Normalize("moderator"));
+
+ user.Roles.ShouldContain(x => x.RoleId == _testData.RoleModeratorId);
+
+ await uow.CompleteAsync();
+ }
+ }
+
+
+ [Fact]
+ public async Task RemoveFromRoleAsync()
+ {
+ using (var uow = _unitOfWorkManager.Begin())
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+ user.Roles.ShouldContain(x => x.RoleId == _testData.RoleModeratorId);
+
+ await _identityUserStore.RemoveFromRoleAsync(user, _lookupNormalizer.Normalize("moderator"));
+
+ user.Roles.ShouldNotContain(x => x.RoleId == _testData.RoleModeratorId);
+
+ await uow.CompleteAsync();
+ }
+ }
+
+
+ [Fact]
+ public async Task GetRolesAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ var roleNames = await _identityUserStore.GetRolesAsync(user);
+ roleNames.ShouldNotBeEmpty();
+ roleNames.ShouldContain(x => x == "moderator");
+ roleNames.ShouldContain(x => x == "supporter");
+ }
+
+ [Fact]
+ public async Task IsInRoleAsync()
+ {
+ using (var uow = _unitOfWorkManager.Begin())
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ (await _identityUserStore.IsInRoleAsync(user, _lookupNormalizer.Normalize("moderator"))).ShouldBeTrue();
+ (await _identityUserStore.IsInRoleAsync(user, _lookupNormalizer.Normalize("moderatorNotExist"))).ShouldBeFalse();
+
+ await uow.CompleteAsync();
+ }
+ }
+
+
+ [Fact]
+ public async Task GetClaimsAsync()
+ {
+ using (var uow = _unitOfWorkManager.Begin())
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ var claims = await _identityUserStore.GetClaimsAsync(user);
+ claims.ShouldNotBeEmpty();
+ claims.ShouldContain(x => x.Type == "TestClaimType" && x.Value == "42");
+
+ await uow.CompleteAsync();
+ }
+ }
+
+ [Fact]
+ public async Task AddClaimsAsync()
+ {
+ using (var uow = _unitOfWorkManager.Begin())
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ await _identityUserStore.AddClaimsAsync(user, new List()
+ {
+ new Claim("MyClaimType", "MyClaimValue")
+ });
+
+ user.Claims.ShouldContain(x => x.ClaimType == "MyClaimType" && x.ClaimValue == "MyClaimValue");
+
+ await uow.CompleteAsync();
+ }
+ }
+
+
+ [Fact]
+ public async Task ReplaceClaimAsync()
+ {
+ using (var uow = _unitOfWorkManager.Begin())
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ await _identityUserStore.ReplaceClaimAsync(user, new Claim("TestClaimType", "42"), new Claim("MyClaimType", "MyClaimValue"));
+
+ user.Claims.ShouldNotContain(x => x.ClaimType == "TestClaimType" && x.ClaimValue == "42");
+ user.Claims.ShouldContain(x => x.ClaimType == "MyClaimType" && x.ClaimValue == "MyClaimValue");
+
+ await uow.CompleteAsync();
+ }
+ }
+
+
+ [Fact]
+ public async Task RemoveClaimsAsync()
+ {
+ using (var uow = _unitOfWorkManager.Begin())
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ await _identityUserStore.RemoveClaimsAsync(user, new List()
+ {
+ new Claim("TestClaimType", "42")
+ });
+
+ user.Claims.ShouldNotContain(x => x.ClaimType == "TestClaimType" && x.ClaimValue == "42");
+
+ await uow.CompleteAsync();
+ }
+ }
+
+
+ [Fact]
+ public async Task AddLoginAsync()
+ {
+ using (var uow = _unitOfWorkManager.Begin())
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+ user.Logins.ShouldNotContain(x => x.LoginProvider == "facebook" && x.ProviderKey == "john");
+
+ await _identityUserStore.AddLoginAsync(user, new UserLoginInfo("facebook", "john", "John Nash"));
+
+ user.Logins.ShouldContain(x => x.LoginProvider == "facebook" && x.ProviderKey == "john");
+
+ await uow.CompleteAsync();
+ }
+ }
+
+ [Fact]
+ public async Task RemoveLoginAsync()
+ {
+ using (var uow = _unitOfWorkManager.Begin())
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+ user.Logins.ShouldContain(x => x.LoginProvider == "github" && x.ProviderKey == "john");
+
+ await _identityUserStore.RemoveLoginAsync(user, "github", "john");
+
+ user.Logins.ShouldNotContain(x => x.LoginProvider == "github" && x.ProviderKey == "john");
+
+ await uow.CompleteAsync();
+ }
+ }
+
+
+ [Fact]
+ public async Task GetLoginsAsync()
+ {
+ using (var uow = _unitOfWorkManager.Begin())
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ var logins = await _identityUserStore.GetLoginsAsync(user);
+
+ logins.ShouldNotBeNull();
+ logins.ShouldContain(x => x.LoginProvider == "github" && x.ProviderKey == "john");
+ logins.ShouldContain(x => x.LoginProvider == "twitter" && x.ProviderKey == "johnx");
+
+ await uow.CompleteAsync();
+ }
+ }
+
+
+ [Fact]
+ public async Task FindByLoginAsync()
+ {
+ var user = await _identityUserStore.FindByLoginAsync("github", "john");
+ user.ShouldNotBeNull();
+ user.UserName.ShouldBe("john.nash");
+ }
+
+
+ [Fact]
+ public async Task GetEmailConfirmedAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ (await _identityUserStore.GetEmailConfirmedAsync(user)).ShouldBe(user.EmailConfirmed);
+ }
+
+
+ [Fact]
+ public async Task SetEmailConfirmedAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+ var emailConfirmed = user.EmailConfirmed;
+
+ await _identityUserStore.SetEmailConfirmedAsync(user, !emailConfirmed);
+
+ user.EmailConfirmed.ShouldBe(!emailConfirmed);
+ }
+
+ [Fact]
+ public async Task SetEmailAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ await _identityUserStore.SetEmailAsync(user, "john.nash.kobe@abp.io");
+
+ user.Email.ShouldBe("john.nash.kobe@abp.io");
+ //user.NormalizedEmail.ShouldBe(_lookupNormalizer.Normalize("john.nash.kobe@abp.io"));
+ }
+
+ [Fact]
+ public async Task GetEmailAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ (await _identityUserStore.GetEmailAsync(user)).ShouldBe(user.Email);
+ }
+
+ [Fact]
+ public async Task GetNormalizedEmailAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ (await _identityUserStore.GetNormalizedEmailAsync(user)).ShouldBe(user.NormalizedEmail);
+ }
+
+ [Fact]
+ public async Task SetNormalizedEmailAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ await _identityUserStore.SetNormalizedEmailAsync(user, _lookupNormalizer.Normalize("john.nash.kobe@abp.io"));
+
+ user.NormalizedEmail.ShouldBe(_lookupNormalizer.Normalize("john.nash.kobe@abp.io"));
+ }
+
+ [Fact]
+ public async Task FindByEmailAsync()
+ {
+ var user = await _identityUserStore.FindByEmailAsync(_lookupNormalizer.Normalize("john.nash@abp.io"));
+
+ user.ShouldNotBeNull();
+ user.Email.ShouldBe("john.nash@abp.io");
+ }
+
+ [Fact]
+ public async Task GetLockoutEndDateAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ (await _identityUserStore.GetLockoutEndDateAsync(user)).ShouldBe(user.LockoutEnd);
+ }
+
+ [Fact]
+ public async Task SetLockoutEndDateAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ await _identityUserStore.SetLockoutEndDateAsync(user, DateTimeOffset.Parse("01/01/2019"));
+
+ user.LockoutEnd.ShouldBe(DateTimeOffset.Parse("01/01/2019"));
+ }
+
+
+ [Fact]
+ public async Task IncrementAccessFailedCountAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+ var count = user.AccessFailedCount;
+
+ await _identityUserStore.IncrementAccessFailedCountAsync(user);
+
+ user.AccessFailedCount.ShouldBe(count + 1);
+ }
+
+ [Fact]
+ public async Task ResetAccessFailedCountAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ await _identityUserStore.ResetAccessFailedCountAsync(user);
+
+ user.AccessFailedCount.ShouldBe(0);
+ }
+
+ [Fact]
+ public async Task GetAccessFailedCountAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ (await _identityUserStore.GetAccessFailedCountAsync(user)).ShouldBe(user.AccessFailedCount);
+ }
+
+ [Fact]
+ public async Task GetLockoutEnabledAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ (await _identityUserStore.GetLockoutEnabledAsync(user)).ShouldBe(user.LockoutEnabled);
+ }
+
+ [Fact]
+ public async Task SetLockoutEnabledAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+ var lockoutEnabled = user.LockoutEnabled;
+
+ await _identityUserStore.SetLockoutEnabledAsync(user, !lockoutEnabled);
+
+ user.LockoutEnabled.ShouldBe(!lockoutEnabled);
+ }
+
+
+ [Fact]
+ public async Task SetPhoneNumberAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ await _identityUserStore.SetPhoneNumberAsync(user, "13800138000");
+
+ user.PhoneNumber.ShouldBe("13800138000");
+ }
+
+
+ [Fact]
+ public async Task GetPhoneNumberAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ (await _identityUserStore.GetPhoneNumberAsync(user)).ShouldBe(user.PhoneNumber);
+ }
+
+ [Fact]
+ public async Task GetPhoneNumberConfirmedAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ (await _identityUserStore.GetPhoneNumberConfirmedAsync(user)).ShouldBe(user.PhoneNumberConfirmed);
+ }
+
+
+ [Fact]
+ public async Task SetPhoneNumberConfirmedAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+ var phoneNumberConfirmed = user.PhoneNumberConfirmed;
+
+ await _identityUserStore.SetPhoneNumberConfirmedAsync(user, !phoneNumberConfirmed);
+
+ user.PhoneNumberConfirmed.ShouldBe(!phoneNumberConfirmed);
+ }
+
+
+ [Fact]
+ public async Task SetSecurityStampAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+ var securityStamp = Guid.NewGuid().ToString();
+
+ await _identityUserStore.SetSecurityStampAsync(user, securityStamp);
+
+ user.SecurityStamp.ShouldBe(securityStamp);
+ }
+
+ [Fact]
+ public async Task GetSecurityStampAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ (await _identityUserStore.GetSecurityStampAsync(user)).ShouldBe(user.SecurityStamp);
+ }
+
+
+ [Fact]
+ public async Task SetTwoFactorEnabledAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+ var twoFactorEnabled = user.TwoFactorEnabled;
+
+ await _identityUserStore.SetTwoFactorEnabledAsync(user, !twoFactorEnabled);
+
+ user.TwoFactorEnabled.ShouldBe(!twoFactorEnabled);
+ }
+
+
+ [Fact]
+ public async Task GetTwoFactorEnabledAsync()
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ (await _identityUserStore.GetTwoFactorEnabledAsync(user)).ShouldBe(user.TwoFactorEnabled);
+ }
+
+ [Fact]
+ public async Task GetUsersForClaimAsync()
+ {
+ var user = await _identityUserStore.GetUsersForClaimAsync(new Claim("TestClaimType", "42"));
+ user.ShouldNotBeNull();
+ user.ShouldNotBeEmpty();
+ user.ShouldContain(x => x.UserName == "john.nash");
+ }
+
+ [Fact]
+ public async Task GetUsersInRoleAsync()
+ {
+ var user = await _identityUserStore.GetUsersInRoleAsync(_lookupNormalizer.Normalize("moderator"));
+ user.ShouldNotBeNull();
+ user.ShouldContain(x => x.UserName == "john.nash");
+ }
+
+ [Fact]
+ public async Task SetTokenAsync()
+ {
+ using (var uow = _unitOfWorkManager.Begin())
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ await _identityUserStore.SetTokenAsync(user, "test-provider", "test-name", "123123");
+
+ user.Tokens.ShouldNotBeEmpty();
+ user.Tokens.ShouldContain(x => x.LoginProvider == "test-provider" && x.Name == "test-name" && x.Value == "123123");
+
+ await uow.CompleteAsync();
+ }
+ }
+
+ [Fact]
+ public async Task RemoveTokenAsync()
+ {
+ using (var uow = _unitOfWorkManager.Begin())
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ await _identityUserStore.RemoveTokenAsync(user, "test-provider", "test-name");
+
+ user.Tokens.ShouldNotContain(x => x.LoginProvider == "test-provider" && x.Name == "test-name" && x.Value == "123123");
+
+ await uow.CompleteAsync();
+ }
+ }
+
+ [Fact]
+ public async Task GetTokenAsync()
+ {
+ using (var uow = _unitOfWorkManager.Begin())
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ (await _identityUserStore.GetTokenAsync(user, "test-provider", "test-name")).ShouldBe("test-value");
+
+ await uow.CompleteAsync();
+ }
+ }
+
+ [Fact]
+ public async Task SetAuthenticatorKeyAsync()
+ {
+ using (var uow = _unitOfWorkManager.Begin())
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ await _identityUserStore.SetAuthenticatorKeyAsync(user, "testKey");
+
+ user.Tokens.ShouldContain(x => x.LoginProvider == "[AspNetUserStore]" && x.Name == "AuthenticatorKey" && x.Value == "testKey");
+
+ await uow.CompleteAsync();
+ }
+ }
+
+ [Fact]
+ public async Task GetAuthenticatorKeyAsync()
+ {
+ using (var uow = _unitOfWorkManager.Begin())
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+ await _identityUserStore.SetAuthenticatorKeyAsync(user, "testKey");
+
+ (await _identityUserStore.GetAuthenticatorKeyAsync(user)).ShouldBe("testKey");
+
+ await uow.CompleteAsync();
+ }
+
+ }
+
+ [Fact]
+ public async Task CountCodesAsync()
+ {
+ using (var uow = _unitOfWorkManager.Begin())
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+ await _identityUserStore.SetTokenAsync(user, "[AspNetUserStore]", "RecoveryCodes", "testKey;testKey2");
+
+ (await _identityUserStore.CountCodesAsync(user)).ShouldBe(2);
+
+ await uow.CompleteAsync();
+ }
+ }
+
+ [Fact]
+ public async Task ReplaceCodesAsync()
+ {
+ using (var uow = _unitOfWorkManager.Begin())
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+
+ await _identityUserStore.ReplaceCodesAsync(user, new List()
+ {
+ "testKey",
+ "testKey2"
+ });
+
+ user.Tokens.ShouldContain(x => x.LoginProvider == "[AspNetUserStore]" && x.Name == "RecoveryCodes" && x.Value == "testKey;testKey2");
+
+ await uow.CompleteAsync();
+ }
+ }
+
+ [Fact]
+ public async Task RedeemCodeAsync()
+ {
+ using (var uow = _unitOfWorkManager.Begin())
+ {
+ var user = await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.Normalize("john.nash"));
+ user.ShouldNotBeNull();
+ await _identityUserStore.SetTokenAsync(user, "[AspNetUserStore]", "RecoveryCodes", "testKey;testKey2");
+
+ (await _identityUserStore.RedeemCodeAsync(user, "testKey")).ShouldBeTrue();
+
+ await uow.CompleteAsync();
+ }
+ }
+ }
+}
diff --git a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/UserRoleFinder_Tests.cs b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/UserRoleFinder_Tests.cs
new file mode 100644
index 0000000000..ef06949500
--- /dev/null
+++ b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/UserRoleFinder_Tests.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+using Shouldly;
+using Xunit;
+
+namespace Volo.Abp.Identity
+{
+ public class UserRoleFinder_Tests : AbpIdentityDomainTestBase
+ {
+ private readonly IUserRoleFinder _userRoleFinder;
+ private readonly IdentityTestData _testData;
+
+ public UserRoleFinder_Tests()
+ {
+ _userRoleFinder = GetRequiredService();
+ _testData = GetRequiredService();
+ }
+
+ [Fact]
+ public async Task GetRolesAsync()
+ {
+ var roleNames = await _userRoleFinder.GetRolesAsync(_testData.UserJohnId);
+ roleNames.ShouldNotBeEmpty();
+ roleNames.ShouldContain(x => x == "moderator");
+ roleNames.ShouldContain(x => x == "supporter");
+ }
+ }
+}
diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo/Abp/IdentityServer/Clients/ClientStore_Tests.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.Domain.Tests/Volo/Abp/IdentityServer/Clients/ClientStore_Tests.cs
similarity index 100%
rename from modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo/Abp/IdentityServer/Clients/ClientStore_Tests.cs
rename to modules/identityserver/test/Volo.Abp.IdentityServer.Domain.Tests/Volo/Abp/IdentityServer/Clients/ClientStore_Tests.cs
diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo/Abp/IdentityServer/Clients/IdentityResourceStore_Tests.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.Domain.Tests/Volo/Abp/IdentityServer/Clients/IdentityResourceStore_Tests.cs
similarity index 100%
rename from modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo/Abp/IdentityServer/Clients/IdentityResourceStore_Tests.cs
rename to modules/identityserver/test/Volo.Abp.IdentityServer.Domain.Tests/Volo/Abp/IdentityServer/Clients/IdentityResourceStore_Tests.cs
diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo/Abp/IdentityServer/Clients/PersistentGrant_Tests.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.Domain.Tests/Volo/Abp/IdentityServer/Clients/PersistentGrant_Tests.cs
similarity index 100%
rename from modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo/Abp/IdentityServer/Clients/PersistentGrant_Tests.cs
rename to modules/identityserver/test/Volo.Abp.IdentityServer.Domain.Tests/Volo/Abp/IdentityServer/Clients/PersistentGrant_Tests.cs
diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo/Abp/IdentityServer/PersistentGrantRepository_Tests.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo/Abp/IdentityServer/PersistentGrantRepository_Tests.cs
new file mode 100644
index 0000000000..79bab1d23a
--- /dev/null
+++ b/modules/identityserver/test/Volo.Abp.IdentityServer.EntityFrameworkCore.Tests/Volo/Abp/IdentityServer/PersistentGrantRepository_Tests.cs
@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Volo.Abp.IdentityServer
+{
+ public class PersistentGrantRepository_Tests : PersistentGrantRepository_Tests
+ {
+
+ }
+}
diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/PersistentGrantRepository_Tests.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/PersistentGrantRepository_Tests.cs
new file mode 100644
index 0000000000..fd2763dc6c
--- /dev/null
+++ b/modules/identityserver/test/Volo.Abp.IdentityServer.MongoDB.Tests/Volo/Abp/IdentityServer/PersistentGrantRepository_Tests.cs
@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Volo.Abp.IdentityServer
+{
+ public class PersistentGrantRepository_Tests : PersistentGrantRepository_Tests
+ {
+
+ }
+}
diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo/Abp/IdentityServer/AbpIdentityServerTestDataBuilder.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo/Abp/IdentityServer/AbpIdentityServerTestDataBuilder.cs
index 0c18e85350..016820af49 100644
--- a/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo/Abp/IdentityServer/AbpIdentityServerTestDataBuilder.cs
+++ b/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo/Abp/IdentityServer/AbpIdentityServerTestDataBuilder.cs
@@ -1,6 +1,8 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Guids;
+using Volo.Abp.Identity;
using Volo.Abp.IdentityServer.ApiResources;
using Volo.Abp.IdentityServer.Clients;
using Volo.Abp.IdentityServer.Grants;
@@ -14,7 +16,8 @@ namespace Volo.Abp.IdentityServer
private readonly IApiResourceRepository _apiResourceRepository;
private readonly IClientRepository _clientRepository;
private readonly IIdentityResourceRepository _identityResourceRepository;
- //private readonly IPersistentGrantRepository _persistentGrantRepository;
+ private readonly IIdentityClaimTypeRepository _identityClaimTypeRepository;
+ private readonly IPersistentGrantRepository _persistentGrantRepository;
private readonly AbpIdentityServerTestData _testData;
public AbpIdentityServerTestDataBuilder(
@@ -22,15 +25,17 @@ namespace Volo.Abp.IdentityServer
IApiResourceRepository apiResourceRepository,
IClientRepository clientRepository,
IIdentityResourceRepository identityResourceRepository,
- AbpIdentityServerTestData testData
- /*IPersistentGrantRepository persistentGrantRepository*/)
+ IIdentityClaimTypeRepository identityClaimTypeRepository,
+ AbpIdentityServerTestData testData,
+ IPersistentGrantRepository persistentGrantRepository)
{
_testData = testData;
_guidGenerator = guidGenerator;
_apiResourceRepository = apiResourceRepository;
_clientRepository = clientRepository;
_identityResourceRepository = identityResourceRepository;
- //_persistentGrantRepository = persistentGrantRepository;
+ _identityClaimTypeRepository = identityClaimTypeRepository;
+ _persistentGrantRepository = persistentGrantRepository;
}
public void Build()
@@ -39,13 +44,30 @@ namespace Volo.Abp.IdentityServer
AddIdentityResources();
AddApiResources();
AddClients();
+ AddClaimTypes();
}
private void AddPersistedGrants()
{
- //_persistentGrantRepository.Insert(new PersistedGrant(_guidGenerator.Create()));
- //_persistentGrantRepository.Insert(new PersistedGrant(_guidGenerator.Create()));
- //_persistentGrantRepository.Insert(new PersistedGrant(_guidGenerator.Create()));
+ _persistentGrantRepository.Insert(new PersistedGrant(_guidGenerator.Create())
+ {
+
+ Key = "PersistedGrantKey1",
+ SubjectId = "PersistedGrantSubjectId1",
+ ClientId = "PersistedGrantClientId1",
+ Type = "PersistedGrantType1"
+ });
+ _persistentGrantRepository.Insert(new PersistedGrant(_guidGenerator.Create())
+ {
+ Key = "PersistedGrantKey2",
+ SubjectId = "PersistedGrantSubjectId2"
+ });
+
+ _persistentGrantRepository.Insert(new PersistedGrant(_guidGenerator.Create())
+ {
+ Key = "PersistedGrantKey3",
+ SubjectId = "PersistedGrantSubjectId3"
+ });
}
private void AddIdentityResources()
@@ -105,5 +127,12 @@ namespace Volo.Abp.IdentityServer
_clientRepository.Insert(new Client(_guidGenerator.Create(), "ClientId2"));
_clientRepository.Insert(new Client(_guidGenerator.Create(), "ClientId3"));
}
+
+ private void AddClaimTypes()
+ {
+ var ageClaim = new IdentityClaimType(Guid.NewGuid(), "Age", false, false, null, null, null,
+ IdentityClaimValueType.Int);
+ _identityClaimTypeRepository.Insert(ageClaim);
+ }
}
}
diff --git a/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo/Abp/IdentityServer/PersistentGrantRepository_Tests.cs b/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo/Abp/IdentityServer/PersistentGrantRepository_Tests.cs
new file mode 100644
index 0000000000..20f6674515
--- /dev/null
+++ b/modules/identityserver/test/Volo.Abp.IdentityServer.TestBase/Volo/Abp/IdentityServer/PersistentGrantRepository_Tests.cs
@@ -0,0 +1,62 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+using Shouldly;
+using Volo.Abp.IdentityServer.Grants;
+using Volo.Abp.Modularity;
+using Xunit;
+
+namespace Volo.Abp.IdentityServer
+{
+ public abstract class PersistentGrantRepository_Tests : AbpIdentityServerTestBase
+ where TStartupModule : IAbpModule
+ {
+ private readonly IPersistentGrantRepository _persistentGrantRepository;
+
+ protected PersistentGrantRepository_Tests()
+ {
+ _persistentGrantRepository = GetRequiredService();
+ }
+
+ [Fact]
+ public async Task FindByKeyAsync()
+ {
+ (await _persistentGrantRepository.FindByKeyAsync("PersistedGrantKey1")).ShouldNotBeNull();
+ }
+
+ [Fact]
+ public async Task GetListBySubjectIdAsync()
+ {
+ var persistedGrants = await _persistentGrantRepository.GetListBySubjectIdAsync("PersistedGrantSubjectId1");
+ persistedGrants.ShouldNotBeEmpty();
+ persistedGrants.ShouldContain(x => x.Key == "PersistedGrantKey1");
+ }
+
+ [Fact]
+ public async Task DeleteBySubjectIdAndClientId()
+ {
+ await _persistentGrantRepository.DeleteAsync("PersistedGrantSubjectId1", "PersistedGrantClientId1");
+
+ var persistedGrants = await _persistentGrantRepository.GetListAsync();
+ persistedGrants.ShouldNotBeEmpty();
+ persistedGrants.ShouldNotContain(x =>
+ x.Key == "PersistedGrantKey1" && x.SubjectId == "PersistedGrantSubjectId1" &&
+ x.ClientId == "PersistedGrantClientId1");
+ }
+
+ [Fact]
+ public async Task DeleteBySubjectIdAndClientIdAndType()
+ {
+ await _persistentGrantRepository.DeleteAsync("PersistedGrantSubjectId1", "PersistedGrantClientId1",
+ "PersistedGrantClientId1");
+
+ var persistedGrants = await _persistentGrantRepository.GetListAsync();
+ persistedGrants.ShouldNotBeEmpty();
+ persistedGrants.ShouldNotContain(x =>
+ x.Key == "PersistedGrantKey1" && x.SubjectId == "PersistedGrantSubjectId1" &&
+ x.ClientId == "PersistedGrantClientId1" && x.Type == "PersistedGrantClientId1");
+
+ }
+ }
+}
diff --git a/modules/permission-management/Volo.Abp.PermissionManagement.sln b/modules/permission-management/Volo.Abp.PermissionManagement.sln
index e0fdd1e0ec..5812918a3c 100644
--- a/modules/permission-management/Volo.Abp.PermissionManagement.sln
+++ b/modules/permission-management/Volo.Abp.PermissionManagement.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.27428.1
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.28729.10
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{B559B878-38F7-49CC-BC06-43A32D68C1A7}"
EndProject
@@ -29,9 +29,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.PermissionManageme
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.PermissionManagement.MongoDB.Tests", "test\Volo.Abp.PermissionManagement.MongoDB.Tests\Volo.Abp.PermissionManagement.MongoDB.Tests.csproj", "{AFA65E08-1F17-4BBE-96A6-80F3CFE22A75}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.PermissionManagement.HttpApi", "src\Volo.Abp.PermissionManagement.HttpApi\Volo.Abp.PermissionManagement.HttpApi.csproj", "{9E0B517E-F02E-436F-9695-7CF12795D34C}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.PermissionManagement.HttpApi", "src\Volo.Abp.PermissionManagement.HttpApi\Volo.Abp.PermissionManagement.HttpApi.csproj", "{9E0B517E-F02E-436F-9695-7CF12795D34C}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.PermissionManagement.HttpApi.Client", "src\Volo.Abp.PermissionManagement.HttpApi.Client\Volo.Abp.PermissionManagement.HttpApi.Client.csproj", "{1CD80519-9431-48DB-B0EA-291A73FF9F49}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.PermissionManagement.HttpApi.Client", "src\Volo.Abp.PermissionManagement.HttpApi.Client\Volo.Abp.PermissionManagement.HttpApi.Client.csproj", "{1CD80519-9431-48DB-B0EA-291A73FF9F49}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.PermissionManagement.Application.Tests", "test\Volo.Abp.PermissionManagement.Application.Tests\Volo.Abp.PermissionManagement.Application.Tests.csproj", "{A0F72F5F-3713-4E06-ADB7-15ADFDCB79B1}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -91,6 +93,10 @@ Global
{1CD80519-9431-48DB-B0EA-291A73FF9F49}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1CD80519-9431-48DB-B0EA-291A73FF9F49}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1CD80519-9431-48DB-B0EA-291A73FF9F49}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A0F72F5F-3713-4E06-ADB7-15ADFDCB79B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A0F72F5F-3713-4E06-ADB7-15ADFDCB79B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A0F72F5F-3713-4E06-ADB7-15ADFDCB79B1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A0F72F5F-3713-4E06-ADB7-15ADFDCB79B1}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -109,6 +115,7 @@ Global
{AFA65E08-1F17-4BBE-96A6-80F3CFE22A75} = {63DA4A89-5908-4F37-B7E6-525AEEF20C77}
{9E0B517E-F02E-436F-9695-7CF12795D34C} = {B559B878-38F7-49CC-BC06-43A32D68C1A7}
{1CD80519-9431-48DB-B0EA-291A73FF9F49} = {B559B878-38F7-49CC-BC06-43A32D68C1A7}
+ {A0F72F5F-3713-4E06-ADB7-15ADFDCB79B1} = {63DA4A89-5908-4F37-B7E6-525AEEF20C77}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {8FC7DF78-5E2D-489F-9D43-147D2ABAA112}
diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Localization/Resources/AbpPermissionManagement/pt-BR.json b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Localization/Resources/AbpPermissionManagement/pt-BR.json
index 358cf16281..93adef2871 100644
--- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Localization/Resources/AbpPermissionManagement/pt-BR.json
+++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Localization/Resources/AbpPermissionManagement/pt-BR.json
@@ -1,4 +1,3 @@
-
{
"culture": "pt-BR",
"texts": {
@@ -6,4 +5,4 @@
"OnlyProviderPermissons": "Apenas este provedor",
"All": "Todos"
}
-}
+}
\ No newline at end of file
diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/PermissionManagementModal.cshtml b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/PermissionManagementModal.cshtml
index d1081f2f84..e95e56abe9 100644
--- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/PermissionManagementModal.cshtml
+++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/PermissionManagementModal.cshtml
@@ -8,19 +8,21 @@
@{
Layout = null;
}
+
-
+
-
+
@for (var i = 0; i < Model.Groups.Count; i++)
{
+
+
@for (var j = 0; j < Model.Groups[i].Permissions.Count; j++)
{
}
+
}
@@ -38,4 +41,4 @@
-
\ No newline at end of file
+
diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/permission-management-modal.css b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/permission-management-modal.css
new file mode 100644
index 0000000000..d1f8731614
--- /dev/null
+++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/permission-management-modal.css
@@ -0,0 +1,12 @@
+.custom-scroll-container > .col-4 {
+ overflow: hidden;
+ overflow-y: auto;
+ max-height: 499px;
+ display: block;
+ position: relative;
+ z-index: 123;
+}
+
+.custom-scroll-content {
+ max-height: 440px;
+}
diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/permission-management-modal.js b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/permission-management-modal.js
index f32b00720e..cde7903a2e 100644
--- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/permission-management-modal.js
+++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/permission-management-modal.js
@@ -49,6 +49,15 @@
});
});
});
+
+ $(function () {
+ $(".custom-scroll-content").mCustomScrollbar({
+ theme: "minimal-dark"
+ });
+ $(".custom-scroll-container > .col-4").mCustomScrollbar({
+ theme: "minimal-dark"
+ });
+ });
};
};
})(jQuery);
\ No newline at end of file
diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.Application.Tests/Volo.Abp.PermissionManagement.Application.Tests.csproj b/modules/permission-management/test/Volo.Abp.PermissionManagement.Application.Tests/Volo.Abp.PermissionManagement.Application.Tests.csproj
new file mode 100644
index 0000000000..7e817abf24
--- /dev/null
+++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.Application.Tests/Volo.Abp.PermissionManagement.Application.Tests.csproj
@@ -0,0 +1,18 @@
+
+
+
+ netcoreapp2.2
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.Application.Tests/Volo/Abp/PermissionManagement/AbpPermissionManagementApplicationTestBase.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.Application.Tests/Volo/Abp/PermissionManagement/AbpPermissionManagementApplicationTestBase.cs
new file mode 100644
index 0000000000..7102b8f851
--- /dev/null
+++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.Application.Tests/Volo/Abp/PermissionManagement/AbpPermissionManagementApplicationTestBase.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using Microsoft.Extensions.DependencyInjection;
+using NSubstitute;
+using Volo.Abp.Users;
+
+namespace Volo.Abp.PermissionManagement
+{
+ public class AbpPermissionManagementApplicationTestBase : PermissionManagementTestBase
+ {
+ protected Guid? CurrentUserId { get; set; }
+
+ protected AbpPermissionManagementApplicationTestBase()
+ {
+ CurrentUserId = Guid.NewGuid();
+ }
+ protected override void AfterAddApplication(IServiceCollection services)
+ {
+ var currentUser = Substitute.For();
+ //currentUser.Id.Returns(ci => CurrentUserId);
+ currentUser.IsAuthenticated.Returns(true);
+
+ services.AddSingleton(currentUser);
+ }
+ }
+}
diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.Application.Tests/Volo/Abp/PermissionManagement/AbpPermissionManagementApplicationTestModule.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.Application.Tests/Volo/Abp/PermissionManagement/AbpPermissionManagementApplicationTestModule.cs
new file mode 100644
index 0000000000..2bbfb07acd
--- /dev/null
+++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.Application.Tests/Volo/Abp/PermissionManagement/AbpPermissionManagementApplicationTestModule.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.Authorization.Permissions;
+using Volo.Abp.Modularity;
+
+namespace Volo.Abp.PermissionManagement
+{
+ [DependsOn(
+ typeof(AbpPermissionManagementApplicationModule),
+ typeof(AbpPermissionManagementTestModule)
+ )]
+ public class AbpPermissionManagementApplicationTestModule : AbpModule
+ {
+ public override void ConfigureServices(ServiceConfigurationContext context)
+ {
+ context.Services.AddAlwaysAllowAuthorization();
+
+ context.Services.Configure(options =>
+ {
+ options.ProviderPolicies[UserPermissionValueProvider.ProviderName] = UserPermissionValueProvider.ProviderName;
+ options.ProviderPolicies["Test"] = "Test";
+ options.ManagementProviders.Add
@Model.Groups[i].DisplayName
--
+