diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fef13ef..8908ef5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,13 +1,19 @@ -# You can override the included template(s) by including variable overrides -# SAST customization: https://docs.gitlab.com/ee/user/application_security/sast/#customizing-the-sast-settings -# Secret Detection customization: https://docs.gitlab.com/ee/user/application_security/secret_detection/#customizing-settings -# Dependency Scanning customization: https://docs.gitlab.com/ee/user/application_security/dependency_scanning/#customizing-the-dependency-scanning-settings -# Container Scanning customization: https://docs.gitlab.com/ee/user/application_security/container_scanning/#customizing-the-container-scanning-settings -# Note that environment variables can be set in several places -# See https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence -stages: -- test -sast: - stage: test -include: -- template: Security/SAST.gitlab-ci.yml +image: alpine:latest + +before_script: + - apk update + - apk add python3 py3-pip + +pages: + stage: deploy + script: + - mkdir Dist + - cp -R Source/* Dist/ + - cd Dist + - pip3 install -r requirements.txt + - python3 Generate.py + artifacts: + paths: + - Dist + rules: + - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH diff --git a/README.md b/README.md new file mode 100644 index 0000000..3bc0282 --- /dev/null +++ b/README.md @@ -0,0 +1,28 @@ +# WebPinBoard + +WebPinBoard is a Personal Static HTML Pinboard for Links and Images. +It works like this: +- You write all the links to webpages and images you want to organize in a [Markdown file](Source/Data.md) +- You run (or the server automatically does so for you, like on GitLab) the Generate.py program +- You get a fully static HTML page containing your translated markdown, organized into boards, or small windows + +Right now, it requires no JavaScript, just some CSS for displaying everything on screen correctly. +(TODO: Make sure the generated page is at least readable on browsers without CSS3 support). + +## Writing + +The Markdown data file has a simple structure: +- Headings denote a new board, and all the content that follows will go under that board +- You can put flags to indicate special properties at the end of an heading line: + - `:Closed` makes the board appear collapsed by default +- Every board full name can only be used once (otherwise CSS will break) +- The first ever board in the file is special (it will be the Info board, with a different design) + +Check my personal file for visual examples. + +## License + +The Generate.py program, the HTML codes in it embedded, and my CSS codes, are licensed under the AGPL-3.0 license. Check the [LICENSE.md file](LICENSE.md) for more details. + +The [Data.md](Source/Data.md) file serves both as an example and as my real private usage of this program. +Since it's not code, but rather a document basically listing names and links, I licensed it under the [CC BY-SA 4.0 license](https://creativecommons.org/licenses/by-sa/4.0). diff --git a/Source/Data.md b/Source/Data.md index ca1f847..a04d8ab 100644 --- a/Source/Data.md +++ b/Source/Data.md @@ -4,7 +4,7 @@ A collection of some of my saved links and resources, neatly (I hope) categorized for everyone! (and example for my [WebPinBoard](https://gitlab.com/octospacc/WebPinBoard) software) -- Data.md file License: [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) +- Data.md file License: [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) uwu links.. @@ -12,6 +12,24 @@ uwu links.. - [Link 1](example.com) - [Link 2](example.com) -### Finestra test 2 -- [Link 1](google.com) -- [Link 2](example.com) +### Finestra test 2 :Closed +[Link 1](example.com) + +![Img 1](https://i.imgur.com/5bdkMlg.gif) + +[Link 1](example.com) + +[Link 1](example.com) + +### Finestra test 3 +Lorem ipsum dolor sit amet, consectetur adipiscing elit. In tempus metus quis elit feugiat, blandit efficitur magna tincidunt. Proin feugiat ex ipsum, sed iaculis magna molestie a. Nam diam enim, pharetra in metus a, ultricies molestie eros. Vivamus vel metus ut dolor bibendum elementum. Curabitur sollicitudin quam vitae enim auctor, non porta leo faucibus. Cras mollis tellus sed ligula rhoncus fringilla. Nunc lacus erat, ultrices id tempor et, volutpat ac nisl. Aliquam erat volutpat. Sed vel ligula massa. + +In et odio nisl. In dapibus dictum risus et aliquam. Cras ut libero congue, euismod mauris non, viverra orci. Nullam facilisis accumsan odio, nec lacinia metus luctus a. Pellentesque ac aliquam nunc. Vestibulum eu sagittis quam. Integer vitae semper sapien, vel vulputate magna. Aliquam pretium mauris risus, ut porttitor tellus pellentesque in. Duis nec finibus magna, id mattis ante. Quisque rutrum ultricies ex et congue. Cras sit amet metus eu diam suscipit dapibus non eu felis. Sed non tempor nisi. Duis porta ut sem vel commodo. Sed dui leo, porttitor non lobortis sit amet, porttitor a risus. Nam vestibulum elementum lacus, sit amet tincidunt ex tempus id. + +Pellentesque et arcu mi. Integer bibendum feugiat maximus. Integer tristique ex quis mi ultricies hendrerit. Praesent mi ipsum, rhoncus eu est et, varius finibus quam. Ut pellentesque sem ut nisl congue, non posuere purus placerat. Ut gravida ligula non leo fringilla aliquam. Sed id felis id nibh blandit gravida nec nec odio. Nulla facilisi. + +Pellentesque vel velit euismod, consequat leo vitae, ullamcorper ex. Aliquam aliquam velit erat, eu venenatis mauris eleifend quis. Aenean id nulla non est cursus aliquet. Proin porta purus quis ipsum tincidunt dignissim. Nam tincidunt, metus sollicitudin tincidunt tincidunt, nibh justo hendrerit turpis, nec porttitor nunc neque nec massa. Aenean eu neque ipsum. Donec in sem vel urna venenatis molestie. + +In sodales dui tristique neque suscipit aliquet. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Integer luctus sollicitudin lorem vel blandit. Ut dictum metus vitae mi venenatis pharetra. Nam magna felis, pretium sit amet maximus et, porttitor sed risus. Fusce mi mauris, luctus vel condimentum at, lacinia imperdiet ex. Sed sodales, tellus vel venenatis cursus, nibh enim ultricies sapien, a venenatis lacus sapien eu ligula. Curabitur metus justo, fringilla et aliquet eget, interdum in ante. In hac habitasse platea dictumst. Vestibulum feugiat purus interdum sollicitudin aliquet. + +- [Link 2](example.com) \ No newline at end of file diff --git a/Source/Generate.py b/Source/Generate.py index 4b17ca9..2242b0c 100755 --- a/Source/Generate.py +++ b/Source/Generate.py @@ -28,15 +28,17 @@ BaseHTML = """ {TITLE} - +
-{INFO} -{BOARDS} +
+ {INFO} + {BOARDS} +
""" @@ -71,14 +73,6 @@ BoardHTML = """ from markdown import Markdown -""" -MainHeading = '' - -def SetMainHeading(HTML): - global MainHeading - MainHeading = 'h' + HTML.split('')[0] -""" - def SplitPop(String, Key): List = String.split(Key) for i,s in enumerate(List): @@ -99,11 +93,9 @@ def GetDataHTML(): exit(1) def GetBoards(Data): - print(Data) - Boards = SplitPop(Data, ''.format(GetHeading(Data))) - print(Boards) + Boards = SplitPop(Data, ''.format(GetHeading(Data)) + b + Boards[i] = ' - - - - - - - - Bachecoctt - - - - -
- -
- -
- - -
-

Bachecoctt

-

A collection of some of my saved links and resources,
neatly (I hope) categorized for everyone!
(and example for my WebPinBoard software)

uwu links..

-
-
- - -
-
-
- Finestra test -
-
- -
-
- - -
- -
-
-
- Finestra test 2 -
-
- -
-
- - -
- - -