diff --git a/Web/static/css/style.css b/Web/static/css/style.css index deafd2ad..42783603 100644 --- a/Web/static/css/style.css +++ b/Web/static/css/style.css @@ -2216,6 +2216,17 @@ a.poll-retract-vote { border-radius: 1px; } +.client_app > img { + top: 3px; + position: relative; +} + +.client_app.client_app_titlebar > img { + top: 2px; + position: relative; + filter: invert(100%) sepia(100%) saturate(800%) hue-rotate(2deg) brightness(130%) contrast(50.1%); +} + @keyframes appearing { from { opacity: 0; diff --git a/Web/static/img/app_icons/.DS_Store b/Web/static/img/app_icons/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..ba9eb77734a18b98acbd514e3b5268127d0bba9a GIT binary patch literal 6148 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 B&eH$@ literal 0 HcmV?d00001 diff --git a/Web/static/img/app_icons_mini/android.svg b/Web/static/img/app_icons_mini/android.svg new file mode 100755 index 00000000..d674718f --- /dev/null +++ b/Web/static/img/app_icons_mini/android.svg @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Web/static/img/app_icons_mini/api.svg b/Web/static/img/app_icons_mini/api.svg new file mode 100755 index 00000000..09b9f1b5 --- /dev/null +++ b/Web/static/img/app_icons_mini/api.svg @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + diff --git a/Web/static/img/app_icons_mini/iphone.svg b/Web/static/img/app_icons_mini/iphone.svg new file mode 100755 index 00000000..906837c7 --- /dev/null +++ b/Web/static/img/app_icons_mini/iphone.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + diff --git a/Web/static/img/app_icons_mini/mobile.svg b/Web/static/img/app_icons_mini/mobile.svg new file mode 100755 index 00000000..88d6417f --- /dev/null +++ b/Web/static/img/app_icons_mini/mobile.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + diff --git a/Web/static/js/al_wall.js b/Web/static/js/al_wall.js index bee1bb1f..fb3f8520 100644 --- a/Web/static/js/al_wall.js +++ b/Web/static/js/al_wall.js @@ -122,3 +122,70 @@ u("#write > form").on("keydown", function(event) { if(event.ctrlKey && event.keyCode === 13) this.submit(); }); + +var tooltipClientTemplate = Handlebars.compile(` + + + + + + +
+ + + + {{app_tr}}: {{name}} +
+ Подробнее +
+`); + +var tooltipClientNoInfoTemplate = Handlebars.compile(` + + + + +
+ + {{app_tr}}: {{name}} +
+
+`); + +tippy(".client_app", { + theme: "light vk", + content: "⌛", + allowHTML: true, + interactive: true, + interactiveDebounce: 500, + + onCreate: async function(that) { + that._resolvedClient = null; + }, + + onShow: async function(that) { + let client_tag = that.reference.dataset.appTag; + let client_name = that.reference.dataset.appName; + let client_url = that.reference.dataset.appUrl; + let client_img = that.reference.dataset.appImg; + + if(client_name != "") { + let res = { + 'name': client_name, + 'url': client_url, + 'img': client_img, + 'app_tr': tr("app") + }; + + that.setContent(tooltipClientTemplate(res)); + } else { + let res = { + 'name': client_tag, + 'app_tr': tr("app") + }; + + that.setContent(tooltipClientNoInfoTemplate(res)); + } + } +}); + diff --git a/data/clients.xml b/data/clients.xml new file mode 100644 index 00000000..44373e40 --- /dev/null +++ b/data/clients.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/install/sqls/00036-platforms.sql b/install/sqls/00036-platforms.sql new file mode 100755 index 00000000..67c9340e --- /dev/null +++ b/install/sqls/00036-platforms.sql @@ -0,0 +1,8 @@ +ALTER TABLE `profiles` + ADD COLUMN `client_name` TEXT NULL DEFAULT NULL AFTER `backdrop_2`; + +ALTER TABLE `posts` + ADD COLUMN `api_source_name` TEXT NULL DEFAULT NULL AFTER `anonymous`; + +ALTER TABLE `api_tokens` + ADD COLUMN `platform` TEXT NULL DEFAULT NULL AFTER `deleted`;