mirror of
https://git.code.sf.net/p/seeddms/code
synced 2025-11-27 18:10:42 +00:00
Merge branch 'seeddms-5.1.x' into seeddms-6.0.x
This commit is contained in:
commit
0c723a2267
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -1,4 +1,6 @@
|
|||
*.tar.gz
|
||||
SeedDMS_*/*.tgz
|
||||
ext/*
|
||||
vendor
|
||||
webapp/*
|
||||
www/ext
|
||||
|
|
|
|||
17
Makefile
17
Makefile
|
|
@ -6,7 +6,11 @@ NODISTFILES=utils/importmail.php utils/seedddms-importmail utils/remote-email-up
|
|||
|
||||
PHPDOC=~/Downloads/phpDocumentor.phar
|
||||
|
||||
dist:
|
||||
INSTALL_PATH=/home/www-data/seeddms-test
|
||||
|
||||
all: dist
|
||||
|
||||
olddist:
|
||||
mkdir -p tmp/seeddms-$(VERSION)
|
||||
cp -a $(SRC) tmp/seeddms-$(VERSION)
|
||||
mkdir -p tmp/seeddms-$(VERSION)/views
|
||||
|
|
@ -23,9 +27,18 @@ dist:
|
|||
(cd tmp; tar --exclude=.svn --exclude=.gitignore -czvf ../seeddms-$(VERSION).tar.gz seeddms-$(VERSION))
|
||||
rm -rf tmp
|
||||
|
||||
dist:
|
||||
php vendor/bin/phing -Dversion=$(VERSION) dist
|
||||
|
||||
quickstart:
|
||||
php8.2 vendor/bin/phing -Dversion=$(VERSION) package
|
||||
|
||||
quickstart-dev:
|
||||
php vendor/bin/phing -Dversion=$(VERSION) -Dmode=development package
|
||||
|
||||
install:
|
||||
php vendor/bin/phing -Dversion=$(VERSION) -Dinstallpath=$(INSTALL_PATH) -Ddomain=dms.seeddms.org install
|
||||
|
||||
unittest:
|
||||
vendor/bin/phing -Dversion=$(VERSION) phpunitfast
|
||||
|
||||
|
|
@ -95,4 +108,4 @@ PKGFILE=SeedDMS_Core/package.xml
|
|||
changelog:
|
||||
@sgrep 'stag("DATE") .. etag("DATE") or ((stag("RELEASE") .. etag("RELEASE")) in (stag("VERSION") .. etag("VERSION"))) or inner(stag("NOTES") __ etag("NOTES"))' ${PKGFILE} | sed -e 's#^ *<date>\([-0-9]*\)</date><release>\([0-9.preRC]*\)</release>#\n\n\2 (\1)\n---------------------#' | awk -F'\n' -vRS='' -vOFS='|' '{$$1=$$1}1' | sort -V -r | sed 's/$$/\n/' | tr '|' '\n'
|
||||
|
||||
.PHONY: doc webdav webapp repository changelog
|
||||
.PHONY: doc webdav webapp repository changelog install
|
||||
|
|
|
|||
52
README.md
Normal file
52
README.md
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
SeedDMS is a PHP based Document Management System. For more information
|
||||
check the web site at https://www.seeddms.org
|
||||
|
||||
There are detailed installation instructions from a preconfigured distribution
|
||||
at [doc/README.Install.md]
|
||||
|
||||
If you prefer to install from git, you will need to:
|
||||
|
||||
1. Create a directory, e.g. seeddms
|
||||
|
||||
`mkdir seeddms`
|
||||
2. Change into that directory
|
||||
|
||||
`cd seeddms`
|
||||
3. Clone the various SeedDMS repositories
|
||||
|
||||
```
|
||||
git clone https://codeberg.org/SeedDMS/preview.git
|
||||
git clone https://codeberg.org/SeedDMS/lucene.git
|
||||
git clone https://codeberg.org/SeedDMS/ѕqlitefts.git
|
||||
git clone https://codeberg.org/SeedDMS/http_webdav_server.git
|
||||
```
|
||||
4. For SeedDMS 5.1.x
|
||||
|
||||
```
|
||||
git clone -b seeddms-5.1.x https://codeberg.org/SeedDMS/seeddms.git
|
||||
git clone -b seeddms-5.1.x https://codeberg.org/SeedDMS/core.git
|
||||
```
|
||||
|
||||
For SeedDMS 6.0.x
|
||||
|
||||
```
|
||||
git clone -b seeddms-6.0.x https://codeberg.org/SeedDMS/seeddms.git
|
||||
git clone -b seeddms-6.0.x https://codeberg.org/SeedDMS/core.git
|
||||
```
|
||||
5. Run composer
|
||||
|
||||
`composer update`
|
||||
|
||||
6. Create an installable distribution
|
||||
|
||||
`vendor/bin/phing -Dversion=$(php -r 'include "inc/inc.Version.php"; echo (new SeedDMS_Version())->version();') package`
|
||||
|
||||
or create an installable distribution with softlinks
|
||||
|
||||
`vendor/bin/phing -Dversion=$(php -r 'include "inc/inc.Version.php"; echo (new SeedDMS_Version())->version();') -Dmode=development package`
|
||||
|
||||
This archive does not contain any sources but only links to the previously
|
||||
cloned repositories.
|
||||
|
||||
The archive created in step 6. can be installed like the official releases of
|
||||
SeedDMS.
|
||||
320
build.xml
320
build.xml
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project name="seeddms" basedir="." default="main">
|
||||
<property name="tmp" value="/tmp" />
|
||||
<property name="tmp" value="/tmp" />
|
||||
<property name="package" value="${phing.project.name}" override="true" />
|
||||
<property name="seeddmsurl" value="http://localhost/seeddms51x" />
|
||||
<property name="builddir" value="${tmp}/build/${phing.project.name}" override="true" />
|
||||
|
|
@ -16,9 +16,13 @@
|
|||
<propertyregex property="shortversion" subject="${version} kk" pattern="([56])\.([0-9]).*" replace="seeddms$1$2x" override="true"/>
|
||||
<property name="majorversion" value="${version}" />
|
||||
<propertyregex property="majorversion" subject="${version}" pattern="([56])\..*" replace="$1" override="true"/>
|
||||
<property name="composer_version" value="2.8.5" />
|
||||
<property name="composer_extra_params" value="" />
|
||||
<property name="composer_env" value="" />
|
||||
<property name="minorversion" value="${version}" />
|
||||
<propertyregex property="minorversion" subject="${version}" pattern="[56]\.([0-9])\..*" replace="$1" override="true"/>
|
||||
<property name="subminorversion" value="${version}" />
|
||||
<propertyregex property="subminorversion" subject="${version}" pattern="[56]\.[0-9]\.(.*)" replace="$1" override="true"/>
|
||||
<property name="composer_version" value="2.8.5" />
|
||||
<property name="composer_extra_params" value="" />
|
||||
<property name="composer_env" value="" />
|
||||
<property name="mink_driver" value="chrome" />
|
||||
<property name="snooze_multiplier" value="1" />
|
||||
|
||||
|
|
@ -35,44 +39,43 @@
|
|||
<include name="webdav/**" />
|
||||
<include name="install/**" />
|
||||
<include name="restapi/**" />
|
||||
<include name="pdfviewer/**" />
|
||||
<include name="index.php" />
|
||||
<include name="www/index.php" />
|
||||
<include name="CHANGELOG" />
|
||||
<include name=".htaccess" />
|
||||
<include name="www/.htaccess" />
|
||||
<include name="LICENSE" />
|
||||
</fileset>
|
||||
|
||||
<target name="main">
|
||||
<echo>Hello</echo>
|
||||
</target>
|
||||
<target name="main">
|
||||
<echo>Hello</echo>
|
||||
</target>
|
||||
|
||||
<!-- PHP CodeSniffer -->
|
||||
<target name="phpcbf">
|
||||
<exec command="${srcdir}/vendor/bin/phpcbf --standard=${srcdir}/phpcs.xml" escape="false" passthru="true" checkreturn="true" />
|
||||
</target>
|
||||
<target name="phpcs">
|
||||
<exec command="${srcdir}/vendor/bin/phpcs --standard=${srcdir}/phpcs.xml --report=checkstyle > ${builddir}/reports/checkstyle.xml" escape="false" />
|
||||
</target>
|
||||
<target name="phpcs-console">
|
||||
<exec command="${srcdir}/vendor/bin/phpcs --standard=${srcdir}/phpcs.xml" escape="false" passthru="true" checkreturn="true" />
|
||||
</target>
|
||||
<!-- PHP CodeSniffer -->
|
||||
<target name="phpcbf">
|
||||
<exec executable="bash" line="${srcdir}/vendor/bin/phpcbf --standard=${srcdir}/phpcs.xml" escape="false" passthru="true" checkreturn="true" />
|
||||
</target>
|
||||
<target name="phpcs">
|
||||
<exec executable="bash" line="${srcdir}/vendor/bin/phpcs --standard=${srcdir}/phpcs.xml --report=checkstyle > ${builddir}/reports/checkstyle.xml" escape="false" />
|
||||
</target>
|
||||
<target name="phpcs-console">
|
||||
<exec executable="bash" line="${srcdir}/vendor/bin/phpcs --standard=${srcdir}/phpcs.xml" escape="false" passthru="true" checkreturn="true" />
|
||||
</target>
|
||||
|
||||
<target name="php-cs-fixer-dryrun">
|
||||
<exec command="${srcdir}/vendor/bin/php-cs-fixer fix --dry-run -vvv --diff ${srcdir}/inc" passthru="true" escape="false" checkreturn="true" />
|
||||
<target name="php-cs-fixer-dryrun">
|
||||
<exec executable="bash" line="${srcdir}/vendor/bin/php-cs-fixer fix --dry-run -vvv --diff ${srcdir}/inc" passthru="true" escape="false" checkreturn="true" />
|
||||
</target>
|
||||
|
||||
<!-- PHPUnit -->
|
||||
<target name="phpunitfast" description="Run tests">
|
||||
<exec dir="${srcdir}/SeedDMS_Core" command="XDEBUG_MODE=coverage SEEDDMS_CORE_SQL=../install/create_tables-sqlite3.sql ${srcdir}/vendor/bin/phpunit --bootstrap ${srcdir}/SeedDMS_Core/bootstrap-${majorversion}.php --coverage-html ${srcdir}/coverage/" passthru="true" checkreturn="true" />
|
||||
<exec dir="${srcdir}/SeedDMS_Core" executable="bash" line="XDEBUG_MODE=coverage SEEDDMS_CORE_SQL=../install/create_tables-sqlite3.sql ${srcdir}/vendor/bin/phpunit --bootstrap ${srcdir}/SeedDMS_Core/bootstrap-${majorversion}.php --coverage-html ${srcdir}/coverage/" passthru="true" checkreturn="true" />
|
||||
<!-- exec dir="${srcdir}/tests" command="SEEDDMS_URL=${seeddmsurl} SEEDDMS_MINK_DRIVER=${mink_driver} SEEDDMS_SNOOZE_MULTIPLIER=${snooze_multiplier} ${srcdir}/vendor/bin/phpunit" passthru="true" checkreturn="true" / -->
|
||||
</target>
|
||||
|
||||
<target name="composer" description="Install dependencies with Composer">
|
||||
<if>
|
||||
<equals arg1="${composer_version}" arg2="latest-2.x" />
|
||||
<then>
|
||||
<httpget url="https://getcomposer.org/composer-2.phar" sslVerifyPeer="false" dir="${srcdir}" filename="composer.phar" />
|
||||
</then>
|
||||
<target name="composer" description="Install dependencies with Composer">
|
||||
<if>
|
||||
<equals arg1="${composer_version}" arg2="latest-2.x" />
|
||||
<then>
|
||||
<httpget url="https://getcomposer.org/composer-2.phar" sslVerifyPeer="false" dir="${srcdir}" filename="composer.phar" />
|
||||
</then>
|
||||
<else>
|
||||
<if>
|
||||
<not><available file="composer.phar" /></not>
|
||||
|
|
@ -80,10 +83,13 @@
|
|||
<httpget url="https://getcomposer.org/download/${composer_version}/composer.phar" sslVerifyPeer="false" dir="${srcdir}" />
|
||||
</then>
|
||||
</if>
|
||||
</else>
|
||||
</if>
|
||||
<echo message="Installing dependencies..." />
|
||||
<exec command="${composer_env} php ${srcdir}/composer.phar install ${composer_extra_params}" passthru="true" checkreturn="true" />
|
||||
</else>
|
||||
</if>
|
||||
<echo message="Installing dependencies..." />
|
||||
<exec executable="php" passthru="false" dir="${builddir}/export/${shortversion}">
|
||||
<arg line="${srcdir}/composer.phar install ${composer_extra_params}"/>
|
||||
<!-- arg line="${composer_env} php ${srcdir}/composer.phar install ${composer_extra_params}"/ -->
|
||||
</exec>
|
||||
</target>
|
||||
|
||||
<target name="dist" description="build SeedDMS tar archive">
|
||||
|
|
@ -92,7 +98,7 @@
|
|||
<then><fail msg="Pass version as property 'version'" /></then>
|
||||
</if>
|
||||
|
||||
<echo msg="This is ${shortversion}" />
|
||||
<echo msg="This is ${version}" />
|
||||
|
||||
<delete file="./seeddms-${version}.tar.gz" failonerror="false" />
|
||||
<tar destfile="./seeddms-${version}.tar.gz" prefix="seeddms-${version}" compression="gzip">
|
||||
|
|
@ -107,6 +113,9 @@
|
|||
</if>
|
||||
|
||||
<echo msg="This is ${shortversion}" />
|
||||
<echo msg="Major version ${majorversion}" />
|
||||
<echo msg="Minor version ${minorversion}" />
|
||||
<echo msg="Subminor version ${subminorversion}" />
|
||||
|
||||
<if>
|
||||
<matches string="${version}" pattern="^6\.0\..*" />
|
||||
|
|
@ -114,103 +123,202 @@
|
|||
<else><echo msg="This is version 5" /></else>
|
||||
</if>
|
||||
<!-- make sure the work area is empty, then rebuild it -->
|
||||
<delete dir="${builddir}/packages" includeemptydirs="true" failonerror="false" />
|
||||
<mkdir dir="${builddir}/packages" />
|
||||
<delete dir="${builddir}/export" includeemptydirs="true" failonerror="false" />
|
||||
<delete dir="${builddir}/packages" includeemptydirs="true" failonerror="false" />
|
||||
<mkdir dir="${builddir}/packages" />
|
||||
<delete dir="${builddir}/export" includeemptydirs="true" failonerror="false" />
|
||||
<mkdir dir="${builddir}/export" />
|
||||
<mkdir dir="${builddir}/export/${shortversion}" />
|
||||
<mkdir dir="${builddir}/export/${shortversion}/conf" />
|
||||
<mkdir dir="${builddir}/export/${shortversion}/data" />
|
||||
<mkdir dir="${builddir}/export/${shortversion}/data/1048576" />
|
||||
<mkdir dir="${builddir}/export/${shortversion}/data/log" />
|
||||
<mkdir dir="${builddir}/export/${shortversion}/data/cache" />
|
||||
<exec command="echo 'Signature: 8a477f597d28d172789f06886806bc55' > ${builddir}/export/${shortversion}/data/cache/CACHEDIR.TAG" />
|
||||
<exec command="echo '# This file is a cache directory tag created by seeddms.' >> ${builddir}/export/${shortversion}/data/cache/CACHEDIR.TAG" />
|
||||
<exec command="echo '# For information about cache directory tags, see: http://www.brynosaurus.com/cachedir/' >> ${builddir}/export/${shortversion}/data/cache/CACHEDIR.TAG" />
|
||||
<exec executable="echo" passthru="true" checkreturn="true">
|
||||
<arg line="'Signature: 8a477f597d28d172789f06886806bc55' > ${builddir}/export/${shortversion}/data/cache/CACHEDIR.TAG" />
|
||||
</exec>
|
||||
<exec executable="echo" passthru="true" checkreturn="true">
|
||||
<arg line="'# This file is a cache directory tag created by seeddms.' >> ${builddir}/export/${shortversion}/data/cache/CACHEDIR.TAG" />
|
||||
</exec>
|
||||
<exec executable="echo" passthru="true" checkreturn="true">
|
||||
<arg line="echo '# For information about cache directory tags, see: http://www.brynosaurus.com/cachedir/' >> ${builddir}/export/${shortversion}/data/cache/CACHEDIR.TAG" />
|
||||
</exec>
|
||||
<mkdir dir="${builddir}/export/${shortversion}/data/backup" />
|
||||
<mkdir dir="${builddir}/export/${shortversion}/data/lucene" />
|
||||
<mkdir dir="${builddir}/export/${shortversion}/data/staging" />
|
||||
<mkdir dir="${builddir}/export/${shortversion}/pear" />
|
||||
<mkdir dir="${builddir}/export/${shortversion}/www" />
|
||||
<mkdir dir="${builddir}/export/${shortversion}/www/ext" />
|
||||
<mkdir dir="${builddir}/export/${shortversion}/seeddms-${version}" />
|
||||
<if>
|
||||
<matches string="${mode}" pattern="^development" />
|
||||
<then></then>
|
||||
<else>
|
||||
<mkdir dir="${builddir}/export/${shortversion}/seeddms-${version}" />
|
||||
</else>
|
||||
</if>
|
||||
|
||||
<copy file="${srcdir}/conf/settings.xml.template" tofile="${builddir}/export/${shortversion}/conf/settings.xml">
|
||||
<filterchain>
|
||||
<replaceregexp>
|
||||
<replaceregexp>
|
||||
<regexp pattern="_DBC_DBTYPE_" replace="${dbtype}"/>
|
||||
<regexp pattern="_DBC_DBSERVER_" replace="${dbhost}"/>
|
||||
<regexp pattern="_DBC_DBNAME_" replace="${dbname}"/>
|
||||
<regexp pattern="_DBC_DBUSER_" replace="${dbuser}"/>
|
||||
<regexp pattern="_DBC_DBPASS_" replace="${dbpass}"/>
|
||||
<regexp pattern="_SHORT_VERSION_" replace="${shortversion}"/>
|
||||
</replaceregexp>
|
||||
</replaceregexp>
|
||||
</filterchain>
|
||||
</copy>
|
||||
<copy file="${srcdir}/conf/.htaccess" tofile="${builddir}/export/${shortversion}/conf/.htaccess" />
|
||||
<copy todir="${builddir}/export/${shortversion}/seeddms-${version}">
|
||||
<fileset refid="distfiles" />
|
||||
</copy>
|
||||
<copy todir="${builddir}/export/${shortversion}/pear/vendor">
|
||||
<fileset dir="${srcdir}/vendor" defaultexcludes="false" />
|
||||
</copy>
|
||||
<copy todir="${builddir}/export/${shortversion}/www/ext/example">
|
||||
<fileset dir="${srcdir}/ext/example" defaultexcludes="false" />
|
||||
</copy>
|
||||
<!-- copy todir="${builddir}/export/${shortversion}/pear/SeedDMS">
|
||||
<fileset dir="SeedDMS_Core">
|
||||
<include name="Core/**" />
|
||||
<include name="Core.php" />
|
||||
</fileset>
|
||||
<fileset dir="SeedDMS_Preview">
|
||||
<include name="Preview/**" />
|
||||
<include name="Preview.php" />
|
||||
</fileset>
|
||||
<fileset dir="SeedDMS_Lucene">
|
||||
<include name="Lucene/**" />
|
||||
<include name="Lucene.php" />
|
||||
</fileset -->
|
||||
<!-- fileset dir="SeedDMS_SQLiteFTS">
|
||||
<include name="SQLiteFTS/**" />
|
||||
<include name="SQLiteFTS.php" />
|
||||
</fileset>
|
||||
</copy -->
|
||||
<!-- copy todir="${builddir}/export/${shortversion}/pear">
|
||||
<fileset dir="../seeddms-ext/http_webdav_server">
|
||||
<include name="HTTP/WebDAV/Server/**" />
|
||||
<include name="HTTP/WebDAV/Server.php" />
|
||||
</fileset>
|
||||
</copy>
|
||||
<copy todir="${builddir}/export/${shortversion}/pear/HTTP/WebDAV">
|
||||
<fileset dir="../seeddms-ext/http_webdav_server">
|
||||
<include name="Tools/**" />
|
||||
</fileset>
|
||||
</copy -->
|
||||
<copy tofile="${builddir}/export/${shortversion}/pear/composer.json" file="composer-dist.json">
|
||||
</copy>
|
||||
<phingcall target="composer">
|
||||
<property name="composer_extra_params" value="--working-dir=${builddir}/export/${shortversion}/pear/" />
|
||||
<property name="composer_envv" value="COMPOSER=${srcdir}/composer-dist.json" />
|
||||
</phingcall>
|
||||
<exec command="cd ${builddir}/export/${shortversion} && ln -s seeddms-${version} seeddms" />
|
||||
<exec command="cd ${builddir}/export/${shortversion}/www && ln -s ../seeddms/op" />
|
||||
<exec command="cd ${builddir}/export/${shortversion}/www && ln -s ../seeddms/out" />
|
||||
<exec command="cd ${builddir}/export/${shortversion}/www && ln -s ../seeddms/inc" />
|
||||
<exec command="cd ${builddir}/export/${shortversion}/www && ln -s ../seeddms/controllers" />
|
||||
<exec command="cd ${builddir}/export/${shortversion}/www && ln -s ../seeddms/languages" />
|
||||
<exec command="cd ${builddir}/export/${shortversion}/www && ln -s ../seeddms/views" />
|
||||
<exec command="cd ${builddir}/export/${shortversion}/www && ln -s ../seeddms/restapi" />
|
||||
<exec command="cd ${builddir}/export/${shortversion}/www && ln -s ../seeddms/styles" />
|
||||
<exec command="cd ${builddir}/export/${shortversion}/www && ln -s ../seeddms/pdfviewer" />
|
||||
<exec command="cd ${builddir}/export/${shortversion}/www && ln -s ../seeddms/install" />
|
||||
<exec command="cd ${builddir}/export/${shortversion}/www && ln -s ../seeddms/webdav" />
|
||||
<exec command="cd ${builddir}/export/${shortversion}/www && ln -s ../seeddms/index.php" />
|
||||
<exec command="cd ${builddir}/export/${shortversion}/www && ln -s ../seeddms/.htaccess" />
|
||||
<if>
|
||||
<matches string="${mode}" pattern="^development" />
|
||||
<then>
|
||||
<exec executable="ln" passthru="true" dir="${builddir}/export/${shortversion}">
|
||||
<arg line="-s ${srcdir} seeddms" />
|
||||
</exec>
|
||||
<exec executable="ln" passthru="true" dir="${builddir}/export/${shortversion}/www">
|
||||
<arg line="-s ${srcdir}/op" />
|
||||
</exec>
|
||||
<exec executable="ln" passthru="true" dir="${builddir}/export/${shortversion}/www">
|
||||
<arg line="-s ${srcdir}/out" />
|
||||
</exec>
|
||||
<exec executable="ln" passthru="true" dir="${builddir}/export/${shortversion}/www">
|
||||
<arg line="-s ${srcdir}/inc" />
|
||||
</exec>
|
||||
<exec executable="ln" passthru="true" dir="${builddir}/export/${shortversion}/www">
|
||||
<arg line="-s ${srcdir}/controllers" />
|
||||
</exec>
|
||||
<exec executable="ln" passthru="true" dir="${builddir}/export/${shortversion}/www">
|
||||
<arg line="-s ${srcdir}/languages" />
|
||||
</exec>
|
||||
<exec executable="ln" passthru="true" dir="${builddir}/export/${shortversion}/www">
|
||||
<arg line="-s ${srcdir}/views" />
|
||||
</exec>
|
||||
<exec executable="ln" passthru="true" dir="${builddir}/export/${shortversion}/www">
|
||||
<arg line="-s ${srcdir}/restapi" />
|
||||
</exec>
|
||||
<exec executable="ln" passthru="true" dir="${builddir}/export/${shortversion}/www">
|
||||
<arg line="-s ${srcdir}/styles" />
|
||||
</exec>
|
||||
<exec executable="ln" passthru="true" dir="${builddir}/export/${shortversion}/www">
|
||||
<arg line="-s ${srcdir}/install" />
|
||||
</exec>
|
||||
<exec executable="ln" passthru="true" dir="${builddir}/export/${shortversion}/www">
|
||||
<arg line="-s ${srcdir}/webdav" />
|
||||
</exec>
|
||||
<exec executable="ln" passthru="true" dir="${builddir}/export/${shortversion}/www">
|
||||
<arg line="-s ${srcdir}/www/index.php" />
|
||||
</exec>
|
||||
<exec executable="ln" passthru="true" dir="${builddir}/export/${shortversion}/www">
|
||||
<arg line="-s ${srcdir}/www/.htaccess" />
|
||||
</exec>
|
||||
</then>
|
||||
<else>
|
||||
<copy todir="${builddir}/export/${shortversion}/seeddms-${version}">
|
||||
<fileset refid="distfiles" />
|
||||
</copy>
|
||||
<copy todir="${builddir}/export/${shortversion}/www/ext/example">
|
||||
<fileset dir="${srcdir}/www/ext/example" defaultexcludes="false" />
|
||||
</copy>
|
||||
<if>
|
||||
<available file="${srcdir}/www/ext/pdfviewer/conf.php"/>
|
||||
<then>
|
||||
<copy todir="${builddir}/export/${shortversion}/www/ext/pdfviewer">
|
||||
<fileset dir="${srcdir}/www/ext/pdfviewer/" expandsymboliclinks="true" defaultexcludes="false">
|
||||
<include name="**/*" />
|
||||
</fileset>
|
||||
</copy>
|
||||
</then>
|
||||
<else>
|
||||
<echo level="warning" message="I didn't find the extension 'pdfviewer'. You need to install it manually." />
|
||||
</else>
|
||||
</if>
|
||||
<copy tofile="${builddir}/export/${shortversion}/composer.json" file="composer-dist.json">
|
||||
<filterchain>
|
||||
<replaceregexp>
|
||||
<regexp pattern="/home/cvs/seeddms-ext/" replace="${srcdir}/../"/>
|
||||
<regexp pattern="__CORE_BRANCH__" replace="seeddms-${majorversion}.${minorversion}.x"/>
|
||||
</replaceregexp>
|
||||
</filterchain>
|
||||
</copy>
|
||||
<phingcall target="composer">
|
||||
<property name="composer_extra_params" value="--working-dir=${builddir}/export/${shortversion}/" />
|
||||
<property name="composer_envv" value="COMPOSER=${srcdir}/composer-dist.json" />
|
||||
</phingcall>
|
||||
<exec executable="ln" passthru="true" dir="${builddir}/export/${shortversion}">
|
||||
<arg line="-s seeddms-${version} seeddms" />
|
||||
</exec>
|
||||
<exec executable="ln" passthru="true" dir="${builddir}/export/${shortversion}/www">
|
||||
<arg line="-s ../seeddms/op" />
|
||||
</exec>
|
||||
<exec executable="ln" passthru="true" dir="${builddir}/export/${shortversion}/www">
|
||||
<arg line="-s ../seeddms/out" />
|
||||
</exec>
|
||||
<exec executable="ln" passthru="true" dir="${builddir}/export/${shortversion}/www">
|
||||
<arg line="-s ../seeddms/inc" />
|
||||
</exec>
|
||||
<exec executable="ln" passthru="true" dir="${builddir}/export/${shortversion}/www">
|
||||
<arg line="-s ../seeddms/controllers" />
|
||||
</exec>
|
||||
<exec executable="ln" passthru="true" dir="${builddir}/export/${shortversion}/www">
|
||||
<arg line="-s ../seeddms/languages" />
|
||||
</exec>
|
||||
<exec executable="ln" passthru="true" dir="${builddir}/export/${shortversion}/www">
|
||||
<arg line="-s ../seeddms/views" />
|
||||
</exec>
|
||||
<exec executable="ln" passthru="true" dir="${builddir}/export/${shortversion}/www">
|
||||
<arg line="-s ../seeddms/restapi" />
|
||||
</exec>
|
||||
<exec executable="ln" passthru="true" dir="${builddir}/export/${shortversion}/www">
|
||||
<arg line="-s ../seeddms/styles" />
|
||||
</exec>
|
||||
<exec executable="ln" passthru="true" dir="${builddir}/export/${shortversion}/www">
|
||||
<arg line="-s ../seeddms/install" />
|
||||
</exec>
|
||||
<exec executable="ln" passthru="true" dir="${builddir}/export/${shortversion}/www">
|
||||
<arg line="-s ../seeddms/webdav" />
|
||||
</exec>
|
||||
<exec executable="ln" passthru="true" dir="${builddir}/export/${shortversion}/www">
|
||||
<arg line="-s ../seeddms/www/index.php" />
|
||||
</exec>
|
||||
<exec executable="ln" passthru="true" dir="${builddir}/export/${shortversion}/www">
|
||||
<arg line="-s ../seeddms/www/.htaccess" />
|
||||
</exec>
|
||||
</else>
|
||||
</if>
|
||||
|
||||
<exec command="cat ${srcdir}/install/create_tables-sqlite3.sql | sqlite3 ${builddir}/export/${shortversion}/data/content.db" />
|
||||
<!-- create initial empty database -->
|
||||
<echo message="Creating sqlite3 database ..." />
|
||||
<exec executable="bash" passthru="true">
|
||||
<arg value="-c"/>
|
||||
<arg line='"cat ${srcdir}/install/create_tables-sqlite3.sql | sqlite3 ${builddir}/export/${shortversion}/data/content.db"' />
|
||||
</exec>
|
||||
|
||||
<!-- build the standard tar.gz archive -->
|
||||
<echo message="Building .tar.gz...." />
|
||||
<exec command="cd ${builddir}/export ; tar czf ${builddir}/packages/seeddms-quickstart-${version}.tar.gz ${shortversion}" checkreturn="true" />
|
||||
<!-- build the standard tar.gz archive -->
|
||||
<echo message="Building .tar.gz ..." />
|
||||
<exec executable="tar" passthru="true" checkreturn="true" dir="${builddir}/export">
|
||||
<arg line="czf ../packages/seeddms-quickstart-${version}.tar.gz ${shortversion}" />
|
||||
</exec>
|
||||
<echo message="Built in ${builddir}/packages/seeddms-quickstart-${version}.tar.gz" />
|
||||
</target>
|
||||
|
||||
<target name="install" description="Install SeedDMS">
|
||||
<phingcall target="package">
|
||||
</phingcall>
|
||||
<exec executable="tar" passthru="true" checkreturn="true" dir="${installpath}">
|
||||
<arg line="-xzvf ${builddir}/packages/seeddms-quickstart-${version}.tar.gz ${shortversion} --strip-components=1" />
|
||||
</exec>
|
||||
<copy file="${srcdir}/conf/apache.virtualhost.template" tofile="${installpath}/conf/apache.virtualhost.conf">
|
||||
<filterchain>
|
||||
<replaceregexp>
|
||||
<regexp pattern="_INSTALL_PATH_" replace="${installpath}"/>
|
||||
<regexp pattern="_DOMAIN_" replace="${domain}"/>
|
||||
</replaceregexp>
|
||||
</filterchain>
|
||||
</copy>
|
||||
<exec executable="bash" passthru="true" dir="${installpath}">
|
||||
<arg value="-c"/>
|
||||
<arg line="'sudo chown -R www-data:www-data ${installpath}/data ${installpath}/conf'" />
|
||||
</exec>
|
||||
<echo message="Create a link in /etc/apache2/sites-enabled/" />
|
||||
<echo message="sudo -u www-data ln -s ${installpath}/conf/apache.virtualhost.conf /etc/apache2/sites-enabled/001-seeddms.conf" />
|
||||
</target>
|
||||
</project>
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@
|
|||
},
|
||||
"require": {
|
||||
"robthree/twofactorauth": "^3.0",
|
||||
"pear/http_request2": "2.5.0",
|
||||
"robthree/twofactorauth": "^1.5",
|
||||
"slim/slim": "^4.0",
|
||||
"guzzlehttp/psr7": "*",
|
||||
"erusev/parsedown": "*",
|
||||
|
|
@ -28,7 +30,7 @@
|
|||
"php-di/php-di": "^6.4",
|
||||
"slim/psr7": "^1.7",
|
||||
"bacon/bacon-qr-code": "^3.0",
|
||||
"seeddms/core": "dev-master",
|
||||
"seeddms/core": "dev-__CORE_BRANCH__",
|
||||
"seeddms/lucene": "dev-master",
|
||||
"seeddms/preview": "dev-master",
|
||||
"seeddms/sqlitefts": "dev-master",
|
||||
|
|
|
|||
116
composer.json
Normal file
116
composer.json
Normal file
|
|
@ -0,0 +1,116 @@
|
|||
{
|
||||
"name": "seeddms/dms",
|
||||
"description": "Open Source Document Management System",
|
||||
"type": "project",
|
||||
"license": "GPL 2",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Uwe Steinmann",
|
||||
"email": "steinm@debian.org"
|
||||
}
|
||||
],
|
||||
"minimum-stability": "stable",
|
||||
"config": {
|
||||
"platform": {
|
||||
"php": "8.2"
|
||||
},
|
||||
"allow-plugins": {
|
||||
"composer/package-versions-deprecated": true,
|
||||
"wikimedia/composer-merge-plugin": true
|
||||
}
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.2.0",
|
||||
"phing/phing": "3.*",
|
||||
"pear/http_request2": "2.5.0",
|
||||
"robthree/twofactorauth": "^3.0",
|
||||
"php-mime-mail-parser/php-mime-mail-parser": "*",
|
||||
"slim/slim": "^4.0",
|
||||
"guzzlehttp/psr7": "*",
|
||||
"erusev/parsedown": "*",
|
||||
"erusev/parsedown-extra": "*",
|
||||
"mibe/feedwriter": "^1.1",
|
||||
"phpoffice/phpspreadsheet": "*",
|
||||
"sabre/xml": "*",
|
||||
"sabre/dav": "^4.",
|
||||
"pear/log": "*",
|
||||
"pear/mail": "*",
|
||||
"pear/mail_mime": "*",
|
||||
"pear/net_smtp": "*",
|
||||
"pear/auth_sasl": "*",
|
||||
"pear/db": "*",
|
||||
"dragonmantank/cron-expression": "^3.1",
|
||||
"alecrabbit/php-console-colour": "*",
|
||||
"zf1/zend-search-lucene": "*",
|
||||
"symfony/http-foundation": "^5.4",
|
||||
"php-di/php-di": "^6.4",
|
||||
"slim/psr7": "^1.7",
|
||||
"bacon/bacon-qr-code": "^3.0",
|
||||
"seeddms/core": "dev-seeddms-5.1.x",
|
||||
"seeddms/lucene": "dev-master",
|
||||
"seeddms/preview": "dev-master",
|
||||
"seeddms/sqlitefts": "dev-master",
|
||||
"seeddms/http_webdav_server": "dev-master"
|
||||
},
|
||||
"require-dev": {
|
||||
"composer/composer": "dev-main",
|
||||
"behat/mink": "1.8.1",
|
||||
"behat/mink-selenium2-driver": "1.4.0",
|
||||
"dmore/chrome-mink-driver": "2.8.0",
|
||||
"friendsofphp/php-cs-fixer": "3.87.2",
|
||||
"phpunit/phpunit": "9.5.9",
|
||||
"squizlabs/php_codesniffer": "3.6.0",
|
||||
"phpstan/phpstan": "^2.1"
|
||||
},
|
||||
"repositories": [
|
||||
{
|
||||
"type": "path",
|
||||
"url": "../core",
|
||||
"options": {
|
||||
"symlink": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "path",
|
||||
"url": "../lucene",
|
||||
"options": {
|
||||
"symlink": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "path",
|
||||
"url": "../preview",
|
||||
"options": {
|
||||
"symlink": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "path",
|
||||
"url": "../sqlitefts",
|
||||
"options": {
|
||||
"symlink": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "path",
|
||||
"url": "../http_webdav_server",
|
||||
"options": {
|
||||
"symlink": false
|
||||
}
|
||||
}
|
||||
],
|
||||
"extra": {
|
||||
"merge-plugin": {
|
||||
"include": [
|
||||
"composer.local.json"
|
||||
],
|
||||
"recurse": true,
|
||||
"replace": true,
|
||||
"ignore-duplicates": false,
|
||||
"merge-dev": true,
|
||||
"merge-extra": false,
|
||||
"merge-extra-deep": false,
|
||||
"merge-scripts": true
|
||||
}
|
||||
}
|
||||
}
|
||||
27
conf/apache.virtualhost.template
Normal file
27
conf/apache.virtualhost.template
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
<VirtualHost _default_:443>
|
||||
ServerName _DOMAIN_
|
||||
ErrorLog /var/log/apache2/seeddms-error.log
|
||||
CustomLog /var/log/apache2/seeddms-access.log combined
|
||||
|
||||
DocumentRoot _INSTALL_PATH_/www
|
||||
|
||||
SSLEngine on
|
||||
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
|
||||
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
|
||||
# SSLCertificateChainFile /just/if/needed/fullchain.cer
|
||||
|
||||
<Directory _INSTALL_PATH_>
|
||||
Options Indexes FollowSymLinks MultiViews
|
||||
AllowOverride All
|
||||
Require all granted
|
||||
</Directory>
|
||||
|
||||
<FilesMatch \.php$>
|
||||
# Apache 2.4.10+ can proxy to unix socket
|
||||
SetHandler "proxy:unix:/var/run/php/php8.2-fpm.sock|fcgi://localhost"
|
||||
</FilesMatch>
|
||||
|
||||
# Consider to install the webdav_checkout extension
|
||||
Alias /checkout _INSTALL_PATH_/www/ext/webdav_checkout/op/remote.php
|
||||
|
||||
</VirtualHost>
|
||||
|
|
@ -254,6 +254,29 @@ in your current installation with new versions from the quickstart archive.
|
|||
contain database updates.
|
||||
|
||||
|
||||
Installing from git
|
||||
====================
|
||||
|
||||
SeedDMS is hosted at https://codeberg.org/SeedDMS
|
||||
|
||||
In order to install SeedDMS you need to:
|
||||
|
||||
1. Create a directory, e.g. seeddms
|
||||
`mkdir seeddms`
|
||||
2. Change into that directory
|
||||
`cd seeddms`
|
||||
3. Clone the various SeedDMS repositories
|
||||
`git clone https://codeberg.org/SeedDMS/seeddms.git`
|
||||
`git clone -b seeddms-5.1.x https://codeberg.org/SeedDMS/core.git`
|
||||
`git clone https://codeberg.org/SeedDMS/preview.git`
|
||||
`git clone https://codeberg.org/SeedDMS/lucene.git`
|
||||
`git clone https://codeberg.org/SeedDMS/ѕqlitefts.git`
|
||||
`git clone https://codeberg.org/SeedDMS/http_webdav_server.git`
|
||||
4. Run composer
|
||||
`composer update`
|
||||
5. Create an installable distribution
|
||||
`vendor/bin/phing -Dversion=$(php -r 'include "inc/inc.Version.php"; echo (new SeedDMS_Version())->version();') package`
|
||||
|
||||
THE LONG STORY
|
||||
================
|
||||
|
||||
|
|
|
|||
|
|
@ -93,6 +93,18 @@ class SeedDMS_Download_Mgr {
|
|||
*/
|
||||
protected $filenames;
|
||||
|
||||
/**
|
||||
* @var bool $includereviewers whether to include reviewers
|
||||
* @access protected
|
||||
*/
|
||||
protected $includereviewers;
|
||||
|
||||
/**
|
||||
* @var bool $includeapprovers whether to include approvers
|
||||
* @access protected
|
||||
*/
|
||||
protected $includeapprovers;
|
||||
|
||||
/**
|
||||
* @var boolean $skipdefaultcols skip default columns, will only export extracols
|
||||
* @access protected
|
||||
|
|
|
|||
|
|
@ -1875,13 +1875,13 @@ class Settings { /* {{{ */
|
|||
* Check if extension is disabled
|
||||
*
|
||||
* @param string $extname name of extension
|
||||
* @return true if extension is disabled
|
||||
* @return true if extension is disabled or extension could not be found in configuration
|
||||
*/
|
||||
public function extensionIsDisabled($extname) { /* {{{ */
|
||||
if(array_key_exists($extname, $this->_extensions))
|
||||
return $this->_extensions[$extname]['__disable__'];
|
||||
|
||||
return false;
|
||||
return true;
|
||||
} /* }}} */
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -22,11 +22,17 @@ $extMgr = new SeedDMS_Extension_Mgr($settings->_rootDir."/ext", $settings->_cach
|
|||
$version = new SeedDMS_Version;
|
||||
|
||||
foreach($extMgr->getExtensionConfiguration() as $extname=>$extconf) {
|
||||
if($extconf['disable']) {
|
||||
$settings->disableExtension($extname);
|
||||
continue;
|
||||
}
|
||||
if(!$settings->extensionIsDisabled($extname)) {
|
||||
$disabled = true;
|
||||
$disabled = false;
|
||||
if($extMgr->checkExtensionByName($extname, $extconf)) {
|
||||
$disabled = false;
|
||||
$settings->enableExtension($extname);
|
||||
} else {
|
||||
$disabled = true;
|
||||
$settings->disableExtension($extname);
|
||||
// echo $extMgr->getErrorMsg();
|
||||
}
|
||||
|
|
@ -66,5 +72,9 @@ foreach($extMgr->getExtensionConfiguration() as $extname=>$extconf) {
|
|||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Ensure $settings->_extensions has an entry for the extension, even if
|
||||
// the extension is disabled already.
|
||||
$settings->disableExtension($extname);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ if($settings->_dbDriver == 'sqlite' && empty($settings->_dbDatabase)) {
|
|||
$settings->_dbDatabase = $__datadir."/content.db";
|
||||
}
|
||||
|
||||
ini_set('include_path', $settings->_rootDir.'pear'. PATH_SEPARATOR .ini_get('include_path'));
|
||||
ini_set('include_path', $settings->_rootDir.'..'. PATH_SEPARATOR .ini_get('include_path'));
|
||||
if(!empty($settings->_extraPath)) {
|
||||
ini_set('include_path', $settings->_extraPath. PATH_SEPARATOR .ini_get('include_path'));
|
||||
}
|
||||
|
|
@ -75,12 +75,8 @@ if(isset($settings->_maxExecutionTime)) {
|
|||
* relative to it.
|
||||
*/
|
||||
ini_set('include_path', $settings->_rootDir. PATH_SEPARATOR .ini_get('include_path'));
|
||||
/* Add root Dir.'../pear'. Needed because the SeedDMS_Core, etc. are included
|
||||
* relative to it.
|
||||
*/
|
||||
ini_set('include_path', $settings->_rootDir.'../pear'. PATH_SEPARATOR .ini_get('include_path'));
|
||||
|
||||
/* composer is installed in pear directory, but install tool does not need it */
|
||||
/* composer is installed in vendor directory, but install tool does not need it */
|
||||
if(!defined("SEEDDMS_INSTALL"))
|
||||
require_once 'vendor/autoload.php';
|
||||
|
||||
|
|
|
|||
|
|
@ -247,7 +247,9 @@ $status = isset($get['status']) ? $get['status'] : array();
|
|||
//
|
||||
// Default page to display is always one.
|
||||
$pageNumber=1;
|
||||
if (isset($get["pg"])) {
|
||||
if (isset($get['action']) && $get['action'] == 'export') {
|
||||
$pageNumber = 'all';
|
||||
} elseif (isset($get["pg"])) {
|
||||
if (is_numeric($get["pg"]) && $get["pg"]>0) {
|
||||
$pageNumber = (int) $get["pg"];
|
||||
}
|
||||
|
|
@ -368,7 +370,7 @@ if($fullsearch) {
|
|||
'filesize_start'=>$filesize['from'],
|
||||
'filesize_end'=>$filesize['to'],
|
||||
'attributes'=>$attributes
|
||||
), ($pageNumber == 'all' ? array() : array('limit'=>$limit, 'offset'=>$limit * ($pageNumber-1))), $order);
|
||||
), ($pageNumber == 'all' ? array('limit'=>1000) : array('limit'=>$limit, 'offset'=>$limit * ($pageNumber-1))), $order);
|
||||
if($searchresult === false) {
|
||||
$session->setSplashMsg(array('type'=>'error', 'msg'=>getMLText('splash_invalid_searchterm')));
|
||||
$dcount = 0;
|
||||
|
|
|
|||
|
|
@ -268,6 +268,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Theme_Style {
|
|||
echo "SeedDMSUpload.setMaxFileSizeMsg('".getMLText("uploading_maxsize")."');";
|
||||
}
|
||||
?>
|
||||
|
||||
$(document).ready( function() {
|
||||
$("#form1").validate({
|
||||
ignore: [],
|
||||
|
|
@ -640,7 +641,7 @@ $(document).ready( function() {
|
|||
$this->contentHeading(getMLText("preview"));
|
||||
?>
|
||||
<div style="width:100%; height: 0; position:relative; padding-top: 141%;">
|
||||
<iframe src="<?= $settings->_httpRoot ?>pdfviewer/web/viewer.html?file=<?php echo urlencode($settings->_httpRoot.'op/op.ViewOnline.php?documentid='.$latestContent->getDocument()->getID().'&version='.$latestContent->getVersion()); ?>" _width="100%" _height="100%" style="position: absolute; top: 0; left: 0; bottom: 0; right: 0; width: 100%; height: 100%"></iframe>
|
||||
<iframe src="<?= $settings->_httpRoot ?>ext/pdfviewer/res/web/viewer.html?file=<?php echo urlencode($settings->_httpRoot.'op/op.ViewOnline.php?documentid='.$latestContent->getDocument()->getID().'&version='.$latestContent->getVersion()); ?>" _width="100%" _height="100%" style="position: absolute; top: 0; left: 0; bottom: 0; right: 0; width: 100%; height: 100%"></iframe>
|
||||
</div>
|
||||
<?php
|
||||
break;
|
||||
|
|
@ -667,7 +668,7 @@ $(document).ready( function() {
|
|||
if(is_string($txt))
|
||||
echo $txt;
|
||||
|
||||
if($converttopdf) {
|
||||
if($converttopdf && !$settings->extensionIsDisabled('pdfviewer')) {
|
||||
$pdfpreviewer = new SeedDMS_Preview_PdfPreviewer($cachedir, $timeout, $xsendfile);
|
||||
if($conversionmgr)
|
||||
$pdfpreviewer->setConversionMgr($conversionmgr);
|
||||
|
|
@ -677,7 +678,7 @@ $(document).ready( function() {
|
|||
$this->contentHeading(getMLText("preview_pdf"));
|
||||
?>
|
||||
<div style="width:100%; height: 0; position:relative; padding-top: 141%;">
|
||||
<iframe src="<?= $settings->_httpRoot ?>pdfviewer/web/viewer.html?file=<?php echo urlencode($settings->_httpRoot.'op/op.PdfPreview.php?documentid='.$latestContent->getDocument()->getID().'&version='.$latestContent->getVersion()); ?>" _width="100%" _height="700px" style="position: absolute; top: 0; left: 0; bottom: 0; right: 0; width: 100%; height: 100%"></iframe>
|
||||
<iframe src="<?= $settings->_httpRoot ?>ext/pdfviewer/res/web/viewer.html?file=<?php echo urlencode($settings->_httpRoot.'op/op.PdfPreview.php?documentid='.$latestContent->getDocument()->getID().'&version='.$latestContent->getVersion()); ?>" _width="100%" _height="700px" style="position: absolute; top: 0; left: 0; bottom: 0; right: 0; width: 100%; height: 100%"></iframe>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,13 +27,13 @@ RewriteRule "^out/images.*$" "-" [L]
|
|||
RewriteRule "^styles/.*$" "-" [L]
|
||||
|
||||
# Accessing a file in an extension is only possible in one
|
||||
# of the directories op, out. res
|
||||
# of the directories op, out, res, node_modules
|
||||
# Added for old extensions which do not use routes
|
||||
RewriteRule ^ext/[^/]+/icon.(?:png|svg)$ - [L]
|
||||
RewriteCond %{REQUEST_URI} "ext/[^/]+/"
|
||||
RewriteRule !^ext/[^/]+/.*(?:op|out|res|node_modules) - [F]
|
||||
RewriteCond %{REQUEST_URI} "ext/[^/]+/res/.*$" [NC]
|
||||
RewriteRule !^ext/[^/]+/res/.*\.(?:css|js|png|gif|svg|ico|html|woff|ttf) - [F]
|
||||
RewriteRule !^ext/[^/]+/res/.*\.(?:css|js|mjs|ftl|png|gif|svg|ico|html|woff|ttf) - [F]
|
||||
RewriteCond %{REQUEST_FILENAME} -f
|
||||
RewriteRule ^ext/.*$ - [L]
|
||||
|
||||
Loading…
Reference in New Issue
Block a user