diff --git a/.github/workflows/CI-workflows.yaml b/.github/workflows/CI-workflows.yaml index 696b38c8..6e6ba31e 100644 --- a/.github/workflows/CI-workflows.yaml +++ b/.github/workflows/CI-workflows.yaml @@ -1,6 +1,6 @@ name: CI Workflow -on: [push, pull_request] +on: [push, master] jobs: build: @@ -19,6 +19,17 @@ jobs: - name: Install Composer dependencies run: composer install + - name: Install npm dependencies + uses: actions/setup-node@v3 + with: + node-version: '18.x' # Specify Node.js version + # Documentation: https://github.com/actions/setup-node + # Explanation: This step sets up a Node.js environment and installs the project's dependencies listed in the `package.json` file using npm. + + - run: npm install + # Documentation: https://docs.npmjs.com/cli/v7/commands/npm-install + # Explanation: This step runs `npm install` to install the Node.js dependencies required for the project. + - name: Run phpcbf run: phpcbf . continue-on-error: ${{ github.ref != 'refs/heads/main' }} diff --git a/.github/workflows/release-workflows.yaml b/.github/workflows/release-workflows.yaml new file mode 100644 index 00000000..25d28254 --- /dev/null +++ b/.github/workflows/release-workflows.yaml @@ -0,0 +1,169 @@ +name: Release Workflow + +on: + push: + branches: + - master + +jobs: + release-management: + runs-on: ubuntu-latest + steps: + + - name: Set app env + run: | + # Split and keep last + echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV + echo "APP_VERSION=${GITHUB_REF##*/}" >> $GITHUB_ENV + + # Step 1: Checkout the code + - name: Checkout Code + uses: actions/checkout@v3 + with: + ref: ${{ github.head_ref }} # Checkout the correct branch name + fetch-depth: 0 # Fetch the whole repo history + + # Step 2: Prepare the signing certificate and key + - name: Prepare Signing Certificate and Key + run: | + echo "${{ secrets.NEXTCLOUD_SIGNING_CERT }}" > signing-cert.crt + echo "${{ secrets.NEXTCLOUD_SIGNING_KEY }}" > signing-key.key + + # Step 3: Install Node.js dependencies using npm + - name: Install npm dependencies + uses: actions/setup-node@v3 + with: + node-version: '18.x' # Specify Node.js version + + # Step 4: Install PHP extensions + - name: Set up PHP and install extensions + uses: shivammathur/setup-php@v2 + with: + php-version: '8.2' + extensions: zip, gd + + # Step 5: Build the node dependencies + - run: npm ci + + # Step 6: Build the node dependencies + - run: npm run build + + # Step 7: Build composer dependencies + - run: composer i --no-dev + + # Step 8: Copy the files into the package directory, excluding .git and package itself + - name: Copy the package files into the package + run: | + mkdir -p package/opencatalogi + rsync -av --progress \ + --exclude='package' \ + --exclude='.git' \ + --exclude='.github' \ + --exclude='.vscode' \ + --exclude='docker' \ + --exclude='docs' \ + --exclude='node_modules' \ + --exclude='src' \ + --exclude='test' \ + --exclude='package-lock.json' \ + --exclude='composer.lock' \ + --exclude='composer-setup.php' \ + --exclude='.phpunit.result.cache' \ + --exclude='phpmd.xml' \ + --exclude='signing-key.key' \ + --exclude='package.json' \ + --exclude='composer.json' \ + --exclude='coverage.txt' \ + --exclude='signing-cert.crt' \ + --exclude='docker-compose.yml' \ + --exclude='webpack.config.js' \ + --exclude='.prettierrc' \ + --exclude='psalm.xml' \ + --exclude='phpunit.xml' \ + --exclude='tsconfig.json' \ + --exclude='changelog-ci-config.json' \ + --exclude='jest.config.js' \ + --exclude='.gitattributes' \ + --exclude='.php-cs-fixer.dist.php' \ + --exclude='.gitignore' \ + --exclude='.eslintrc.js' \ + --exclude='stylelint.config.js' \ + --exclude='.babelrc' \ + --exclude='.nvmrc' \ + ./ package/opencatalogi/ + + # Step 9: Create the TAR.GZ archive with code in opencatalogi directory + - name: Create Tarball + run: | + cd package && tar -czf ../nexcloud-release.tar.gz opencatalogi + + # Step 10: Sign the TAR.GZ file with OpenSSL + - name: Sign the TAR.GZ file with OpenSSL + run: | + openssl dgst -sha512 -sign signing-key.key nexcloud-release.tar.gz | openssl base64 -out nexcloud-release.signature + + # Step 11: Generate Git version information + - name: Git Version + id: version + uses: codacy/git-version@2.7.1 + with: + release-branch: main + + # Step 12: Extract repository description + - name: Extract repository description + id: repo-description + run: | + description=$(jq -r '.description' <(curl -s https://api.github.com/repos/${{ github.repository }})) + echo "REPO_DESCRIPTION=$description" >> $GITHUB_ENV + + # Step 13: Run Changelog CI + - name: Run Changelog CI + if: github.ref == 'refs/heads/master' + uses: saadmk11/changelog-ci@v1.1.2 + with: + release_version: ${{ steps.version.outputs.version }} + config_file: changelog-ci-config.json + + # Step 14: Output the version + - name: Use the version + run: | + echo ${{ steps.version.outputs.version }} + + # Step 15: Copy the files into the package directory, excluding .git and package itself + - name: Copy the package files into the package + run: | + mkdir -p package/opencatalogi + rsync -av --progress --exclude='package' --exclude='.git' ./ package/opencatalogi/ + + # Step 18: Create a new release on GitHub + - name: Upload Release + uses: ncipollo/release-action@v1.12.0 + with: + artifacts: | + LICENSE.md + nexcloud-release.tar.gz + nexcloud-release.signature + opencatalogi-build.zip + opencatalogi-build.tar.gz + token: ${{ secrets.GITHUB_TOKEN }} + tag: ${{ steps.version.outputs.version }} + + - name: Attach tarball to github release + uses: svenstaro/upload-release-action@04733e069f2d7f7f0b4aebc4fbdbce8613b03ccd # v2 + id: attach_to_release + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: nexcloud-release.tar.gz + asset_name: ${{ env.APP_NAME }}-${{ env.APP_VERSION }}.tar.gz + tag: ${{ github.ref }} + overwrite: true + + - name: Upload app to Nextcloud appstore + uses: nextcloud-releases/nextcloud-appstore-push-action@a011fe619bcf6e77ddebc96f9908e1af4071b9c1 # v1 + with: + app_name: ${{ env.APP_NAME }} + appstore_token: ${{ secrets.NEXTCLOUD_APPSTORE_TOKEN }} + download_url: ${{ steps.attach_to_release.outputs.browser_download_url }} + app_private_key: ${{ secrets.NEXTCLOUD_SIGNING_KEY }} + + diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..c6b6caa2 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,32 @@ +# Version: 0.0.1-featuredimoc279workflowforrele.1134.97c61c3 + + +#### Other Changes + +* [#1](https://github.com/ConductionNL/opencatalogi/pull/1): Fix Migrations for PSQL +* [#2](https://github.com/ConductionNL/opencatalogi/pull/2): finished metadata properties being null +* [#3](https://github.com/ConductionNL/opencatalogi/pull/3): Fix elastic string filter +* [#4](https://github.com/ConductionNL/opencatalogi/pull/4): Publicatie dialogs en documentatie +* [#5](https://github.com/ConductionNL/opencatalogi/pull/5): feature/DIMOC-236/Attachments-page-refactor +* [#6](https://github.com/ConductionNL/opencatalogi/pull/6): feature/DIMOC-216/drag-and-drop +* [#7](https://github.com/ConductionNL/opencatalogi/pull/7): Some fixes for broken stuff +* [#8](https://github.com/ConductionNL/opencatalogi/pull/8): dashboard statistics +* [#9](https://github.com/ConductionNL/opencatalogi/pull/9): Added publication download, for pdf or zip +* [#10](https://github.com/ConductionNL/opencatalogi/pull/10): Fix filters +* [#11](https://github.com/ConductionNL/opencatalogi/pull/11): feature/DIMOC-216/drag-and-drop +* [#12](https://github.com/ConductionNL/opencatalogi/pull/12): build hotfix +* [#13](https://github.com/ConductionNL/opencatalogi/pull/13): renamed listing to directory +* [#14](https://github.com/ConductionNL/opencatalogi/pull/14): Fix search because of joins +* [#15](https://github.com/ConductionNL/opencatalogi/pull/15): feature/DIMOC-260/download-buttons +* [#16](https://github.com/ConductionNL/opencatalogi/pull/16): added dropdown based on metadata properties +* [#17](https://github.com/ConductionNL/opencatalogi/pull/17): search on metadata +* [#18](https://github.com/ConductionNL/opencatalogi/pull/18): added catalogi filter to search +* [#23](https://github.com/ConductionNL/opencatalogi/pull/23): feature/sync-button +* [#24](https://github.com/ConductionNL/opencatalogi/pull/24): Metadata copy fixes +* [#25](https://github.com/ConductionNL/opencatalogi/pull/25): Fix statuscode field nullability +* [#26](https://github.com/ConductionNL/opencatalogi/pull/26): finished filtered metadata +* [#27](https://github.com/ConductionNL/opencatalogi/pull/27): feature/medata-external-source +* [#28](https://github.com/ConductionNL/opencatalogi/pull/28): feature/DIMOC-281/cleanup +* [#29](https://github.com/ConductionNL/opencatalogi/pull/29): Copy metadata from listing +* [#30](https://github.com/ConductionNL/opencatalogi/pull/30): fix migration +* [#31](https://github.com/ConductionNL/opencatalogi/pull/31): Cast id's diff --git a/license.md b/LICENSE.md similarity index 100% rename from license.md rename to LICENSE.md diff --git a/README.md b/README.md index 6d6c9af4..e65a38f4 100644 --- a/README.md +++ b/README.md @@ -18,3 +18,6 @@ Deze documentatie is bedoeld voor diverse doelgroepen: Voor meer informatie over OpenCatalogi en onze gemeenschappelijke inspanningen, bezoek onze [GitHub-pagina](https://github.com/OpenCatalogi) of de officiële website op [OpenCatalogi.nl](https://opencatalogi.nl). Veel succes met het gebruik van de app. Voor vragen of bijdragen, neem gerust contact met ons op via support@conduction.nl. + +## Handmatig installeren +Onder releases vind u de laatste handmatige commit diff --git a/appinfo/info.xml b/appinfo/info.xml index eba43efe..b3075015 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -2,24 +2,66 @@ opencatalogi - Open Catalogi - The Open Catalogi next cloud app provides a framework for federated catalogouses to work together in an open data ecosystem - Hmmm what could we say - 0.6.0 + OpenCatalogi + Framework for federated catalogi to work togethe + + 0.6.5 agpl Conduction + Acato OpenCatalogi - workflow - https://github.com/ConductionNL/ZaakAfhandelApp/issues - - - + + https://conduction.gitbook.io/opencatalogi-nextcloud/gebruikers + https://conduction.gitbook.io/opencatalogi-nextcloud/beheerders + https://conduction.gitbook.io/opencatalogi-nextcloud/developers + + integration + https://documentatie.opencatalogi.nl/ + https://github.com/OpenCatalogi/.github/issues + https://github.com/ConductionNL/opencatalogi.git + + https://raw.githubusercontent.com/ConductionNL/opencatalogi/master/docs/assets/logo.png + https://raw.githubusercontent.com/ConductionNL/opencatalogi/master/docs/screenshots/1.png + https://raw.githubusercontent.com/ConductionNL/opencatalogi/master/docs/screenshots/2.png + + + + pgsql + sqlite + mysql + + curl + zip + + + + + + OCA\OpenCatalogi\Cron\DirectorySync + opencatalogi - Open Catalogi + Catalogi opencatalogi.dashboard.page app.svg link diff --git a/changelog-ci-config.json b/changelog-ci-config.json new file mode 100644 index 00000000..d19c961e --- /dev/null +++ b/changelog-ci-config.json @@ -0,0 +1,22 @@ +{ + "commit_changelog": true, + "exclude_labels": ["bot", "dependabot", "ci"], + "group_config": [ + { + "title": "Bug Fixes", + "labels": ["bug", "bugfix"] + }, + { + "title": "Code Improvements", + "labels": ["improvements", "enhancement"] + }, + { + "title": "New Features", + "labels": ["feature"] + }, + { + "title": "Documentation Updates", + "labels": ["docs", "documentation", "doc"] + } + ] +} \ No newline at end of file diff --git a/composer.json b/composer.json index 2a4dc0fa..89c318a1 100644 --- a/composer.json +++ b/composer.json @@ -44,7 +44,7 @@ "adbario/php-dot-notation": "^3.3.0", "bamarni/composer-bin-plugin": "^1.8", "elasticsearch/elasticsearch": "^v8.14.0", - "guzzlehttp/guzzle": "^7.0", + "guzzlehttp/guzzle": "^7.0", "mpdf/mpdf": "^8.2", "symfony/twig-bundle": "^6.4", "symfony/uid": "^6.4" diff --git a/docker-compose-build.yml b/docker-compose-build.yml new file mode 100644 index 00000000..0d866eb2 --- /dev/null +++ b/docker-compose-build.yml @@ -0,0 +1,55 @@ +version: "3.5" +volumes: + nextcloud: + apps: + db: + config: + +services: + frontend: + image: acatonl/woo-ui-develop + ports: + - "8081:80" + + db: + image: mariadb:10.6 + restart: always + command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW + volumes: + - db:/var/lib/mysql + environment: + - MYSQL_ROOT_PASSWORD='!ChangeMe!' + - MYSQL_PASSWORD='!ChangeMe!' + - MYSQL_DATABASE=nextcloud + - MYSQL_USER=nextcloud + + init-ubuntu: + image: ubuntu + command: sh /home/ubuntu/docker/init-ubuntu.sh + volumes: + - ./docker:/home/ubuntu/docker + - .:/home/ubuntu/app + + nextcloud: + user: root + container_name: nextcloud +# entrypoint: occ app:enable opencatalogi + image: nextcloud + restart: always + ports: + - 8080:80 + links: + - db + volumes: + - nextcloud:/var/www/html:rw + - ./custom_apps:/var/www/html/custom_apps + - .:/var/www/html/custom_apps/opencatalogi + environment: + - MYSQL_PASSWORD='!ChangeMe!' + - MYSQL_DATABASE=nextcloud + - MYSQL_USER=nextcloud + - MYSQL_HOST=db + - TZ=Europe/Amsterdam + depends_on: + init-ubuntu: + condition: service_completed_successfully diff --git a/docker-compose.yml b/docker-compose.yml index 0d866eb2..b0692d18 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -22,18 +22,10 @@ services: - MYSQL_PASSWORD='!ChangeMe!' - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud - - init-ubuntu: - image: ubuntu - command: sh /home/ubuntu/docker/init-ubuntu.sh - volumes: - - ./docker:/home/ubuntu/docker - - .:/home/ubuntu/app - + nextcloud: user: root container_name: nextcloud -# entrypoint: occ app:enable opencatalogi image: nextcloud restart: always ports: @@ -42,14 +34,12 @@ services: - db volumes: - nextcloud:/var/www/html:rw - - ./custom_apps:/var/www/html/custom_apps - - .:/var/www/html/custom_apps/opencatalogi + - ./custom-apps:/var/www/html/custom_apps environment: - MYSQL_PASSWORD='!ChangeMe!' - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud - MYSQL_HOST=db + - NEXTCLOUD_ADMIN_USER=admin + - NEXTCLOUD_ADMIN_PASSWORD=admin - TZ=Europe/Amsterdam - depends_on: - init-ubuntu: - condition: service_completed_successfully diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md index 13d66e28..c0a61925 100644 --- a/docs/SUMMARY.md +++ b/docs/SUMMARY.md @@ -20,8 +20,8 @@ * [Installatie/productie](installatie/README.md) * [Installatie-instructies Nextcloud](installatie/instructies.md) * [Audit en logging](installatie/logging.md) - * [Rollen en Rechten](installatie/rollen-en-rechten.md.md) - * [SAAS en Dashboarding](installatie/saas.md) + * [Rollen en Rechten](installatie/rollen-en-rechten.md) + * [SaaS](installatie/saas.md) * [On-Prem server](installatie/on-prem-server.md) * [Systeemeisen voor Nextcloud](installatie/systeemeisen-voor-nextcloud.md) * [Veel gestelde vragen](veel-gestelde-vragen.md) diff --git a/docs/assets/logo.png b/docs/assets/logo.png new file mode 100644 index 00000000..2fece209 Binary files /dev/null and b/docs/assets/logo.png differ diff --git a/docs/beheerders/catalogi.md b/docs/beheerders/catalogi.md index 44751e22..2341a966 100644 --- a/docs/beheerders/catalogi.md +++ b/docs/beheerders/catalogi.md @@ -1,8 +1,6 @@ -# Catalogus +# Catalogi -Een catalogus is een verzameling van [publicaties](../gebruikers/publicaties.md). Ze vormen doorgaans een logische versameling rondom een onderwer (bijvoorbeeld WOO) maar kunnen ook worden gebruikt om onderscheid te maken in toegans rechten. - -Publicaties behoren dus altijd tot één catalogus en iedere catalogus tot één organisatie. Het is echter wel mogelijk om in één catalogus meerdere [publicatie typen](../beheerders/metadata.md) te ondersteunen. Binnen de softwarecatalogus worden bijvoorbeeld publiccodes (componenten, code, etc.) als diensten beschikbaar gesteld en binnen de WOO meerdere KOOP/TOOI-typen. +Een catalogus is een verzameling van publicaties. Publicaties behoren dus altijd tot één catalogus en iedere catalogus tot één organisatie. Het is echter wel mogelijk om in één catalogus meerdere metadatatypen te ondersteunen. Binnen de softwarecatalogus worden bijvoorbeeld publiccodes (componenten, code, etc.) als diensten beschikbaar gesteld en binnen de Woo meerdere KOOP/TOOI-typen. > Catalogi zijn onderdeel van de [OpenCatalogi-Standaard](https://github.com/OpenCatalogi/.github/blob/main/docs/Standaard.md) en gebaseerd op het [catalogue object](https://conduction.stoplight.io/docs/open-catalogi/pk8bsjw0539dv-catalogue). diff --git a/docs/beheerders/directory.md b/docs/beheerders/directory.md index e6134413..23467fb3 100644 --- a/docs/beheerders/directory.md +++ b/docs/beheerders/directory.md @@ -1,28 +1,11 @@ # Directory -De directory vormt het overzicht van alle andere (externe) catalogi die bij jouw installatie bekend zijn. Een Catalogus die bij jouw installatie bekend is noemen een listing (als in is gelist op jouw directory). Dat maakt directories dus een lijst van catalogi die wlders staan. - -![alt text](directory.png) +De directory vormt het overzicht van alle andere (externe) catalogi die bij jouw installatie bekend zijn. Een Catalogus die bij jouw installatie bekend is noemen een listing (als in is gelist op jouw directory). ## Opzetten federatief netwerk -Directories worden tussen installaties onderling uitgewisseld en geupdate. Je hoeft dus nooit handmatig catalogi van andere toe te voegen aan jouw catalogus. Deze worden automatisch ontdekt. Wil je het automatisch ontdeken van catalogi uitzetten? Dan kan dit via instellingen -> Configuratie -> Federatief stelsel - -![alt text](directory_configuratie.png) - -Het is ook mogenlijk om handmatig externe directories (dus de direcotry van een andere installatie) toe te voegen, dit kan via directory inlezen. - -![alt text](directory_inlezen.png) +Directories worden tussen installaties onderling uitgewisseld en geupdate. Je hoeft dus nooit handmatig catalogi van andere toe te voegen aan jouw catalogus. ## Listing Bij een listing kan je de volgende zaken aanpassen. - -* Of de directory beschickbaar is voor zoek opdrachten -* Of de directory standaard moet mee worden genomen in zoek resultaten, dit is met name handig als er spraken is van een samenwerkings verband waarover je woo plichtig bent als overheid - -![alt text](directory_configuratie.png) - -Daarnaast is het mogenlijk om metadata definities van andere catalogi over te nemen en beschickbaar te maken voor je eigen catalogus - -![alt text](directory_metadata.png) diff --git a/docs/beheerders/organisaties.md b/docs/beheerders/organisaties.md index 24f5c6f5..94d0f6e5 100644 --- a/docs/beheerders/organisaties.md +++ b/docs/beheerders/organisaties.md @@ -1,7 +1 @@ # Organisaties - -In organisatie representeerd een volledige organistie of organisatorische eenheid. Hoewel de meeste organisaties één organisaite (namenlijk hun eigen) zullen beheren per open catalogi isntallatie zijn er senario's denkbaar waarin er meerdere organisaties in een installatie zitten. Meest voor de hand liggende zijn - -* SAAS: Een leverancier bied de software aan als SAAS oplossing en keist vier een hosting voor al haar klanten -* Samenwerkings Verband: meerdere orgnaisaties hebben een gemeenschapenlijk ict ondersteuner, en deze odnersteuner kiest voor éém installatie -* Grote organsisaties: De organisatie is dusdanig groot dat het zinnig wordt om hem ook in de installatie op te splitsen in orgniasatorische eenheden diff --git a/docs/beheerders/themas.md b/docs/beheerders/themas.md index dfd65045..7fd1fd49 100644 --- a/docs/beheerders/themas.md +++ b/docs/beheerders/themas.md @@ -1,7 +1 @@ # Thema's - -Een theme is een overkoepelende verbinding tussen [publicaties](../gebruikers/publicaties.md), in tegenstelling tot [catalogi](../beheerders/catalogi.md) kan een publicatie tot meerdere thema's behoren. Theme's zijn daarmee catalogi overstijgend maar in tegenstelling tot catalogi ook organisatie specifiek. - -Daar waar een catalogus vaak een uistpraak doet over het soort of type van publicaties in de catalogus (doorgaan geordend in wetenlijke kaders zo als de WOO of WHO) doen theme's uispraken over onderwerpen die worden aangeraakt door publicaties. - -Themea's kunnen door de organisatie zelf worden bepaald, en zullen vaak te maken hebben met actualiteit. Bijvoorbeeld de bouw van een nieuwe woonwijk in de gemeente. Gegevens uit verchillende catalogi en publicaite typen (bijvoorbeeld WOO verzoeken, onderzoeks verslagen, raadssstuken en gegevens sets) kunnen dan bij elkaar worden gebracht om voor de bezoekers inzichtenlijk te maken wat een organisatie allemaal heeft gedaan rondom dit thema. diff --git a/docs/developers/aan-de-slag-met-development.md b/docs/developers/aan-de-slag-met-development.md index 841aa293..c7b9e541 100644 --- a/docs/developers/aan-de-slag-met-development.md +++ b/docs/developers/aan-de-slag-met-development.md @@ -26,63 +26,10 @@ De Ontwikkelpartijen van [Core](https://documentatie.opencatalogi.nl/Docs/Projec ![alt text](feature_flow.png) -## Known issues - -Iedere applicatie heeft technical debt, hier open en eerlijk over zijn helpt developers die willen bijdragen. Op dit moment hebben wij de volgende aandachtspunten waar we aan werken - -* Test coverage frontend is te laag (is 70% zou 80%) moeten zijn -* Test coverage backend is te laag (is 60% zou 80%) moeten zijn -* Op de frontend bevaten de stores nog busnes logica die naar apparte services moet worden verplaats - ## Application development Omdat de applicatie is ontwikkeld met Nextcloud, is er uitgebreide informatie te vinden in de [Nextcloud-documentatie](https://docs.nextcloud.com/server/latest/developer_manual/index.html) zelf. Dit geldt zowel voor de lay-out van de app als voor de vele componenten die eraan toegevoegd kunnen worden. Tijdens de ontwikkeling van de OpenCatalogi-app is het *documentation-first* principe gehanteerd, waarbij de ontwikkelaars eerst de [Nextcloud-documentatie](https://docs.nextcloud.com/server/latest/developer_manual/index.html) hebben geraadpleegd. -### Gebruikersdocumentatie - -We gebruiken Gitbook voor de gebruikersdocumentatie. Features binnen de app zouden zo veel mogelijk direct moeten doorverwijzen naar deze documentatie. - -Ook voor de documentatie wordt een linter gebruikt namelijk [remarklint](https://github.com/remarkjs/remark-lint). - -De commando's om deze linter in de CLI te gebruiken zijn [hier te vinden](https://github.com/remarkjs/remark-lint?tab=readme-ov-file#what-is-this) voor een uitgebreide output in de terminal. - -### Performance - -Voor een goede gebruikers ervaring voor zowel bezoekers als medewerkers is het belangrijk dat dat de applicatie snel reageerd, we streven daarbij naar een performance van rond de 100 miliseconde (1/10) van een seconde. Maar overall zou de performance odner de 200 miliseconde moeten blijven. Acties die langer dan een seconde duren zijn reden om een purrl request te weigeren. - -## API Development - -De ontwikkeling van de API wordt bijgehouden met de documentatietool [Stoplight.io](https://stoplight.io/), die automatisch een [OpenAPI Specificatie (OAS)](https://www.noraonline.nl/wiki/FS:Openapi-specification#:~:text=Een%20OpenAPI%20Specification%20\(OAS\)%20beschrijft,er%20achter%20de%20API%20schuilgaat.) genereert uit de documentatie. De Stoplight voor OpenCatalogi is [hier](https://conduction.stoplight.io/docs/open-catalogi/6yuj08rgf7w44-open-catalogi-api) te vinden. - -## Frontend Development - -### Storage en Typing - -Om gegevens deelbaar te maken tussen de verschillende Vue-componenten maken we gebruik van [statemanagement](https://vuejs.org/guide/scaling-up/state-management) waarbij we het Action, State, View patroon van Vue zelf volgen. Omdat de applicatie ingewikkeld begint te worden stappen we daarbij over van [simple state management](https://vuejs.org/guide/scaling-up/state-management#simple-state-management-with-reactivity-api) naar [Pinia](https://pinia.vuejs.org/), de door Vue zelf geadviseerde opvolger van [Vuex](https://vuejs.org/guide/scaling-up/state-management#pinia). - -Daarnaast gebruiken we Typescript voor het definiëren van entities. - -### Modals - -* Er mag altijd slechts één modal actief zijn. -* Modals moeten abstract en overal bereikbaar zijn. -* Modals moeten geplaatst worden in de map src/modals. -* Modals moeten getriggerd worden via de state (zodat knoppen die modal openen overal plaatsbaar zijn). -* Modals moeten geïmporteerd worden via `/src/modals/Modals.vue`. - -### Views - -* Views moeten dezelfde bestandsnaam hebben als de geëxporteerde naam en een correlatie hebben met de map waarin het bestand zich bevindt. -* Bijvoorbeeld, als het bestand een detailpagina is en het zich in de map `publications` bevindt, moet het bestand de naam `PublicationDetail.vue` hebben. - -## Documentatie van next cloud - -Het is goed om bij development kennnis te nemen/hebben van de volgende gebruikte Nextcloud onderdelen: - -* [Icons](https://pictogrammers.com/library/mdi/) -* [Layout](https://docs.nextcloud.com/server/latest/developer_manual/design/layout.html)- -* [Componenten](https://nextcloud-vue-components.netlify.app/) - ## Kwaliteit, Stabiliteit en Veiligheid Als onderdeel van de CI/CD-straat voeren we een aantal tests uit, hiermee handhaven we zowel de code kwaliteiteisen van Nextcloud als die van onszelf. Deze testen worden geborgd in een workflow zodat je de resultaten zelf op iedere commit ziet. Let op! het falen van deze tests betekent dat de code niet naar master/main kan worden gemerged en dus niet in productie kan worden genomen. @@ -156,7 +103,7 @@ composer audit ![alt text](composer_audit.png) -Voor beide geldt dat het aantal acceptabele critical vulnerabilities in *production packadges* 0 is. +Voor beide geldt dat het aantal acceptabele critical vulnerabilities 0 is. ### Gebruikersdocumentatie diff --git a/docs/developers/installatie-van-nextcloud-demo-test-omgeving.md b/docs/developers/installatie-van-nextcloud-demo-test-omgeving.md index 6ede33e5..e1f0ec69 100644 --- a/docs/developers/installatie-van-nextcloud-demo-test-omgeving.md +++ b/docs/developers/installatie-van-nextcloud-demo-test-omgeving.md @@ -15,54 +15,42 @@ Deze repository heeft een snelle start met een Docker Compose-bestand. Hiermee k Volg deze eenvoudige stappen om de applicatie te starten: 1. **Docker Desktop**: [Download](https://www.docker.com/products/docker-desktop/) en installeer Docker Desktop. - 2. **WSL2**: [Download](https://learn.microsoft.com/en-us/windows/wsl/install) en installeer via de Microsoft Store. - 3. **Code**: [Download](https://github.com/ConductionNL/opencatalogi/archive/refs/heads/master.zip) de code als zip bestand en pak deze uit. - 4. **(Optie 1, Start Docker via installer)** - * [Download](https://raw.githubusercontent.com/OpenCatalogi/.github/main/docs/assets/Start-docker.bat) het `.bat`-bestand. Dit doe je door de link op te slaan (rechter muisknop opslaan als, let op dat je het bestand opslaat als `.bat`) - + * [Download](https://raw.githubusercontent.com/OpenCatalogi/.github/main/docs/assets/Start-docker.bat) het `.bat`-bestand. Dit doe je door de link op te slaan (rechtermuisknop opslaan als, let op dat je het bestand opslaat als `.bat`) * Plaats het bestand als `.bat` in dezelfde folder als de code. - - * Klik met de rechtermuisknop op het bestand en selecteer uitvoeren - **(Optie 2, via command line interface)** - + * Klik met de rechtermuisknop op het bestand en selecteer uitvoeren **(Optie 2, via command line interface)** * Type het volgende commando in de Command prompt en druk op Enter: `cd pad/naar/uitgepakte/map` - * Vervang `pad/naar/uitgepakte/map` door de locatie waar je de bestanden hebt uitgepakt. Bijvoorbeeld: `cd C:\Users\{{jouwgebruikersnaam}}\Downloads\opencatalogi-main` - * Typ het volgende commando in de command prompt en druk op Enter: `docker compose up` - * Wacht tot de applicatie is opgestart. Je ziet veel tekst voorbij komen, het kan 5-10 minuten duren voordat je deze laatste melding ziet: `[core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'` - 5. **Open de applicatie**: Open je webbrowser en ga naar - 6. **Login**: Voor de standaardinstallatie werkt dit met admin als log **en** admin wachtwoord -Je hebt nu een werkende Nextcloud-test en demo-omgeving. Om OpenCatalogi the activeren, volg dan [deze stappen](https://github.com/ConductionNL/opencatalogi/blob/master/docs/developers/de-opencatalogi-app-toevoegen-aan-nextcloud.md) +Je hebt nu een werkende Nextcloud-test en demo-omgeving. Om OpenCatalogi te activeren, volg dan [deze stappen](de-opencatalogi-app-toevoegen-aan-nextcloud.md) En dat is het! Volg deze stappen om de OpenCatalogi-app snel en soepel op te zetten. -## Deinstaleren +## De-installeren -Het kan natuurlijk voorkomen dat je na een succesvolle demonstratie de toepassing wil deinstalleren, open daarvoor de docker desktop interface en +Het kan natuurlijk voorkomen dat je na een succesvolle demonstratie de toepassing wil de-installeren, open daarvoor de Docker Desktop interface en * Vink onder `containers` alle containers aan en druk op 'delete' * Vink onder `images` alle images aan en druk op 'delete' * Vink onder `volumes` alle volumes aan en druk op 'delete' -* Verwijder de folder met bestanden die in stap 3 van het installatie proces hebt aangemaakt +* Verwijder de folder met bestanden die in stap 3 van het installatieproces heb aangemaakt ![alt text](docker_desktop.png) ## Bijwerken -Vanuit de demo installatie route is er nog geen optie beschickbaar voor het bijwerken van de applicatie, die zal je moeten deinstaleren en instaleren. +Vanuit de demo-installatie route is er nog geen optie beschikbaar voor het bijwerken van de applicatie, die zal je moeten de-installeren en installeren. diff --git a/docs/developers/npm_lint.png b/docs/developers/npm_lint.png index 89df6303..58136835 100644 Binary files a/docs/developers/npm_lint.png and b/docs/developers/npm_lint.png differ diff --git a/docs/developers/npm_test.png b/docs/developers/npm_test.png index c89e30a3..956bd8e2 100644 Binary files a/docs/developers/npm_test.png and b/docs/developers/npm_test.png differ diff --git a/docs/gebruikers/dashboard.md b/docs/gebruikers/dashboard.md index f7594bf7..c94f4905 100644 --- a/docs/gebruikers/dashboard.md +++ b/docs/gebruikers/dashboard.md @@ -18,7 +18,6 @@ Op het dashboard van OpenCatalogi vindt u handige informatie die je meteen verde 1. **Zoekverkeer** Het aantal zoekvragen dat er afgelopen maand aan jouw index (geheel van catalogi) is gesteld. 2. **Metadata** De verdeling over metadata-types van jouw publicaties 3. **Status** De verdeling over statustypes van jouw publicaties -4. **Catalogi** De verdeling over catalogi van jouw publicaties ![app menu](../assets/oc_dashboard.png) diff --git a/docs/gebruikers/publicaties.md b/docs/gebruikers/publicaties.md index 1c621746..87b1a8a1 100644 --- a/docs/gebruikers/publicaties.md +++ b/docs/gebruikers/publicaties.md @@ -2,14 +2,6 @@ Publicaties zijn onderdeel van de [Open Catalogi Standaard](https://github.com/OpenCatalogi/.github/blob/main/docs/Standaard.md) en gebaseerd op het [publication object](https://conduction.stoplight.io/docs/open-catalogi/9bebd6bf4fe35-publication). Publicaties kennen eigenschappen zoals gedefinieerd in een publicatietype en kunnen worden gekoppeld aan bijlagen -Een publicatie representeerd iets wat je wilt publiceren, het beschrijft de handeling van publiceren en de spelregels waaronder iets gepubliceerd wordt.het is een soort "verpakking" of "omhulsel" dat zowel de kerngegevens (data) als aanvullende informatie over die gegevens (metadata) bevat. - -Stel je voor dat je een foto hebt. De foto zelf is de data, terwijl de informatie zoals wanneer de foto is genomen, de resolutie van de foto, de camera-instellingen, en de locatie waar de foto is genomen, de metadata vormen. Een publicatie zou in dit geval zowel de foto als al deze aanvullende informatie samen in één pakketje verpakken, zodat je deze als een geheel kunt behandelen en doorzoeken. - -Met andere woorden, een publiatie maakt het mogelijk om zowel de data als de bijbehorende metadata op een gestandaardiseerde manier te bewaren en te verwerken, zonder dat je deze informatie telkens apart hoeft te beheren. Dit is handig omdat je zo alle relevante informatie bij elkaar hebt, wat zorgt voor meer context en daarmee een betere interpretatie van de data. - -Publicaties zijn altijd onderdeel van een collectie in de vorm van een [catalogus](../beheerders/catalogi.md) en behoren tot een [publicatie type](../beheerders/metadata.md) dit laatste zorgt ervoor dat ze voorspelbaar zijn. e.g. fotos hebben altijd een waarde resulutie. - ## Publicaties toevoegen Publicaties kunnen worden toegevoegd via: @@ -42,30 +34,12 @@ Na het opslaan van de publicatie, is deze zichtbaar onder de catalogi "Woo". Om Onder is een voorbeeld van een publicatie en de Actie-mogelijkheden. -
- -![alt text](image-1.png) - -## Acties - -![alt text](image.png) - -## Bijlagen - -In het merendeel van de gevallen wordt een publicatie opgemaakt om bestanden te delen (bijvoorbeeld vanuit een woo verzoek). Deze bestanden vormen de informatie in de publicaite en worden aan een publicatie gekoppels als bijlagen. Een bijlage kan zowel onderdeel zijn van de publicatie (er in worden geupload) als elders staan (er wordt naar verwezen). - -Naast een bestand kan een bijlage (per verwijzing) bijvoorbeeld ook een website of artikel op een website zijn. - -![alt text](image-3.png) - ## Eigenschappen -Een tweede manier om informatie op te nemen in een publicaite is via eigenschappen. Eigenschappen zijn voor gedefineerde opties (via [publicatie type](../beheerders/metadata.md)) waar een waarde aan kan worden toegekend. +@todo ## Bijlagen -![alt text](image-2.png) - Publicaties hebben vaak bijlagen, zoals een verslag of een besluit. Deze zijn eenvoudig toe te voegen door op de Actie-knop te klikken bij een geselecteerde publicatie, of de drie bolletjes naast een publicatie. Dit opent de Bijlage toevoegen modal.
diff --git a/docs/installatie/saas.md b/docs/installatie/saas.md index 856e6273..702fb3e0 100644 --- a/docs/installatie/saas.md +++ b/docs/installatie/saas.md @@ -1,76 +1,7 @@ -# SAAS en Dashboarding +# SaaS De OpenCatalogi-Nextcloud app is ontworpen om als SaaS-dienst te worden aangeboden aan overheden, ## Multi-tenancy by installion Meerdere tenants in aparte namespaces - -# Dashboarding - -Als je de Open Catalogi app aan de hand van nextcloud aan verschillende gemeenten wil aanbieden is het organiseren van goede tenant overstijgende dashboarding een must. Gelllukig heeft next cloud een goede ondersteuning voor [prometheus](https://grafana.com/grafana/dashboards/11033-nextcloud/), [loki](https://okxo.de/monitor-your-nextcloud-logs-for-suspicious-activities/), [grafana](https://grafana.com/grafana/dashboards/9632-nextcloud/) en [splunk](https://splunkbase) splunk.com/app/3398) - -![alt text](saas_splunk.png) -![alt text](saas_prometheus.png) - -Vamuit dashboardin zijn momenteel de volgende gegevens beschickbaar - -* **Huidige status van de Nextcloud-server** (beschikbaar, in onderhoud, webserver uitgeschakeld, host niet beschikbaar). -* **Statusoverzicht voor tijdsperiode.** -* **Succesvolle en mislukte inlogpogingen en de verhouding daartussen.** -* **Aantal gedefinieerde en actieve gebruikers.** -* **Aantal totale deelacties en aantal bestandsbewerkingen.** - -## Nextcloud Systeeminformatie - -* **Informatie over de huidige configuratie van de Nextcloud-server.** -* **Tijdlijn van Nextcloud-server upgrades.** - -## Gebruikers - -* **Aantal gedefinieerde en actieve gebruikers.** - -## Delen en Opslag - -* **Aantal deelacties, gefedereerde deelacties, bestanden en beschikbare schijfruimte.** -* **Deelacties.** - * **Wie heeft wat gedeeld (of gedeeld ongedaan gemaakt), met wie, hoe (publiek, gebruiker of groep) en wanneer.** - -## Bestands- en Mapactiviteiten - -* **Welke bestands- of mapbewerkingen zijn door wie uitgevoerd, wanneer en van waar.** -* **Mogelijkheid om de bestands- en mapactiviteit te filteren op land en/of gebruiker.** - -## Publieke Bestands-Toegang - -* **Wat is via publieke deelacties geopend, wanneer en van waar.** - -## Hardware Informatie - -* **Gemiddelde CPU-belasting, vrije en gebruikte geheugenruimte, databasegrootte.** - -## Gebruikers/Groepsbewerkingen - -* **Wanneer en door wie zijn gebruikers aangemaakt of verwijderd, uitgeschakeld of ingeschakeld, toegevoegd of verwijderd uit groepen, groepen aangemaakt of verwijderd.** - -## Wachtwoordwijzigingen - -* **Wie heeft of hebben hun wachtwoord gewijzigd, wie heeft het gewijzigd en van waar.** -* **Welke pogingen tot wachtwoordherstel zijn er geweest.** - -## Gebruikers Inlogactiviteit - -* **Inlogactiviteit over tijd en per locatie. Volledig inlogactiviteit-audittraject.** -* **Mogelijkheid om de inlogactiviteit te filteren op land en/of gebruiker.** - -### Mislukte Inlogpogingen - -* **Mislukte inlogpogingen weergegeven vanaf externe en interne IP-adressen, over tijd en per gebruiker.** - -### Bestand-, Map- en Gebruikersaudit - -* **Volledig audittraject voor bestanden en mappen, met antwoorden op vragen zoals "Welke bewerkingen heeft gebruiker X uitgevoerd en wanneer?", "Wie heeft wat gedaan met bestand Y wanneer?" of "Wanneer heeft gebruiker X iets gedaan met bestand Y?"** - -### Virusdetectie - -* **Statistieken en informatie van de app "Anti-virus voor bestanden" voor Nextcloud.** diff --git a/docs/screenshots/1.png b/docs/screenshots/1.png new file mode 100644 index 00000000..4453e2cc Binary files /dev/null and b/docs/screenshots/1.png differ diff --git a/docs/screenshots/2.png b/docs/screenshots/2.png new file mode 100644 index 00000000..613155be Binary files /dev/null and b/docs/screenshots/2.png differ diff --git a/lib/Templates/publication.html.twig b/lib/Templates/publication.html.twig deleted file mode 100644 index 098414b8..00000000 --- a/lib/Templates/publication.html.twig +++ /dev/null @@ -1,163 +0,0 @@ -

