68 |
69 |
70 |
71 |
Значки проекта OpenYellow
72 |
Если вы - автор проекта, который находится в ТОП-500, то можете помочь порталу OpenYellow, использовав наш
73 | значок (badge) в своем репозитории.
74 | Он будет всегда показывать актуальную позицию вашего проекта в рейтинге, а при нажатии - перенаправлять на
75 | страницу ТОП-500 с фокусировкой на необходимой строке таблицы
76 |
77 |
78 |
79 |
Добавить такой значок к себе очень просто - достаточно найти необходимый репозиторий в рейтинговой таблице и скопировать
81 | текст Markdown разметки в самой последней колонке.
82 | Этот текст, будучи вставленным в Readme файл, станет отображаться в нем как svg значок (как на картинке
83 | выше)
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
О значках, оставшихся со времен Notion
97 |
Если вы используете значки, которые были получены еще из таблицы на странице Notion
98 | (openyellow.notion.site), то их необходимо заменить на новые. Это нужно для устранения устаревших ссылок на
99 | более уже несуществующие ресурсы
100 |
101 |
102 |
103 |
104 |
115 |
116 |
117 |
118 |
--------------------------------------------------------------------------------
/web/blocks/sidebar.html:
--------------------------------------------------------------------------------
1 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/web/copy.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/web/css/404.css:
--------------------------------------------------------------------------------
1 | #home {
2 | clip-path: url(#cache);
3 | }
4 |
5 | #red {
6 | fill: none;
7 | opacity: 0.15;
8 | stroke: whitesmoke;
9 | stroke-width: 12;
10 | stroke-miterlimit: 10;
11 | animation: show 4s;
12 | animation-fill-mode: forwards;
13 | animation-iteration-count: infinite;
14 | animation-timing-function: ease-in-out;
15 | }
16 |
17 | #blue {
18 | fill: none;
19 | opacity: 0.15;
20 | stroke: black;
21 | stroke-width: 12;
22 | stroke-miterlimit: 10;
23 | animation: show 4s;
24 | animation-fill-mode: forwards;
25 | animation-iteration-count: infinite;
26 | animation-timing-function: ease-in-out;
27 | }
28 |
29 | #light-blue {
30 | fill: none;
31 | opacity: 0.15;
32 | stroke: black;
33 | stroke-width: 6;
34 | stroke-miterlimit: 10;
35 | stroke-dasharray: 200;
36 | stroke-dashoffset: 800;
37 | animation: draw 4s;
38 | animation-fill-mode: forwards;
39 | animation-iteration-count: infinite;
40 | animation-timing-function: ease-in-out;
41 | }
42 |
43 | @keyframes draw {
44 | to {
45 | stroke-dashoffset: 0;
46 | }
47 | }
48 |
49 | @keyframes show {
50 | 0% {
51 | opacity: 0.15;
52 | }
53 |
54 | 50% {
55 | opacity: 0.2;
56 | }
57 |
58 | 100% {
59 | opacity: 0.15;
60 | }
61 | }
62 |
63 | .svg-back {
64 |
65 | position: fixed;
66 | top: 0;
67 | left: 0;
68 | z-index: 1;
69 | width: 100%;
70 | height: 100vh;
71 | }
72 |
73 |
74 | h1 {
75 | font-size: 96px;
76 | }
77 |
78 | .s404 {
79 | margin: auto;
80 | text-align: center;
81 | margin-top: 40vh;
82 | }
--------------------------------------------------------------------------------
/web/css/font-awesome.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
4 | */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
5 |
6 | .fa-vk:before{content:"\f189"}
7 | .fa-telegram:before{content:"\f2c6"}
--------------------------------------------------------------------------------
/web/css/open-iconic-bootstrap.min.css:
--------------------------------------------------------------------------------
1 | @font-face{font-family:Icons;src:url(https://athenaeum.digital/fonts/open-iconic.eot);src:url(https://athenaeum.digital/fonts/open-iconic.eot?#iconic-sm) format('embedded-opentype'),url(https://athenaeum.digital/fonts/open-iconic.woff) format('woff'),url(https://athenaeum.digital/fonts/open-iconic.ttf) format('truetype'),url(https://athenaeum.digital/fonts/open-iconic.otf) format('opentype'),url(https://athenaeum.digital/fonts/open-iconic.svg#iconic-sm) format('svg');font-weight:400;font-style:normal;font-display: swap;}.oi{position:relative;top:1px;display:inline-block;speak:none;font-family:Icons;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.oi:empty:before{width:1em;text-align:center;box-sizing:content-box}.oi.oi-align-center:before{text-align:center}.oi.oi-align-left:before{text-align:left}.oi.oi-align-right:before{text-align:right}.oi-align-center:before{content:'\e004'}.oi-align-left:before{content:'\e005'}.oi-align-right:before{content:'\e006'}.oi-bar-chart:before{content:'\e018'}.oi-book:before{content:'\e021'}.oi-box:before{content:'\e023'}.oi-check:before{content:'\e033'}.oi-code:before{content:'\e040'}.oi-document:before{content:'\e052'}.oi-graph:before{content:'\e070'}.oi-home:before{content:'\e078'}.oi-image:before{content:'\e079'}.oi-info:before{content:'\e07c'}.oi-justify-center:before{content:'\e07e'}.oi-justify-left:before{content:'\e07f'}.oi-justify-right:before{content:'\e080'}.oi-list:before{content:'\e088'}.oi-loop-circular:before{content:'\e08c'}.oi-loop:before{content:'\e08e'}.oi-magnifying-glass:before{content:'\e08f'}.oi-person:before{content:'\e0a5'}.oi-plus:before{content:'\e0aa'}.oi-project:before{content:'\e0ad'}.oi-script:before{content:'\e0b9'}.oi-tag:before{content:'\e0c5'}.oi-text:before{content:'\e0ca'}.oi-timer:before{content:'\e0cd'}.oi-x:before{content:'\e0db'}.oi-link-broken:before{content:'\e085'}.oi-link-intact:before{content:'\e086'}
--------------------------------------------------------------------------------
/web/css/popup.css:
--------------------------------------------------------------------------------
1 | @keyframes hei {
2 | 0% {
3 | height: 0;
4 | }
5 |
6 | 100% {
7 | height: 450px;
8 | }
9 | }
10 |
11 | .modalw {
12 | position: fixed;
13 | top: 0;
14 | right: 0;
15 | left: 0;
16 | bottom: 0;
17 | max-width: 256px;
18 | min-width: 100%;
19 | background: rgba(0, 0, 0, 0.5);
20 | z-index: 1050;
21 | -webkit-transition: height 400ms ease-in;
22 | -moz-transition: height 400ms ease-in;
23 | transition: opacity 400ms ease-in;
24 | pointer-events: none;
25 | opacity: 0;
26 | }
27 |
28 | .containerpop {
29 | background-color: White;
30 | text-align: center;
31 | padding: auto;
32 | height: 450px;
33 | overflow-x: hidden;
34 | z-index: 18;
35 | box-shadow: rgba(0, 0, 0, 0.18) 0px 2px 4px;
36 | opacity: 1;
37 | border-radius: 10px;
38 | position: fixed;
39 | bottom: -10px;
40 | right: 50%;
41 | left: 50%;
42 | transform: translate(-50%);
43 | width: 500px;
44 | max-width: 99%;
45 | max-height: 80%;
46 |
47 |
48 | }
49 |
50 | .starthei {
51 | animation: hei 0.5s forwards;
52 | }
53 |
54 | .modalw:target {
55 |
56 | display: block;
57 | pointer-events: auto;
58 | overflow-y: auto;
59 | opacity: 1;
60 | }
61 |
62 | /* свойства для кнопки "Закрыть" */
63 | .close {
64 | float: right;
65 | font-family: sans-serif;
66 | font-size: 24px;
67 | font-weight: 700;
68 | line-height: 1;
69 | color: #000;
70 | text-shadow: 0 1px 0 #fff;
71 | opacity: .5;
72 | text-decoration: none;
73 | margin-right: 3px;
74 | margin-top: 2px;
75 | }
76 |
77 | /* свойства для кнопки "Закрыть" при нахождении её в фокусе или наведении */
78 | .close:focus,
79 | .close:hover {
80 | color: #000;
81 | text-decoration: none;
82 | cursor: pointer;
83 | opacity: .75;
84 | }
85 |
86 | .ok {
87 | font-size: 40px;
88 | }
--------------------------------------------------------------------------------
/web/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/favicon.ico
--------------------------------------------------------------------------------
/web/fonts/bookantiqua.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/fonts/bookantiqua.ttf
--------------------------------------------------------------------------------
/web/fonts/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/fonts/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/web/fonts/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/fonts/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/web/fonts/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/fonts/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/web/fonts/open-iconic.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/fonts/open-iconic.eot
--------------------------------------------------------------------------------
/web/fonts/open-iconic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/fonts/open-iconic.ttf
--------------------------------------------------------------------------------
/web/fonts/open-iconic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/fonts/open-iconic.woff
--------------------------------------------------------------------------------
/web/grid.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
OpenYellow - агрегатор open-source проектов для 1С:Предприятие
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
Топ-500 репозиториев
75 | По числу звезд
76 |
77 |
78 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
90 |
91 |
92 |
93 | by
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
119 |
120 |
121 |
122 |
123 |
--------------------------------------------------------------------------------
/web/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
OpenYellow - агрегатор open-source проектов для 1С:Предприятие
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
27 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
Добро пожаловать на OpenYellow
75 |
Агрегатор open-source проектов для 1С:Предприятие. Здесь собрано множество инструментов с открытым
76 | исходным кодом, которые были созданы "желтым" сообществом. Информация о них собирается на основе данных
77 | публичных репозиториев GitHub
78 |
79 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
Лучшие репозитории
90 |
Топ-500 лучших репозиториев GitHub за все время - самые известные и популярные открытые инструменты для
91 | 1С и OneScript
92 |
Перейти
93 |
94 |
95 |
96 |
Последние созданные
97 |
Самые свежие репозитории, найденные агрегатором. Они ждут своих первых
98 | пользователей!
99 |
Перейти
100 |
101 |
102 |
103 |
Последние обновленные
104 |
Последние репозитории, проявляющие активность на GitHub - "живые" проекты, поддерживаемые
105 | контрибьюторами
106 |
Перейти
107 |
108 |
109 |
110 |
111 |
112 |
113 |
Вклад 1С сообщества на GitHub:
114 |
115 |
116 |
1000
117 |
Всего репозиториев
118 |
119 |
120 |
5000
121 |
Заработано звезд
122 |
123 |
124 |
500
125 |
Авторов проектов
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
Следите за обновлениями в Телеграм!
134 |
Не пропустите ни единого нового проекта и релиза open-source сообщества 1С! Информация об обновлениях
135 | репозиториев, ежедневные и еженедельные топы и новости проекта в нашем Телеграм-канале
136 |
137 |
В Телеграм!
139 |
140 |
141 |
142 |
143 |
144 | OpenYellow Project by Bayselonarrend, 2024
145 |
146 |
147 |
148 |
149 |
160 |
161 |
162 |
163 |
--------------------------------------------------------------------------------
/web/js/app.js:
--------------------------------------------------------------------------------
1 | import { getDataByUrl } from './xhttp.js?v4';
2 | import { setPreloaderEvent } from './effects.js?v4';
3 |
4 | const content = document.getElementById('content');
5 | const sidebar = document.getElementById('sidebar');
6 |
7 | window.addEventListener('pageshow', function (event) {
8 |
9 | if (event.currentTarget.origin !== "https://oyw.neocities.org") // Compliant
10 | return;
11 |
12 | if (event.persisted) {
13 | setOpacity();
14 | }
15 |
16 | });
17 |
18 | standartOnLoad();
19 |
20 | function standartOnLoad() {
21 |
22 | if ('serviceWorker' in navigator && navigator.serviceWorker.controller != null && navigator.serviceWorker.controller.state != 'activated') {
23 | navigator.serviceWorker.register('/sw.js').then(
24 | function (registration) {
25 | console.log('ServiceWorker registration successful with scope: ', registration.scope);
26 |
27 | },
28 | function (err) {
29 | console.log('ServiceWorker registration failed: ', err);
30 | });
31 |
32 | }
33 |
34 | function setOpacity() {
35 | content.style.opacity = "1";
36 | }
37 |
38 |
39 | getDataByUrl('/blocks/sidebar.html', false).then(function (response) {
40 |
41 | if (sidebar != undefined) {
42 | sidebar.innerHTML = response;
43 | sidebar.style.display = 'flex';
44 | localStorage.setItem('navigation', sidebar.innerHTML);
45 | setMenuEvent();
46 | }
47 |
48 | setPreloaderEvent();
49 | setOpacity();
50 |
51 | });
52 | }
53 |
54 |
55 | function setMenuEvent(){
56 |
57 | let menu = document.getElementById('menu');
58 | let menubutton = document.getElementById('menubutton');
59 | let menulogo = document.getElementById('menulogo');
60 |
61 | if (menu != undefined && menubutton != undefined){
62 |
63 | menu.style.display = "none";
64 | menubutton.onclick = function (event) {
65 |
66 | if(menu.style.display == "none")
67 | {
68 |
69 | menulogo.classList.remove("fa-cubes-stacked");
70 | menulogo.classList.add("fa-xmark");
71 |
72 | menu.style.display = "flex";
73 | setTimeout(function () {menu.style.opacity = "1"}, 10);
74 |
75 |
76 | }
77 | else
78 | {
79 |
80 | menulogo.classList.remove("fa-xmark");
81 | menulogo.classList.add("fa-cubes-stacked");
82 |
83 | menu.style.opacity = "0";
84 | setTimeout(function () {menu.style.display = "none"}, 300);
85 |
86 | }
87 |
88 |
89 | };
90 |
91 | }
92 |
93 | }
94 |
--------------------------------------------------------------------------------
/web/js/authors.js:
--------------------------------------------------------------------------------
1 | import { getDataByUrl } from './xhttp.js?v4';
2 |
3 | let list = document.getElementById('authors');
4 | let counter = 1;
5 | let current;
6 | let grid;
7 | let place;
8 | let info;
9 | let title;
10 | let stars;
11 | let position;
12 | let pic;
13 | let repos;
14 |
15 | getDataByUrl("./data/authors.json", true).then(function (response) {
16 |
17 | if (list != undefined) {
18 |
19 | response.forEach(function (item) {
20 |
21 | current = document.createElement('a');
22 | current.setAttribute('class', 'author');
23 | current.setAttribute('href', item.url);
24 |
25 | grid = document.createElement('div');
26 | grid.setAttribute('class', 'row');
27 |
28 | place = document.createElement('div');
29 | place.setAttribute('class', 'col-4');
30 | place.setAttribute('style', 'border-right: 1px solid #333333; text-align: center; ');
31 |
32 | position = document.createElement('h2');
33 | position.textContent = '#' + counter;
34 | position.setAttribute('style', 'margin-top: 7px');
35 |
36 | pic = document.createElement('img');
37 | pic.setAttribute('src', item.pic);
38 | pic.setAttribute('style', 'width: 32px; border-radius: 45px; ');
39 |
40 | info = document.createElement('div');
41 | info.setAttribute('class', 'col');
42 | info.setAttribute('style', 'margin-top: 7px');
43 |
44 | title = document.createElement('p');
45 | title.textContent = item.name;
46 |
47 | stars = document.createElement('small');
48 | stars.textContent = '⭐' + item.stars;
49 |
50 | repos = document.createElement('small');
51 | repos.textContent = '📒' + item.repos;
52 | repos.setAttribute('style', 'margin-left: 7px');
53 |
54 | place.appendChild(position);
55 | place.appendChild(pic);
56 | info.appendChild(title);
57 | info.appendChild(stars);
58 | info.appendChild(repos);
59 | grid.appendChild(place);
60 | grid.appendChild(info);
61 | current.appendChild(grid);
62 | list.appendChild(current);
63 |
64 | counter++;
65 |
66 | });
67 |
68 | }
69 |
70 | });
--------------------------------------------------------------------------------
/web/js/effects.js:
--------------------------------------------------------------------------------
1 | function setPreloaderEvent() {
2 |
3 | let links = document.getElementsByTagName("a");
4 |
5 |
6 | for (var i = 0; i < links.length; i++) {
7 |
8 | if (links[i].href == document.URL) {
9 | links[i].classList.add('active');
10 | }
11 |
12 | if (!links[i].onclick) {
13 | links[i].onclick = function (event) {
14 | try {
15 | event.preventDefault();
16 | if (this != undefined
17 | && this.href != undefined
18 | && this.baseURI != this.href
19 | && this.href.search('#') == -1
20 | && this.target != "_blank") {
21 |
22 |
23 | let href = this.href;
24 |
25 |
26 | for (var i = 0; i < links.length; i++) {
27 |
28 | if (links[i] != this) {
29 | links[i].classList.remove('active');
30 | }
31 |
32 | }
33 |
34 | event.stopPropagation();
35 | showPreloader();
36 |
37 | setTimeout(function () {
38 |
39 | window.location.href = href;
40 |
41 | }, 600);
42 |
43 | }
44 | else {
45 | window.location.href = this.href;
46 | }
47 | }
48 |
49 | catch {
50 | window.location.href = this.href;
51 | }
52 |
53 | };
54 | }
55 | }
56 |
57 | }
58 |
59 |
60 | function showPreloader() {
61 | const content = document.getElementById('content');
62 |
63 | content.style.opacity = "0";
64 |
65 | const menu = document.getElementById('menu');
66 | let menulogo = document.getElementById('menulogo');
67 |
68 | if(menu != undefined){
69 |
70 | menulogo.classList.remove("fa-xmark");
71 | menulogo.classList.add("fa-cubes-stacked");
72 | menu.style.opacity = "0";
73 | }
74 |
75 | }
76 |
77 | function showMessage(text, style) {
78 |
79 | let content = document.getElementById('content');
80 | let b = document.createElement('div');
81 | b.innerHTML = text;
82 | b.classList.add('alert');
83 | b.classList.add('alert-' + style);
84 | b.classList.add('message');
85 |
86 | document.body.append(b);
87 |
88 | setTimeout(() => {
89 | b.style.display = 'none';
90 | }, "6100");
91 |
92 |
93 | }
94 |
95 | export { setPreloaderEvent }
96 | export { showMessage }
--------------------------------------------------------------------------------
/web/js/index.js:
--------------------------------------------------------------------------------
1 | import { getDataByUrl } from './xhttp.js?v4';
2 |
3 | let totalcounter = document.getElementById('totalcounter');
4 | let starscounter = document.getElementById('starscounter');
5 | let authorscounter = document.getElementById('authorscounter');
6 |
7 | getDataByUrl("./data/counters.json", true).then(function (response) {
8 |
9 | if (totalcounter != undefined) {
10 | totalcounter.textContent = response["totalcounter"];
11 | }
12 |
13 | if (starscounter != undefined) {
14 | starscounter.textContent = response["starscounter"];
15 | }
16 |
17 | if (authorscounter != undefined) {
18 | authorscounter.textContent = response["authorscounter"];
19 | }
20 |
21 | });
--------------------------------------------------------------------------------
/web/js/socials.js:
--------------------------------------------------------------------------------
1 | import { getDataByUrl } from './xhttp.js?v4';
2 | import { getCookie } from './xhttp.js?v4';
3 | import { uuidv4 } from './xhttp.js?v4';
4 | import { ping } from './xhttp.js?v4';
5 |
6 | var params = (new URL(document.location)).searchParams;
7 | var from = params.get("from");
8 |
9 | function generateLinks(vk = true, tg = true, existing = ""){
10 | returnSession(existing).then(function(success)
11 | {
12 | let session = success;
13 |
14 | if(from){ session += '_' + from;}
15 |
16 | if (tg){ telegramLogin(session);}
17 | if (vk){ vkLogin(session);}
18 | });
19 |
20 | }
21 |
22 | function telegramLogin(session){
23 |
24 | let element = document.getElementById('telegram-login');
25 |
26 | if (!element)
27 | {
28 | setTimeout(telegramLogin, 100);
29 | return;
30 | }
31 |
32 | element.href = ('https://t.me/aioniotisbot?start=' + session);
33 |
34 | }
35 |
36 |
37 | function vkLogin(session){
38 |
39 | let element = document.getElementById('vk-login');
40 |
41 | if (!element)
42 | {
43 | setTimeout(telegramLogin, 100);
44 | return;
45 | }
46 |
47 | element.href = ('https://oauth.vk.com/authorize?client_id=51654824&display=page&redirect_uri=https://api.athenaeum.digital/node/bot/vk_login?uuid=' + session + '&response_type=code&v=5.131');
48 |
49 | }
50 |
51 |
52 | function returnSession(existing = ""){
53 |
54 | return new Promise(function(resolve, reject) {
55 |
56 | if (existing != ""){
57 | resolve(existing);
58 | return;
59 | }
60 |
61 | let d = new Date();
62 | let uuid = uuidv4();
63 | let session;
64 | let expires;
65 |
66 | ping('https://api.athenaeum.digital/node/bot/site_session?cookie=' + uuid).then(function(success)
67 | {
68 |
69 | if(success)
70 | {
71 |
72 | d.setTime(d.getTime() + (30 * 24 * 60 * 60 * 1000)); // 30 дней
73 |
74 | expires = "expires=" + d.toUTCString();
75 | document.cookie = "uuid=" + uuid + ";" + expires + ";max-age:31536000;path=/";
76 | session = getCookie("uuid");
77 |
78 | }
79 |
80 | else
81 | {
82 | session = returnSession();
83 | }
84 |
85 | resolve(session);
86 |
87 | });
88 | });
89 | }
90 |
91 | export{generateLinks}
--------------------------------------------------------------------------------
/web/js/xhttp.js:
--------------------------------------------------------------------------------
1 | function getDataByUrl(url, isJson) {
2 |
3 | return new Promise(function (resolve, reject) {
4 |
5 | var xhr = new XMLHttpRequest();
6 | xhr.open('GET', url, true);
7 | xhr.setRequestHeader('Cache-Control', 'no-cache, no-store, max-age=0');
8 | xhr.setRequestHeader('Expires', 'Thu, 1 Jan 1970 00:00:00 GMT');
9 | xhr.setRequestHeader('Pragma', 'no-cache');
10 |
11 | xhr.onload = function () {
12 | try {
13 | if (xhr.status === 200) {
14 | var response = (isJson) ? JSON.parse(xhr.responseText) : xhr.responseText;
15 | resolve(response);
16 | }
17 |
18 | else {
19 | resolve(xhr.status);
20 | }
21 |
22 | }
23 |
24 | catch {
25 | var response = (isJson) ? xhr.responseText : JSON.parse(xhr.responseText);
26 | resolve(response);
27 | };
28 | };
29 |
30 | xhr.onerror = function () {
31 | resolve(xhr.status);
32 | };
33 |
34 | xhr.send();
35 |
36 | });
37 | }
38 |
39 |
40 | function ping(url) {
41 |
42 | return new Promise(function (resolve, reject) {
43 |
44 | var xhr = new XMLHttpRequest();
45 | xhr.open('GET', url, true);
46 | xhr.setRequestHeader('Athenaeum-Source', document.location.pathname);
47 |
48 | xhr.onload = function () {
49 |
50 | if (xhr.status === 200) {
51 | resolve(true);
52 | }
53 | else {
54 | resolve(false);
55 | }
56 | };
57 |
58 | xhr.onerror = function () {
59 | resolve(false);
60 | };
61 |
62 | xhr.send();
63 | });
64 | }
65 |
66 | export { getDataByUrl };
67 | export { ping };
68 |
--------------------------------------------------------------------------------
/web/js/ya_metrica.js:
--------------------------------------------------------------------------------
1 | (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
2 | m[i].l=1*new Date();
3 | for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
4 | k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
5 | (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
6 |
7 | ym(94124757, "init", {
8 | clickmap:true,
9 | trackLinks:true,
10 | accurateTrackBounce:true,
11 | webvisor:true
12 | });
--------------------------------------------------------------------------------
/web/neocities.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/neocities.png
--------------------------------------------------------------------------------
/web/not_found.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
Not Found
7 |
8 |
9 |
10 |
Page Not Found
11 |
The requested page was not found.
12 |
13 |
14 |
--------------------------------------------------------------------------------
/web/pwa/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/pwa/favicon.ico
--------------------------------------------------------------------------------
/web/pwa/icons/120x120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/pwa/icons/120x120.png
--------------------------------------------------------------------------------
/web/pwa/icons/128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/pwa/icons/128x128.png
--------------------------------------------------------------------------------
/web/pwa/icons/144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/pwa/icons/144x144.png
--------------------------------------------------------------------------------
/web/pwa/icons/152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/pwa/icons/152x152.png
--------------------------------------------------------------------------------
/web/pwa/icons/16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/pwa/icons/16x16.png
--------------------------------------------------------------------------------
/web/pwa/icons/180x180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/pwa/icons/180x180.png
--------------------------------------------------------------------------------
/web/pwa/icons/192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/pwa/icons/192x192.png
--------------------------------------------------------------------------------
/web/pwa/icons/32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/pwa/icons/32x32.png
--------------------------------------------------------------------------------
/web/pwa/icons/384x384.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/pwa/icons/384x384.png
--------------------------------------------------------------------------------
/web/pwa/icons/512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/pwa/icons/512x512.png
--------------------------------------------------------------------------------
/web/pwa/icons/72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/pwa/icons/72x72.png
--------------------------------------------------------------------------------
/web/pwa/icons/96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/pwa/icons/96x96.png
--------------------------------------------------------------------------------
/web/pwa/manifest.json:
--------------------------------------------------------------------------------
1 | {"name":"OpenYellow","short_name":"OpenYellow","description":"Агрегатор open-source проектов для 1С:Предприятие","theme_color":"#212121","background_color":"#212121","display":"standalone","orientation":"portrait","scope":"/","start_url":"/","icons":[{"src":"icons/16x16.png","sizes":"16x16","type":"image/png"},{"src":"icons/32x32.png","sizes":"32x32","type":"image/png"},{"src":"icons/72x72.png","sizes":"72x72","type":"image/png"},{"src":"icons/96x96.png","sizes":"96x96","type":"image/png"},{"src":"icons/120x120.png","sizes":"120x120","type":"image/png"},{"src":"icons/128x128.png","sizes":"128x128","type":"image/png"},{"src":"icons/144x144.png","sizes":"144x144","type":"image/png"},{"src":"icons/152x152.png","sizes":"152x152","type":"image/png"},{"src":"icons/180x180.png","sizes":"180x180","type":"image/png"},{"src":"icons/192x192.png","sizes":"192x192","type":"image/png"},{"src":"icons/384x384.png","sizes":"384x384","type":"image/png"},{"src":"icons/512x512.png","sizes":"512x512","type":"image/png"},{"src":"icons/512x512.png","sizes":"512x512","type":"image/png","purpose":"maskable"}]}
--------------------------------------------------------------------------------
/web/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow: /offline
3 | Disallow: /404
--------------------------------------------------------------------------------
/web/static/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/static/1.png
--------------------------------------------------------------------------------
/web/static/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/static/2.png
--------------------------------------------------------------------------------
/web/static/badges.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/static/badges.png
--------------------------------------------------------------------------------
/web/static/cover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/static/cover.png
--------------------------------------------------------------------------------
/web/static/down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/static/down.png
--------------------------------------------------------------------------------
/web/static/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/static/logo.png
--------------------------------------------------------------------------------
/web/static/logo_side.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/static/logo_side.png
--------------------------------------------------------------------------------
/web/static/openbsl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/static/openbsl.png
--------------------------------------------------------------------------------
/web/static/readmebadge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/static/readmebadge.png
--------------------------------------------------------------------------------
/web/static/same.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/static/same.png
--------------------------------------------------------------------------------
/web/static/tg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/static/tg.png
--------------------------------------------------------------------------------
/web/static/topbadges.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/static/topbadges.png
--------------------------------------------------------------------------------
/web/static/up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/static/up.png
--------------------------------------------------------------------------------
/web/static/ypm_small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenBSL/OpenYellow/4b86a728f9676faec65f00952e861825de380f0c/web/static/ypm_small.png
--------------------------------------------------------------------------------
/web/sw.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | const version = '20210519';
4 | const staticCacheName = version + 'static';
5 | const pagesCacheName = 'pages';
6 | const imagesCacheName = 'images';
7 | const maxPages = 50; // Maximum number of pages to cache
8 | const maxImages = 100; // Maximum number of images to cache
9 | const timeout = 5000; // Number of milliseconds before timing out
10 |
11 | const cacheList = [
12 | staticCacheName,
13 | pagesCacheName,
14 | imagesCacheName
15 | ];
16 |
17 | function updateStaticCache() {
18 | return caches.open(staticCacheName)
19 | .then(staticCache => {
20 | return staticCache.addAll([
21 | '/blocks/sidebar.html',
22 | '/offline',
23 | '/css/style.css'
24 | ]);
25 | });
26 | }
27 |
28 | // Cache the page(s) that initiate the service worker
29 | function cacheClients() {
30 |
31 | }
32 |
33 | // Remove caches whose name is no longer valid
34 | function clearOldCaches() {
35 | return caches.keys()
36 | .then(keys => {
37 | return Promise.all(keys
38 | .filter(key => !cacheList.includes(key))
39 | .map(key => caches.delete(key))
40 | );
41 | });
42 | }
43 |
44 | function trimCache(cacheName, maxItems) {
45 | caches.open(cacheName)
46 | .then(cache => {
47 | cache.keys()
48 | .then(keys => {
49 | if (keys.length > maxItems) {
50 | cache.delete(keys[0])
51 | .then(() => {
52 | trimCache(cacheName, maxItems)
53 | });
54 | }
55 | });
56 | });
57 | }
58 |
59 | addEventListener('install', event => {
60 | event.waitUntil(
61 | updateStaticCache()
62 | .then(() => {
63 | cacheClients();
64 | })
65 | .then(() => {
66 | return skipWaiting();
67 | })
68 | );
69 | });
70 |
71 |
72 |
73 | if (registration.navigationPreload) {
74 | addEventListener('activate', event => {
75 | event.waitUntil(
76 | registration.navigationPreload.enable()
77 | //clients.claim()
78 | );
79 | });
80 | }
81 |
82 | self.addEventListener('message', event => {
83 |
84 | if (event.origin !== "https://openyellow.org") // Compliant
85 | return;
86 |
87 | if (event.data.command == 'trimCaches') {
88 | trimCache(pagesCacheName, maxPages);
89 | trimCache(imagesCacheName, maxImages);
90 | }
91 | });
92 |
93 |
94 | addEventListener('fetch', event => {
95 | CheckData(event);
96 |
97 | });
98 |
99 |
100 | function CheckData(event) {
101 | const request = event.request;
102 | // Ignore non-GET requests
103 | if (request && request.method !== 'GET') {
104 | return;
105 | }
106 |
107 | const retrieveFromCache = false;
108 |
109 | // For HTML requests, try the network first, fall back to the cache, finally the offline page
110 | if (request.headers.get('Accept').includes('text/html')) {
111 | event.respondWith(
112 | new Promise(resolveWithResponse => {
113 | Promise.resolve(event.preloadResponse)
114 | .then(responseFromPreloadOrFetch => {
115 | resolveWithResponse(responseFromPreloadOrFetch);
116 | })
117 | .catch(responseFromCache => {
118 | resolveWithResponse(
119 | caches.match('/offline')
120 | );
121 | });
122 |
123 |
124 | })
125 | )
126 | return;
127 | }
128 | }
--------------------------------------------------------------------------------
/web/wip.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
OpenYellow - агрегатор open-source проектов для 1С:Предприятие
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
Раздел в процессе разработки
71 |
Он появится здесь в ближайшее время
72 |
73 |
74 |
85 |
86 |
87 |
88 |
89 |
90 |
--------------------------------------------------------------------------------
/web/yellowpm.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
OpenYellow - агрегатор open-source проектов для 1С:Предприятие
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
YellowPM
77 |
Пакетный менеджер для 1С:Предприятие 8
78 |
79 |
80 |
81 |
Скачать v0.2.0
82 |
GitHub
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
101 |
102 |
103 |
104 |
105 |
--------------------------------------------------------------------------------