Publicatie {{ publication.title }}

- - - -{% if publication.catalogi|default %} -

Catalogi

- - - - - - {% if publication.catalogi.summary|default %} - - - - - {% endif %} - {% if publication.catalogi.description|default %} - - - - - {% endif %} -{# {% if publication.catalogi.organisation|default %}#} -{# #} -{# #} -{# #} -{# #} -{# {% endif %}#} -
Titel: {{ publication.catalogi.title }}
Samenvatting: {{ publication.catalogi.summary }}
Beschrijving: {{ publication.catalogi.description }}
Organisatie: {{ publication.catalogi.organisation }}
-{% endif %} - -{% if publication.metaData|default %} -

Publicatie Type

- - - - - - {% if publication.metaData.version|default %} - - - - - {% endif %} - {% if publication.metaData.description|default %} - - - - - {% endif %} -{# {% if publication.metaData.required|default %}#} -{# #} -{# #} -{# #} -{# #} -{# {% endif %}#} -
Titel: {{ publication.metaData.title }}
Versie: {{ publication.metaData.version }}
Beschrijving: {{ publication.metaData.description }}
Vereisten: {{ publication.metaData.required }}
-{% endif %} - -
- - - {% if publication.reference|default %} - - - - - {% endif %} - {% if publication.summary|default %} - - - - - {% endif %} - {% if publication.description|default %} - - - - - {% endif %} - {% if publication.category|default %} - - - - - {% endif %} - {% if publication.portal|default %} - - - - - {% endif %} - {% if publication.image|default %} - - - - - {% endif %} -{# {% if publication.themes|default %}#} -{# #} -{# #} -{# #} -{# #} -{# {% endif %}#} - {% if publication.featured is defined %} - - - - - {% endif %} - {% if publication.license|default %} - - - - - {% endif %} - {% if publication.status|default %} - - - - - {% endif %} - {% if publication.published|default %} - - - - - {% endif %} - {% if publication.modified|default %} - - - - - {% endif %} -
Referentie: {{ publication.reference }}
Samenvatting: {{ publication.summary }}
Beschrijving: {{ publication.description }}
Categorie: {{ publication.category }}
Portal: {{ publication.portal }}
Foto: {{ publication.image }}
Thema's: {{ publication.themes }}
Uitgelicht: {% if publication.featured == true %}Ja{% else %}Nee{% endif %}
Licentie: {{ publication.license }}
Status: {{ publication.status }}
Gepubliceerd: {{ publication.published | date("d-m-Y H:i") }}
Gewijzigd: {{ publication.modified | date("d-m-Y H:i") }}
- -{% if publication.data|default %} - -

Eigenschappen

- - - - - - {% for key, value in publication.data %} - - - - - {% endfor %} -
NaamData
{{ key }}{{ value }}
-{% endif %} diff --git a/src/modals/metaData/AddMetaDataModal.vue b/src/modals/metaData/AddMetaDataModal.vue index 480feedc..7afef8a5 100644 --- a/src/modals/metaData/AddMetaDataModal.vue +++ b/src/modals/metaData/AddMetaDataModal.vue @@ -89,6 +89,7 @@ export default { title: '', version: '', description: '', + summary: '', required: '', } navigationStore.setModal(false) diff --git a/src/views/Views.vue b/src/views/Views.vue index 14bc4c6d..55f15f92 100644 --- a/src/views/Views.vue +++ b/src/views/Views.vue @@ -42,10 +42,5 @@ export default { Search, NcAppContent, }, - data() { - return { - - } - }, } diff --git a/templates/index.php b/templates/index.php index 16731945..2ead5cd7 100644 --- a/templates/index.php +++ b/templates/index.php @@ -6,6 +6,7 @@ Util::addScript($appId, $appId . '-main'); Util::addStyle($appId, 'main'); ?> +