diff --git a/.devcontainer/Containerfile b/.devcontainer/Containerfile deleted file mode 100644 index dbe6b4bb2..000000000 --- a/.devcontainer/Containerfile +++ /dev/null @@ -1,45 +0,0 @@ -# Containerfile -# podman image build -q -t debian:podman-trixie -f Containerfile . -# podman run -q -it --rm --device /dev/fuse debian:podman-trixie - # in development container e.g. -FROM debian:trixie - -ENV DEBIAN_FRONTEND="noninteractive" - -RUN apt-get update && \ - apt-get install -y --no-install-recommends podman podman-compose \ - fuse-overlayfs slirp4netns uidmap iptables aardvark-dns nftables ca-certificates sudo \ - git ssh && \ - apt-get upgrade -y - -RUN useradd webgui -s /bin/bash && \ - echo "webgui:1001:64535" > /etc/subuid && \ - echo "webgui:1001:64535" > /etc/subgid - -ARG _REPO_URL="https://raw.githubusercontent.com/containers/image_build/refs/heads/main/podman" -ADD $_REPO_URL/containers.conf /etc/containers/containers.conf -ADD $_REPO_URL/podman-containers.conf /home/webgui/.config/containers/containers.conf - -RUN mkdir -p /home/webgui/.local/share/containers && \ - chown webgui:webgui -R /home/webgui && \ - chmod 0644 /etc/containers/containers.conf - -VOLUME /home/webgui/.local/share/containers - -# Replace setuid bits by proper file capabilities for uidmap binaries. -# See . -RUN apt-get install -y libcap2-bin && \ - chmod 0755 /usr/bin/newuidmap /usr/bin/newgidmap && \ - setcap cap_setuid=ep /usr/bin/newuidmap && \ - setcap cap_setgid=ep /usr/bin/newgidmap && \ - apt-get autoremove --purge -y libcap2-bin - -ENV _CONTAINERS_USERNS_CONFIGURED="" - -RUN SNIPPET="export PROMPT_COMMAND='history -a' && \ - export HISTFILE=/commandhistory/.bash_history" && \ - echo "$SNIPPET" >> "/root/.bashrc" - -#USER webgui -#WORKDIR /home/webgui - diff --git a/.devcontainer/compose.yml b/.devcontainer/compose.yml deleted file mode 100644 index 88d121223..000000000 --- a/.devcontainer/compose.yml +++ /dev/null @@ -1,23 +0,0 @@ -# compose.yml -version: '3.8' -volumes: - projectname-bashhistory: # Define named volume for bash history - -# Note: The 'bashhistory' service is used to persist bash history data across different containers. -services: -# bashhistory: -# volumes: -# - projectname-bashhistory:/commandhistory:z # Mount the named volume to /commandhistory in bashhistory service - - devcontainer: - container_name: devcontainer - privileged: true - hostname: devcontainer - build: - context: . - dockerfile: Containerfile - volumes: - - ..:/workspace:cached # Mount parent directory to workspace - - projectname-bashhistory:/commandhistory:z # Mount the named volume to /commandhistory in devcontainer service - command: sleep infinity - diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json deleted file mode 100644 index 32ceba81b..000000000 --- a/.devcontainer/devcontainer.json +++ /dev/null @@ -1,35 +0,0 @@ -// devcontainer.json -// For format details, see https://aka.ms/devcontainer.json. For config options, see the -// README at: https://github.com/devcontainers/templates/tree/main/src/debian -{ - "name": "devcontainer", - // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile -// "image": "mcr.microsoft.com/devcontainers/base:trixie" -// "build": { -// "dockerfile": "Dockerfile" -// } - "dockerComposeFile": "compose.yml", - "service": "devcontainer", - - // default workspace path in container to open - "workspaceFolder": "/workspace", //${localWorkspaceFolder}" - -// "mounts": [ -// "source=projectname-bashhistory,target=/commandhistory,type=volume" -// ], - "postCreateCommand": { - "Fix Volume Permissions": "chown -R $(whoami): /commandhistory" - } - - // Features to add to the dev container. More info: https://containers.dev/features. - // "features": {}, - - // Use 'forwardPorts' to make a list of ports inside the container available locally. - // "forwardPorts": [], - - // Configure tool-specific properties. - // "customizations": {}, - - // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. - // "remoteUser": "root" -} diff --git a/.devcontainer/memory/MEMORY.md b/.devcontainer/memory/MEMORY.md deleted file mode 100644 index dcfb49d98..000000000 --- a/.devcontainer/memory/MEMORY.md +++ /dev/null @@ -1 +0,0 @@ -- [Uses podman not docker](user_podman.md) — uses podman and podman-compose instead of Docker diff --git a/.devcontainer/memory/user_podman.md b/.devcontainer/memory/user_podman.md deleted file mode 100644 index 9c61c1eba..000000000 --- a/.devcontainer/memory/user_podman.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: user_podman -description: User uses podman and podman-compose, not Docker -metadata: - type: user ---- - -Uses **podman** and **podman-compose** for containerization, not Docker/Docker Compose. Compose file format is identical but the runtime and tooling is different. diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index e09cf7093..000000000 --- a/.dockerignore +++ /dev/null @@ -1,15 +0,0 @@ -# https://medium.com/@bounouh.fedi/mastering-the-dockerignore-file-boosting-docker-build-efficiency-398719f4a0e1 - -# Ignore version control (directories), not needed in container -.git -.git/ -.gitignore - -# If we're cacheing cpan modules, so they are not downloaded every time -# ignore these caches in the container -.cpanrc -cpan-cache/ - -# Ignore Docker-related files -Dockerfile* -.dockerignore diff --git a/.gitignore b/.gitignore index cc8592348..8a1ea4776 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ .DS_Store /*.kpf -www/uploads/temp diff --git a/CONTEXT.md b/CONTEXT.md deleted file mode 100644 index 3ce0b3616..000000000 --- a/CONTEXT.md +++ /dev/null @@ -1,36 +0,0 @@ -# Project Context & Configuration - -## 🛠️ Environment & Tech Stack -- **Containerization:** **Podman** - - -## Directory Structure & Key Files -- `CONTEXT.md`, this file -- `README.md` of the WebGUI project -- `distribution/docker-compose.yml` Current orchestration -- `Dockerfile` - the Dockerfile of the WebGUI container -- the custom folder contains all files related to custom modules add to WebGUI -- the distribution folder contains -- - `nginx/nginx.conf` - configuration file for nginx in seperate pod -- - `share/create.sql` - the create database file so mariadb can function as a database service for WebGUI -- - `webgui/entrypoint` - the script that runs when the WebGUI service starts -- - `webgui/modperl.pl` - an apache2 webserver configuration script used by WebGUI -- - `webgui/webgui.conf` - an apache2 webserver configuration file for WebGUI -- - `webgui/www.example.com/conf` - an example configuration file for a specific domain to use WebGUI -- the `docs` folder is part of the WebGUI system, it contains -- - the changelogs, the upgrade scripts, several database dumps and descriptive files -- the `etc` contains the configuration files for the domains that use WebGUI -- the `lib` folder contains all the WebGUI code -- the `sbin` folder contains WebGUI helper scripts -- the `share` folder contains several files for the WebGUI service and the nginx reverse proxy service to work in conjunction -- the `t` folder contains WebGUI tests -- the `www` folder contains static files served by WebGUI - - -### 1. Current project goals -- part of this repository is WebGUI, as described in README.md -- right now, we are not concerned with changeing the WebGUI codebase -- currently the only goal is to optimize the build process of WebGUI in a podman pod and -- the orchestration so the WebGUI service runs well configured with -- mariadb database service and -- nginx reverse proxy \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 33d07a262..c48406560 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,19 +1,14 @@ -# Podman Containerfile -# build via compose.yml or: -# podman image build -q -t debian:podman-trixie -f Containerfile . -FROM debian:trixie +FROM debian:latest -ENV DEBIAN_FRONTEND="noninteractive" +ENV DEBIAN_FRONTEND=noninteractive RUN apt update && apt -y install perl cpanminus libaspell-dev make libdbd-mysql-perl libdigest-perl-md5-perl libxml-simple-perl \ libmodule-install-perl gcc libperl-dev default-libmysqlclient-dev libpng-dev build-essential libgd-dev mariadb-client imagemagick \ libpng-dev libjpeg-dev libtiff-dev libapache2-mod-perl2 libapache2-mod-perl2-dev libapache2-request-perl libimage-magick-perl vim \ - apache2 apache2-utils mailutils \ -# could be removed for production: - curl procps + apache2 apache2-utils -RUN cpanm --notest --no-cache --force \ +RUN cpanm --notest --force \ Algorithm::Permute \ App::Cmd \ Archive::Any \ @@ -84,7 +79,6 @@ RUN cpanm --notest --no-cache --force \ List::MoreUtils \ Locales \ Log::Log4perl \ - Mail::DeliveryStatus::BounceParser \ MIME::Tools \ Module::Find \ Monkey::Patch \ @@ -146,9 +140,6 @@ RUN cpanm --notest --no-cache --force \ common::sense \ namespace::autoclean -RUN apt -y remove libjson-xs-perl -RUN apt-get clean -RUN rm -rf /var/lib/apt/lists/* #RUN cpanm --notest --force \ # DBD::mysql@4.051 @@ -173,11 +164,6 @@ RUN useradd --home=/data/WebGUI webgui; chown -R webgui: /data/WebGUI; chmod 755 #USER webgui -# zorgt voor een andere shell prompt in de container gestart in de development container -# ook wanneer die in dezelfde UTC namespace zit - always /after/ USER command -ENV CONTAINER_CONTEXT=inner -RUN printf '%s\n' 'export PS1="\u@${CONTAINER_CONTEXT}:\w\\$ "' >> ~/.bashrc - WORKDIR /data/WebGUI CMD [ "/entrypoint" ] diff --git a/custom/webgui_newsletter b/custom/webgui_newsletter index 67b881f4c..abaa483aa 160000 --- a/custom/webgui_newsletter +++ b/custom/webgui_newsletter @@ -1 +1 @@ -Subproject commit 67b881f4cfc0baf8965aed3f979b929d303d2487 +Subproject commit abaa483aa34e10c1473968dc6f0373cfb7527a31 diff --git a/custom/webgui_specialstate b/custom/webgui_specialstate index 4ebd86d60..ade1aab77 160000 --- a/custom/webgui_specialstate +++ b/custom/webgui_specialstate @@ -1 +1 @@ -Subproject commit 4ebd86d6076647f2b66facc9f071869dd521a794 +Subproject commit ade1aab77063c56cf6ddcc7a69956179e7c3dbe5 diff --git a/distribution/docker-compose.yml b/distribution/docker-compose.yml index 2d64ab285..9fa9ddcd4 100644 --- a/distribution/docker-compose.yml +++ b/distribution/docker-compose.yml @@ -13,13 +13,10 @@ services: volumes: - ./share/create.sql:/docker-entrypoint-initdb.d/1.sql ports: - - 3306:3306 + - 3306 webgui: - image: webgui:latest - build: - context: .. - dockerfile: Dockerfile + image: webgui container_name: webgui depends_on: - db @@ -29,7 +26,7 @@ services: - "80" nginx-proxy: - image: docker.io/nginx:latest + image: nginx:latest container_name: nginx_proxy depends_on: - webgui @@ -41,4 +38,4 @@ services: #- "443:443" # TODO: serve staatic files directly from nginx #- ./www:/var/www/html:ro - + \ No newline at end of file diff --git a/distribution/webgui/entrypoint b/distribution/webgui/entrypoint index 9a0c73aec..73307ffee 100644 --- a/distribution/webgui/entrypoint +++ b/distribution/webgui/entrypoint @@ -1,6 +1,6 @@ #!/bin/bash -# script that runs when the podman container starts +# script that runs when the docker container starts echo "Starting WebGUI entrypoint script with:" perl -Ilib sbin/wgd ls echo "Starting WebGUI entrypoint script..." @@ -29,16 +29,8 @@ for configfile in `perl -Ilib sbin/wgd for-each`;do ## perl -Ilib sbin/wgd db --config-file=www.example.com --webgui-root=/data/WebGUI - #install newsletter module - perl -I /data/WebGUI/lib -I /data/WebGUI/custom/webgui_newsletter/lib /data/WebGUI/custom/webgui_newsletter/sbin/install_icons.pl --customRoot=/data/WebGUI/custom - - cd /data/WebGUI/lib - perl -I /data/WebGUI/lib -I /data/WebGUI/custom/webgui_newsletter/lib /data/WebGUI/custom/webgui_newsletter/sbin/install_newsletter.pl --configFile=www.example.com.conf fi - - - done perl -I/data/WebGUI/lib sbin/spectre.pl --daemon diff --git a/distribution/webgui/www.example.com.conf b/distribution/webgui/www.example.com.conf index 775a8459b..6e10ed141 100644 --- a/distribution/webgui/www.example.com.conf +++ b/distribution/webgui/www.example.com.conf @@ -1,6 +1,6 @@ -ServerName localhost -ServerAlias webgui www.example.com example.com unitedknowledge.vps2.unitedknowledge.net www.unitedknowledge.eu unitedknowledge.eu www.united-knowledge.eu united-knowledge.eu www.unitedknowledge.net unitedknowledge.net +ServerName www.example.com +ServerAlias webgui localhost example.com unitedknowledge.vps2.unitedknowledge.net www.unitedknowledge.eu unitedknowledge.eu www.united-knowledge.eu united-knowledge.eu www.unitedknowledge.net unitedknowledge.net DocumentRoot /data/WebGUI/www SetEnvIf SSLPROXY "1" \ SSLPROXY diff --git a/etc/log.conf b/etc/log.conf index dceeffeda..ab64ca799 100644 --- a/etc/log.conf +++ b/etc/log.conf @@ -4,7 +4,7 @@ # system is capable of. To unleash the full power read the config file manual # http://log4perl.sourceforge.net/releases/Log-Log4perl/docs/html/Log/Log4perl/Config.html -log4perl.logger = WARN, mainlog +log4perl.logger = ERROR, mainlog log4perl.appender.mainlog = Log::Log4perl::Appender::File log4perl.appender.mainlog.filename = /var/log/webgui.log log4perl.appender.mainlog.layout = PatternLayout diff --git a/etc/www.example.com.conf b/etc/www.example.com.conf index 000b071d7..bd83e4276 100644 --- a/etc/www.example.com.conf +++ b/etc/www.example.com.conf @@ -1,593 +1,1092 @@ # config-file-type: JSON 1 { - "account" : [ - { - "className" : "WebGUI::Account::Profile", - "identifier" : "profile", - "title" : "^International(title,Account_Profile);" - }, - { - "className" : "WebGUI::Account::Inbox", - "identifier" : "inbox", - "title" : "^International(title,Account_Inbox);" - }, - { - "className" : "WebGUI::Account::Friends", - "identifier" : "friends", - "title" : "^International(title,Account_Friends);" - }, - { - "className" : "WebGUI::Account::Contributions", - "identifier" : "contributions", - "title" : "^International(title,Account_Contributions);" - }, - { - "className" : "WebGUI::Account::Shop", - "identifier" : "shop", - "title" : "^International(title,Account_Shop);" - }, - { - "className" : "WebGUI::Account::User", - "identifier" : "user", - "title" : "^International(title,Account_User);" - }, - { - "className" : "WebGUI::Account::FriendManager", - "identifier" : "friendManager", - "title" : "^International(title,Account_FriendManager);" - } - ], - "adminConsole" : { - "activeSessions" : { - "groupSetting" : "groupIdAdminActiveSessions", - "icon" : "activeSessions.gif", - "title" : "^International(425,WebGUI);", - "uiLevel" : 5, - "url" : "^PageUrl(\"\",op=viewActiveSessions);" - }, - "adSpace" : { - "groupSetting" : "groupIdAdminAdSpace", - "icon" : "advertising.gif", - "title" : "^International(topicName,AdSpace);", - "uiLevel" : 5, - "url" : "^PageUrl(\"\",op=manageAdSpaces);" - }, - "addons" : { - "group" : "12", - "icon" : "addons.png", - "title" : "^International(Addons title,WebGUI);", - "uiLevel" : 1, - "url" : "http://www.webgui.org/addons" - }, - "adminConsoleOff" : { - "group" : "12", - "icon" : "adminConsoleOff.gif", - "title" : "^International(12,WebGUI);", - "uiLevel" : 1, - "url" : "^PageUrl(\"\",op=switchOffAdmin);" - }, - "assetHistory" : { - "groupSetting" : "groupIdAdminHistory", - "icon" : "assetHistory.gif", - "title" : "^International(assetHistory,Asset);", - "uiLevel" : 5, - "url" : "^PageUrl(\"\",op=assetHistory);" - }, - "assets" : { - "group" : "12", - "icon" : "assets.gif", - "title" : "^International(assets,Asset);", - "uiLevel" : 5, - "url" : "^PageUrl(\"\",op=assetManager);" - }, - "cache" : { - "groupSetting" : "groupIdAdminCache", - "icon" : "cache.gif", - "title" : "^International(manage cache,WebGUI);", - "uiLevel" : 5, - "url" : "^PageUrl(\"\",op=manageCache);" - }, - "clipboard" : { - "group" : "12", - "icon" : "clipboard.gif", - "title" : "^International(948,WebGUI);", - "uiLevel" : 5, - "url" : "^PageUrl(\"\",func=manageClipboard);" - }, - "contentFilters" : { - "groupSetting" : "groupIdAdminReplacements", - "icon" : "contentFilters.gif", - "title" : "^International(content filters,WebGUI);", - "uiLevel" : 3, - "url" : "^PageUrl(\"\",op=listReplacements);" - }, - "contentProfiling" : { - "group" : "4", - "icon" : "contentProfiling.gif", - "title" : "^International(content profiling,Asset);", - "uiLevel" : 5, - "url" : "^PageUrl(\"\",func=manageMetaData);" - }, - "cron" : { - "groupSetting" : "groupIdAdminCron", - "icon" : "cron.gif", - "title" : "^International(topicName,Workflow_Cron);", - "uiLevel" : 9, - "url" : "^PageUrl(\"\",op=manageCron);" - }, - "databases" : { - "groupSetting" : "groupIdAdminDatabaseLink", - "icon" : "databases.gif", - "title" : "^International(databases,WebGUI);", - "uiLevel" : 9, - "url" : "^PageUrl(\"\",op=listDatabaseLinks);" - }, - "filePump" : { - "groupSetting" : "groupIdAdminFilePump", - "icon" : "filePump.png", - "title" : "^International(File Pump,FilePump);", - "uiLevel" : 5, - "url" : "^PageUrl(\"\",op=filePump);" - }, - "graphics" : { - "groupSetting" : "groupIdAdminGraphics", - "icon" : "graphics.gif", - "title" : "^International(manage graphics,Graphics);", - "uiLevel" : 5, - "url" : "^PageUrl(\"\",op=listGraphicsOptions);" - }, - "groups" : { - "groupSetting" : "groupIdAdminGroup", - "icon" : "groups.gif", - "title" : "^International(89,WebGUI);", - "uiLevel" : 5, - "url" : "^PageUrl(\"\",op=listGroups);" - }, - "help" : { - "groupSetting" : "groupIdAdminHelp", - "icon" : "help.gif", - "title" : "^International(help,WebGUI);", - "uiLevel" : 1, - "url" : "^PageUrl(\"\",op=viewHelpIndex);" - }, - "inbox" : { - "group" : "2", - "icon" : "inbox.gif", - "title" : "^International(159,WebGUI);", - "uiLevel" : 1, - "url" : "^PageUrl(\"\",op=viewInbox);" - }, - "ldapconnections" : { - "groupSetting" : "groupIdAdminLDAPLink", - "icon" : "ldap.gif", - "title" : "^International(ldapconnections,AuthLDAP);", - "uiLevel" : 9, - "url" : "^PageUrl(\"\",op=listLDAPLinks);" - }, - "loginHistory" : { - "groupSetting" : "groupIdAdminLoginHistory", - "icon" : "loginHistory.gif", - "title" : "^International(426,WebGUI);", - "uiLevel" : 5, - "url" : "^PageUrl(\"\",op=viewLoginHistory);" - }, - "mailable" : { - "groupSetting" : "mailingManagerGroupId", - "icon" : "newsletter.gif", - "title" : "Newsletter", - "uiLevel" : 7, - "url" : "^PageUrl(\"\",newsletter=manage);" - }, - "passiveAnalytics" : { - "groupSetting" : "3", - "icon" : "passiveAnalytics.png", - "title" : "^International(Passive Analytics,PassiveAnalytics);", - "uiLevel" : 1, - "url" : "^PageUrl(\"\",op=passiveAnalytics;func=editRuleflow);" - }, - "settings" : { - "group" : "3", - "icon" : "settings.gif", - "title" : "^International(settings,WebGUI);", - "uiLevel" : 5, - "url" : "^PageUrl(\"\",op=editSettings);" - }, - "shop" : { - "groupSetting" : "groupIdAdminCommerce", - "icon" : "shop.gif", - "title" : "^International(shop,Shop);", - "uiLevel" : 5, - "url" : "^PageUrl(\"\",shop=admin);" - }, - "spectre" : { - "groupSetting" : "groupIdAdminSpectre", - "icon" : "spectre.gif", - "title" : "^International(spectre,Spectre);", - "uiLevel" : 9, - "url" : "^PageUrl(\"\",op=spectreStatus);" - }, - "statistics" : { - "groupSetting" : "groupIdAdminStatistics", - "icon" : "statistics.gif", - "title" : "^International(437,WebGUI);", - "uiLevel" : 1, - "url" : "^PageUrl(\"\",op=viewStatistics);" - }, - "trash" : { - "group" : "12", - "icon" : "trash.gif", - "title" : "^International(trash,WebGUI);", - "uiLevel" : 5, - "url" : "^PageUrl(\"\",func=manageTrash);" - }, - "userProfiling" : { - "groupSetting" : "groupIdAdminProfileSettings", - "icon" : "userProfiling.gif", - "title" : "^International(user profiling,WebGUIProfile);", - "uiLevel" : 5, - "url" : "^PageUrl(\"\",op=editProfileSettings);" - }, - "users" : { - "groupSetting" : "groupIdAdminUser", - "icon" : "users.gif", - "title" : "^International(149,WebGUI);", - "uiLevel" : 5, - "url" : "^PageUrl(\"\",op=listUsers);" - }, - "versions" : { - "groupSetting" : "groupIdAdminVersionTag", - "icon" : "versionTags.gif", - "title" : "^International(version tags,VersionTag);", - "uiLevel" : 7, - "url" : "^PageUrl(\"\",op=manageVersions);" - }, - "workflow" : { - "groupSetting" : "groupIdAdminWorkflow", - "icon" : "workflow.gif", - "title" : "^International(topicName,Workflow);", - "uiLevel" : 7, - "url" : "^PageUrl(\"\",op=manageWorkflows);" - } + +# Add a comma separated list of the names this site can use. +# The first site in the list will be used as the default +# sitename for generating offline URLs and other functions. + +"sitename" : [ + "www.example.com", + "example.com", + "localhost" + ], + +# Set to 1 if you want to use WebGUI's SSL functions, including encrypting user logins. + +"sslEnabled" : 0, + +# Rename the WebGUI Session cookie if you like. + +"cookieName" : "wgSession", + +# Explicitly set the domain that the WebGUI session cookie +# should be assigned to. Defaults to the domain that the user +# is browsing the site under. + +# "cookieDomain" : ".example.com", + +# Explicitly set the time to live for the WebGUI session cookie +# Defaults to +10Y. cookieTTL must follow the described format: +# Format should match /^\+?(\d+)([YMDhms]?)$/ +# $2 qualifies the number in $1 as representing "Y"ears, +# "M"onths, "D"ays, "h"ours, "m"inutes, or "s"econds (if the qualifier is omitted, +# the number is interpreted as representing seconds). +# +1h = 1 hour +# +2D = 2 Days +# +3M = 3 Months +# +10Y = 10 Years (default) + +# This may also be set to the word "session" to have cookies live +# for the current browser session only. + +# "cookieTTL" : "+10Y", + +# The location where the WebGUI server will be handling +# requests. This is normally just '/' or the root of the +# server, but on some installations it might be /webgui or +# /site1, /site2, etc. If this is set to anything other than +# '/' then a matching block should +# contain the WebGUI handler instead in the Apache +# VirtualHost configuration. + +"gateway" : "/", + +# The relative or fully qualified URL to the extras folder +# that comes with WebGUI. + +"extrasURL" : "/extras", + +# The filesystem path to get to the extras folder that ships +# with WebGUI. + +"extrasPath" : "/data/WebGUI/www/extras", + +# The relative for fully qualified URL to the uploads folder +# for this site where all attachments will be stored. + +"uploadsURL" : "/uploads", + +# The filesystem path to get to the uploads folder where all +# attachments for this site will be stored. This needs to be +# writable by your web server. + +"uploadsPath" : "/data/WebGUI/www/uploads", + +# Set this value to 1 if you want rich editors to use the +# WebGUI asset URLs for images rather than their real URLs +# in the uploads folder. The advantage of this is that users +# see short clean WebGUI controlled URLs. However, this is +# slower than the default. + +"richEditorsUseAssetUrls" : 1, + +# Used to generate user facing URLs. +# If you are not running your web server on the standard +# port (80) then use this setting to specify that. If you +# are running WebGUI behind a proxy, then webServerPort should +# be set to which ever port the proxy is listening to. + +#"webServerPort" : 80, + +# What kind of cache do you wish to use? Available types are +# WebGUI::Cache::FileCache and WebGUI::Cache::Database. +# We highly recommend the database cache if you are running +# sites with more than a few hundred pages, or if you're +# running in a multi-server environment. The file cache is better +# for very small sites. + +"cacheType" : "WebGUI::Cache::FileCache", + +# Tell WebGUI where to store cached files. Defaults to the +# /tmp or c:\temp folder depending upon your operating system. + +# "fileCacheRoot" : "/path/to/cache", + +# Set this to 1 to disable WebGUI's caching subsystems. This is +# mainly useful for developers. + +"disableCache" : 0, + +# The database connection string. It usually takes the form of +# DBI::;host: + +"dsn" : "DBI:mysql:www_example_com;host=db", + +# The username to authenticate to the above database. + +"dbuser" : "webgui", + +# The password to authenticate to the above database. + +"dbpass" : "123qwe", + +# You can configure up to three read-only database slaves to +# increase WebGUI's read performance. + +# "dbslave1" : { +# "dsn" : "DBI:mysql:www_example_com;host=dbslave1.example.com", +# "user" : "webgui", +# "pass" : "password" +# }, + +# "dbslave2" : { +# "dsn" : "DBI:mysql:www_example_com;host=dbslave2.example.com", +# "user" : "webgui", +# "pass" : "password" +# }, + +# "dbslave3" : { +# "dsn" : "DBI:mysql:www_example_com;host=dbslave3.example.com", +# "user" : "webgui", +# "pass" : "password" +# }, + +# You can configure a backup master database as a failover in case +# your primary database goes down. WebGUI will use this database until +# the original becomes available. However, this does nothing to change +# the settings of your database. If it was set up as a slave until the +# master went down, then some script will have to be written to convert +# it from a slave to a master. + +# "failoverdb" : { +# "dsn" : "DBI:mysql:www_example_com;host=failover.example.com;port=3306", +# "user" : "webgui", +# "password" : "password" +# }, + +# If you have a multi-master set up, you must define increment_step and increment_offset +# to prevent merge conflicts between the different masters. increment_step should be set +# to the number of masters, and offset should be unique to each master, starting at 0. +# +# So, a 2-master cluster would define: +# Master 1: +# increment_step: 2 +# increment_offset: 0 +# Master 2: +# increment_step: 2 +# increment_offset: 1 +# +# "db" : { +# "increment_step" : 1, +# "increment_offset" : 0 +# }, + + +# Set this value if you wish to override all outbound emails to a specific +# user for testing purposes. + +# "emailOverride" : "joe@example.com", + +# Set this value if you wish to bypass sending email to the mailserver alltogether. +# This will instead pipe email messages to the log, removing them from the queue normally + +# "emailToLog" : "1", + +# By adding CIDR based subnets to the following array you can limit the +# subnets by which users can turn admin mode on. + +"adminModeSubnets" : [ ], + +# List the authentication plug-ins you wish to be available on +# this site. + +"authMethods" : [ "LDAP", "WebGUI", "Twitter" ], + +# List the merchant gateways you have installed and wish to be +# available on this site. + +"paymentDrivers" : [ + "WebGUI::Shop::PayDriver::Cash", + "WebGUI::Shop::PayDriver::ITransact", + "WebGUI::Shop::PayDriver::PayPal::PayPalStd", + "WebGUI::Shop::PayDriver::PayPal::ExpressCheckout", + "WebGUI::Shop::PayDriver::CreditCard::AuthorizeNet", + "WebGUI::Shop::PayDriver::Ogone" + ], + +# List the shipping drivers you have installed and wish to be +# available for configuration on the site. + +"shippingDrivers" : [ + "WebGUI::Shop::ShipDriver::FlatRate", + "WebGUI::Shop::ShipDriver::USPS", + "WebGUI::Shop::ShipDriver::USPSInternational", + "WebGUI::Shop::ShipDriver::UPS" + ], + +# Specify the list of template parsers available in the system. + +"templateParsers" : [ + "WebGUI::Asset::Template::HTMLTemplate" + ], + +# Enable the Survey Expression Engine, which allows goto expressions in +# the config. + +"enableSurveyExpressionEngine" : 0, + +# Specify the default template parser. + +"defaultTemplateParser" : "WebGUI::Asset::Template::HTMLTemplate", + +# Specify external helper apps that will enable WebGUI's search +# engine to index content in various uploaded file formats. The +# helpers must take the path to the file as an argument and +# return either text or html content. + +"searchIndexerPlugins" : { + "txt" : "/bin/cat", + "readme" : "/bin/cat", + "html" : "/bin/cat", + "htm" : "/bin/cat" + }, + + +# define what appears in the admin console and who can view it + +"adminConsole" : { + "loginHistory" : { + "icon" : "loginHistory.gif", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",op=viewLoginHistory);", + "title" : "^International(426,WebGUI);", + "groupSetting" : "groupIdAdminLoginHistory" }, - "adminModeSubnets" : [], - "assetCategories" : { - "basic" : { - "title" : "^International(basic,Macro_AdminBar);", - "uiLevel" : 1 - }, - "community" : { - "title" : "^International(community,Macro_AdminBar);", - "uiLevel" : 5 - }, - "intranet" : { - "title" : "^International(intranet,Macro_AdminBar);", - "uiLevel" : 5 - }, - "shop" : { - "title" : "^International(shop,Shop);", - "uiLevel" : 5 - }, - "utilities" : { - "title" : "^International(utilities,Macro_AdminBar);", - "uiLevel" : 9 - } + "clipboard" : { + "icon" : "clipboard.gif", + "group" : "12", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",func=manageClipboard);", + "title" : "^International(948,WebGUI);" }, - "assetToolbarUiLevel" : { - "changeUrl" : 9, - "copy" : 1, - "cut" : 1, - "delete" : 1, - "demote" : 3, - "edit" : 1, - "editBranch" : 9, - "export" : 9, - "lock" : 5, - "manage" : 5, - "promote" : 3, - "revisions" : 5, - "shortcut" : 5, - "view" : 1 + "statistics" : { + "icon" : "statistics.gif", + "uiLevel" : 1, + "url" : "^PageUrl(\"\",op=viewStatistics);", + "title" : "^International(437,WebGUI);", + "groupSetting" : "groupIdAdminStatistics" + }, + "users" : { + "icon" : "users.gif", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",op=listUsers);", + "title" : "^International(149,WebGUI);", + "groupSetting" : "groupIdAdminUser" + }, + "activeSessions" : { + "icon" : "activeSessions.gif", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",op=viewActiveSessions);", + "title" : "^International(425,WebGUI);", + "groupSetting" : "groupIdAdminActiveSessions" + }, + "inbox" : { + "icon" : "inbox.gif", + "group" : "2", + "uiLevel" : 1, + "url" : "^PageUrl(\"\",op=viewInbox);", + "title" : "^International(159,WebGUI);" + }, + "versions" : { + "icon" : "versionTags.gif", + "uiLevel" : 7, + "url" : "^PageUrl(\"\",op=manageVersions);", + "title" : "^International(version tags,VersionTag);", + "groupSetting" : "groupIdAdminVersionTag" + }, + "help" : { + "icon" : "help.gif", + "uiLevel" : 1, + "url" : "^PageUrl(\"\",op=viewHelpIndex);", + "title" : "^International(help,WebGUI);", + "groupSetting" : "groupIdAdminHelp" + }, + "groups" : { + "icon" : "groups.gif", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",op=listGroups);", + "title" : "^International(89,WebGUI);", + "groupSetting" : "groupIdAdminGroup" + }, + "userProfiling" : { + "icon" : "userProfiling.gif", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",op=editProfileSettings);", + "title" : "^International(user profiling,WebGUIProfile);", + "groupSetting" : "groupIdAdminProfileSettings" + }, + "ldapconnections" : { + "icon" : "ldap.gif", + "uiLevel" : 9, + "url" : "^PageUrl(\"\",op=listLDAPLinks);", + "title" : "^International(ldapconnections,AuthLDAP);", + "groupSetting" : "groupIdAdminLDAPLink" + }, + "contentProfiling" : { + "icon" : "contentProfiling.gif", + "group" : "4", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",func=manageMetaData);", + "title" : "^International(content profiling,Asset);" + }, + "databases" : { + "icon" : "databases.gif", + "uiLevel" : 9, + "url" : "^PageUrl(\"\",op=listDatabaseLinks);", + "title" : "^International(databases,WebGUI);", + "groupSetting" : "groupIdAdminDatabaseLink" + }, + "adSpace" : { + "icon" : "advertising.gif", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",op=manageAdSpaces);", + "title" : "^International(topicName,AdSpace);", + "groupSetting" : "groupIdAdminAdSpace" + }, + "settings" : { + "icon" : "settings.gif", + "group" : "3", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",op=editSettings);", + "title" : "^International(settings,WebGUI);" + }, + "workflow" : { + "icon" : "workflow.gif", + "uiLevel" : 7, + "url" : "^PageUrl(\"\",op=manageWorkflows);", + "title" : "^International(topicName,Workflow);", + "groupSetting" : "groupIdAdminWorkflow" }, "assets" : { - "WebGUI::Asset::File" : { - "category" : "utilities" - }, - "WebGUI::Asset::File::Image" : { - "category" : "utilities" - }, - "WebGUI::Asset::File::ZipArchive" : { - "category" : "utilities" - }, - "WebGUI::Asset::FilePile" : { - "category" : "basic" - }, - "WebGUI::Asset::Redirect" : { - "category" : "utilities" - }, - "WebGUI::Asset::RichEdit" : { - "category" : "utilities" - }, - "WebGUI::Asset::Sku::Ad" : { - "category" : "shop" - }, - "WebGUI::Asset::Sku::Donation" : { - "category" : "shop" - }, - "WebGUI::Asset::Sku::FlatDiscount" : { - "category" : "shop" - }, - "WebGUI::Asset::Sku::Product" : { - "category" : "shop" - }, - "WebGUI::Asset::Sku::Subscription" : { - "category" : "shop" - }, - "WebGUI::Asset::Sku::ThingyRecord" : { - "category" : "shop" - }, - "WebGUI::Asset::Snippet" : { - "category" : "basic" - }, - "WebGUI::Asset::Template" : { - "category" : "utilities" - }, - "WebGUI::Asset::Wobject::Article" : { - "category" : "basic" - }, - "WebGUI::Asset::Wobject::AssetReport" : { - "category" : "utilities" - }, - "WebGUI::Asset::Wobject::Calendar" : { - "category" : "basic" - }, - "WebGUI::Asset::Wobject::Carousel" : { - "category" : "utilities" - }, - "WebGUI::Asset::Wobject::Collaboration" : { - "category" : "community" - }, - "WebGUI::Asset::Wobject::Collaboration::Newsletter" : { - "category" : "community" - }, - "WebGUI::Asset::Wobject::Dashboard" : { - "category" : "intranet", - "isContainer" : 1 - }, - "WebGUI::Asset::Wobject::DataForm" : { - "category" : "basic" - }, - "WebGUI::Asset::Wobject::DataTable" : { - "category" : "basic" - }, - "WebGUI::Asset::Wobject::EventManagementSystem" : { - "category" : "shop" - }, - "WebGUI::Asset::Wobject::Folder" : { - "category" : "basic", - "isContainer" : 1 - }, - "WebGUI::Asset::Wobject::Gallery" : { - "category" : "community" - }, - "WebGUI::Asset::Wobject::HttpProxy" : { - "category" : "utilities" - }, - "WebGUI::Asset::Wobject::InOutBoard" : { - "category" : "intranet" - }, - "WebGUI::Asset::Wobject::Layout" : { - "category" : "basic", - "isContainer" : 1 - }, - "WebGUI::Asset::Wobject::Map" : { - "category" : "basic" - }, - "WebGUI::Asset::Wobject::Matrix" : { - "category" : "community" - }, - "WebGUI::Asset::Wobject::MessageBoard" : { - "category" : "community", - "isContainer" : 1 - }, - "WebGUI::Asset::Wobject::MultiSearch" : { - "category" : "intranet" - }, - "WebGUI::Asset::Wobject::Navigation" : { - "category" : "utilities" - }, - "WebGUI::Asset::Wobject::NewsletterCollection" : { - "category" : "basic" - }, - "WebGUI::Asset::Wobject::Poll" : { - "category" : "basic" - }, - "WebGUI::Asset::Wobject::ProjectManager" : { - "category" : "intranet" - }, - "WebGUI::Asset::Wobject::SQLReport" : { - "category" : "utilities" - }, - "WebGUI::Asset::Wobject::Search" : { - "category" : "basic" - }, - "WebGUI::Asset::Wobject::Shelf" : { - "category" : "shop" - }, - "WebGUI::Asset::Wobject::StockData" : { - "category" : "intranet" - }, - "WebGUI::Asset::Wobject::StoryArchive" : { - "category" : "community", - "isContainer" : 1 - }, - "WebGUI::Asset::Wobject::StoryTopic" : { - "category" : "community" - }, - "WebGUI::Asset::Wobject::Survey" : { - "category" : "community" - }, - "WebGUI::Asset::Wobject::SyndicatedContent" : { - "category" : "utilities" - }, - "WebGUI::Asset::Wobject::Thingy" : { - "category" : "intranet" - }, - "WebGUI::Asset::Wobject::TimeTracking" : { - "category" : "intranet" - }, - "WebGUI::Asset::Wobject::UserList" : { - "category" : "intranet" - }, - "WebGUI::Asset::Wobject::WeatherData" : { - "category" : "intranet" - }, - "WebGUI::Asset::Wobject::WikiMaster" : { - "category" : "community", - "isContainer" : 1 - } + "icon" : "assets.gif", + "group" : "12", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",op=assetManager);", + "title" : "^International(assets,Asset);" }, - "authMethods" : [ - "LDAP", - "WebGUI", - "Twitter" - ], - "cacheType" : "WebGUI::Cache::FileCache", - "contentHandlers" : [ - "WebGUI::Content::Prefetch", - "WebGUI::Content::Maintenance", - "WebGUI::Content::Referral", - "WebGUI::Content::AssetManager", - "WebGUI::Content::AssetDiscovery", - "WebGUI::Content::PassiveAnalytics", - "WebGUI::Content::SetLanguage", - "WebGUI::Content::AjaxI18N", - "WebGUI::Content::Account", - "WebGUI::Content::AssetHistory", - "WebGUI::Content::FilePump", - "WebGUI::Content::Wizard", - "WebGUI::Content::Operation", - "WebGUI::Content::Setup", - "WebGUI::Content::Shop", - "WebGUI::Content::NewsletterManager", - "WebGUI::Content::SiteIndex", - "WebGUI::Content::Asset", - "WebGUI::Content::NotFound" - ], - "cookieName" : "wgSession", - "dbpass" : "123qwe", - "dbuser" : "webgui", - "defaultTemplateParser" : "WebGUI::Asset::Template::HTMLTemplate", - "disableCache" : 0, - "dsn" : "DBI:mysql:www_example_com;host=db", - "enableSaveAndCommit" : 0, - "enableSimpleSSO" : 0, - "enableStreamingUploads" : "0", - "enableSurveyExpressionEngine" : 0, - "exportBinaryExtensions" : [ - "html", - "htm", - "txt", - "pdf", - "jpg", - "css", - "gif", - "png", - "doc", - "xls", - "xml", - "rss", - "bmp", - "mp3", - "js", - "fla", - "flv", - "swf", - "pl", - "php", - "php3", - "php4", - "php5", - "ppt", - "docx", - "zip", - "tar", - "rar", - "gz", - "bz2" - ], - "extrasPath" : "/data/WebGUI/www/extras", - "extrasURL" : "/extras", - "gateway" : "/", - "graphingPlugins" : [ - "WebGUI::Image::Graph::Pie", - "WebGUI::Image::Graph::XYGraph::Bar", - "WebGUI::Image::Graph::XYGraph::Line" - ], - "ldapAlias" : { - "companyName" : "o", - "email" : "mail", - "firstName" : "givenName", - "lastName" : "sn" + "assetHistory" : { + "icon" : "assetHistory.gif", + "groupSetting" : "groupIdAdminHistory", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",op=assetHistory);", + "title" : "^International(assetHistory,Asset);" }, - "macros" : { - "#" : "Hash_userId", - "/" : "Slash_gatewayUrl", - "@" : "At_username", - "AOIHits" : "AOIHits", - "AOIRank" : "AOIRank", - "AdSpace" : "AdSpace", - "AdminBar" : "AdminBar", - "AdminText" : "AdminText", - "AdminToggle" : "AdminToggle", - "AssetProperty" : "AssetProperty", - "AssetProxy" : "AssetProxy", - "BackToSite" : "BackToSite", - "CanEditText" : "CanEditText", - "CartItemCount" : "CartItemCount", - "ConvertUTCToTZ" : "ConvertUTCToTZ", - "D" : "D_date", - "DeactivateAccount" : "DeactivateAccount", - "EditableToggle" : "EditableToggle", - "Extras" : "Extras", - "FetchMimeType" : "FetchMimeType", - "FilePump" : "FilePump", - "FileUrl" : "FileUrl", - "FormField" : "FormField", - "GroupAdd" : "GroupAdd", - "GroupDelete" : "GroupDelete", - "GroupText" : "GroupText", - "H" : "H_homeLink", - "If" : "If", - "International" : "International", - "L" : "L_loginBox", - "LastModified" : "LastModified", - "LastModifiedBy" : "LastModifiedBy", - "LoginToggle" : "LoginToggle", - "MiniCart" : "MiniCart", - "Page" : "Page", - "PageTitle" : "PageTitle", - "PageUrl" : "PageUrl", - "PickLanguage" : "PickLanguage", - "RandomAssetProxy" : "RandomAssetProxy", - "RandomThread" : "RandomThread", - "RenderThingData" : "RenderThingData", - "RootTitle" : "RootTitle", - "Spacer" : "Spacer", - "SpectreCheck" : "SpectreCheck", - "StorageUrl" : "StorageUrl", - "Thumbnail" : "Thumbnail", - "TwitterLogin" : "TwitterLogin", - "User" : "User", - "UsersOnline" : "UsersOnline", - "ViewCart" : "ViewCart", - "a" : "a_account", - "c" : "c_companyName", - "e" : "e_companyEmail", - "r" : "r_printable", - "u" : "u_companyUrl" + "graphics" : { + "icon" : "graphics.gif", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",op=listGraphicsOptions);", + "title" : "^International(manage graphics,Graphics);", + "groupSetting" : "groupIdAdminGraphics" }, - "maximumAssets" : 0, + "passiveAnalytics" : { + "icon" : "passiveAnalytics.png", + "uiLevel" : 1, + "url" : "^PageUrl(\"\",op=passiveAnalytics;func=editRuleflow);", + "title" : "^International(Passive Analytics,PassiveAnalytics);", + "groupSetting" : "3" + }, + "shop" : { + "icon" : "shop.gif", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",shop=admin);", + "title" : "^International(shop,Shop);", + "groupSetting" : "groupIdAdminCommerce" + }, + "trash" : { + "icon" : "trash.gif", + "group" : "12", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",func=manageTrash);", + "title" : "^International(trash,WebGUI);" + }, + "cron" : { + "icon" : "cron.gif", + "uiLevel" : 9, + "url" : "^PageUrl(\"\",op=manageCron);", + "title" : "^International(topicName,Workflow_Cron);", + "groupSetting" : "groupIdAdminCron" + }, + "spectre" : { + "icon" : "spectre.gif", + "uiLevel" : 9, + "url" : "^PageUrl(\"\",op=spectreStatus);", + "title" : "^International(spectre,Spectre);", + "groupSetting" : "groupIdAdminSpectre" + }, + "adminConsoleOff" : { + "icon" : "adminConsoleOff.gif", + "uiLevel" : 1, + "group" : "12", + "url" : "^PageUrl(\"\",op=switchOffAdmin);", + "title" : "^International(12,WebGUI);" + }, + "addons" : { + "icon" : "addons.png", + "uiLevel" : 1, + "group" : "12", + "url" : "http://www.webgui.org/addons", + "title" : "^International(Addons title,WebGUI);" + }, + "contentFilters" : { + "icon" : "contentFilters.gif", + "uiLevel" : 3, + "url" : "^PageUrl(\"\",op=listReplacements);", + "title" : "^International(content filters,WebGUI);", + "groupSetting" : "groupIdAdminReplacements" + }, + "cache" : { + "icon" : "cache.gif", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",op=manageCache);", + "title" : "^International(manage cache,WebGUI);", + "groupSetting" : "groupIdAdminCache" + }, + "filePump" : { + "icon" : "filePump.png", + "uiLevel" : 5, + "url" : "^PageUrl(\"\",op=filePump);", + "title" : "^International(File Pump,FilePump);", + "groupSetting" : "groupIdAdminFilePump" + } +}, + +# Enter the maximum number of assets that should be allowed to +# be created on this site. Keep in mind that a base install of +# WebGUI has around 300 assets. Enter zero (0) if you want to +# allow an unlimited number. + +"maximumAssets" : 0, + +# Specify the list of categories to display in the "New Content" +# menu. The category names should match those used in the "assets" +# hash later in this config. Each category can have three properties: +# +# title - The human readable name of the category. +# uiLevel - The minimum UI level the user must have to see the category. +# group - A group id the user must be in to see the category. + +"assetCategories" : { + "basic" : { + "uiLevel" : 1, + "title" : "^International(basic,Macro_AdminBar);" + }, + "shop" : { + "uiLevel" : 5, + "title" : "^International(shop,Shop);" + }, + "utilities" : { + "uiLevel" : 9, + "title" : "^International(utilities,Macro_AdminBar);" + }, + "community" : { + "uiLevel" : 5, + "title" : "^International(community,Macro_AdminBar);" + }, + "intranet" : { + "uiLevel" : 5, + "title" : "^International(intranet,Macro_AdminBar);" + } +}, + +# Specify the list of assets you want to appear in your +# "New Content" menu categories. See "assetCategories" for details +# about categories. Each listing has a key of class name, and then +# has several properties, which are: +# +# category - The category the asset should appear in. Can also be an array of categories. +# isContainer - Whether or not the assets main purpose to display the data from other assets. +# addGroup - The group the user must be in to add this asset. +# uiLevel - The minimum UI level the user must have to add the asset. +# fields - Edit the properties of the asset. +# tabs - Edit the tabs on which the fields are displayed when editing the asset. +# +# The "fields" property above may override any property of any field in this +# asset class. Examples are label, tab, uiLevel. You must know what you're +# doing with this, because you could break an asset if you set something wrong +# with these properties. Here's an example of wha the fields poperty might look like: +# +# "fields" : { +# "title" : { +# "label" : "Name", +# "tab" : "basic" +# }, +# "synopsis" : { +# "label" : "Abstract", +# "uiLevel" : 3 +# } +# } +# +# The "tabs" property allows you to to create new, hide, and update existing tabs in +# the asset. Each tab has two properties: +# +# uiLevel - The minimum UI level the user must have to view the tab. +# label - The human readable label for the tab. +# +# Here's an example of what a tabls section might look like: +# +# "tabs" : { +# "basic" : { +# "label" : "Basic", +# "uiLevel" : 1 +# }, +# "meta" : { +# "uiLevel" : 99999 +# }, +# "security" : { +# "label" : "Protection" +# } +# } + +"assets" : { + "WebGUI::Asset::Wobject::Shelf" : { + "category" : "shop" + }, + "WebGUI::Asset::Wobject::Layout" : { + "isContainer" : 1, + "category" : "basic" + }, + "WebGUI::Asset::Wobject::Gallery" : { + "category" : "community" + }, + "WebGUI::Asset::Wobject::DataTable" : { + "category" : "basic" + }, + "WebGUI::Asset::Wobject::DataForm" : { + "category" : "basic" + }, + "WebGUI::Asset::Sku::Ad" : { + "category" : "shop" + }, + "WebGUI::Asset::Sku::Donation" : { + "category" : "shop" + }, + "WebGUI::Asset::Sku::ThingyRecord" : { + "category" : "shop" + }, + "WebGUI::Asset::Wobject::UserList" : { + "category" : "intranet" + }, + "WebGUI::Asset::Wobject::EventManagementSystem" : { + "category" : "shop" + }, + "WebGUI::Asset::Sku::Subscription" : { + "category" : "shop" + }, + "WebGUI::Asset::Wobject::WikiMaster" : { + "isContainer" : 1, + "category" : "community" + }, + "WebGUI::Asset::Wobject::StoryArchive" : { + "isContainer" : 1, + "category" : "community" + }, + "WebGUI::Asset::Wobject::StoryTopic" : { + "category" : "community" + }, + "WebGUI::Asset::Wobject::Carousel" : { + "category" : "utilities" + }, + "WebGUI::Asset::Wobject::StockData" : { + "category" : "intranet" + }, + "WebGUI::Asset::FilePile" : { + "category" : "basic" + }, + "WebGUI::Asset::Wobject::Collaboration" : { + "category" : "community" + }, + "WebGUI::Asset::Wobject::Survey" : { + "category" : "community" + }, + "WebGUI::Asset::File::ZipArchive" : { + "category" : "utilities" + }, + "WebGUI::Asset::RichEdit" : { + "category" : "utilities" + }, + "WebGUI::Asset::Wobject::SyndicatedContent" : { + "category" : "utilities" + }, + "WebGUI::Asset::Wobject::HttpProxy" : { + "category" : "utilities" + }, + "WebGUI::Asset::Wobject::MultiSearch" : { + "category" : "intranet" + }, + "WebGUI::Asset::File::Image" : { + "category" : "utilities" + }, + "WebGUI::Asset::Sku::Product" : { + "category" : "shop" + }, + "WebGUI::Asset::Wobject::WeatherData" : { + "category" : "intranet" + }, + "WebGUI::Asset::Redirect" : { + "category" : "utilities" + }, + "WebGUI::Asset::Wobject::Article" : { + "category" : "basic" + }, + "WebGUI::Asset::Wobject::AssetReport" : { + "category" : "utilities" + }, + "WebGUI::Asset::Wobject::Search" : { + "category" : "basic" + }, + "WebGUI::Asset::Wobject::MessageBoard" : { + "isContainer" : 1, + "category" : "community" + }, + "WebGUI::Asset::Wobject::SQLReport" : { + "category" : "utilities" + }, + "WebGUI::Asset::Wobject::TimeTracking" : { + "category" : "intranet" + }, + "WebGUI::Asset::Wobject::Calendar" : { + "category" : "basic" + }, + "WebGUI::Asset::Wobject::Poll" : { + "category" : "basic" + }, + "WebGUI::Asset::Wobject::ProjectManager" : { + "category" : "intranet" + }, + "WebGUI::Asset::Wobject::Folder" : { + "isContainer" : 1, + "category" : "basic" + }, + "WebGUI::Asset::Wobject::Navigation" : { + "category" : "utilities" + }, + "WebGUI::Asset::Wobject::Matrix" : { + "category" : "community" + }, + "WebGUI::Asset::Sku::FlatDiscount" : { + "category" : "shop" + }, + "WebGUI::Asset::Wobject::Thingy" : { + "category" : "intranet" + }, + "WebGUI::Asset::File" : { + "category" : "utilities" + }, + "WebGUI::Asset::Wobject::Collaboration::Newsletter" : { + "category" : "community" + }, + "WebGUI::Asset::Snippet" : { + "category" : "basic" + }, + "WebGUI::Asset::Wobject::InOutBoard" : { + "category" : "intranet" + }, + "WebGUI::Asset::Wobject::Dashboard" : { + "isContainer" : 1, + "category" : "intranet" + }, + "WebGUI::Asset::Wobject::DataForm" : { + "category" : "basic" + }, + "WebGUI::Asset::Template" : { + "category" : "utilities" + }, + "WebGUI::Asset::Wobject::Map" : { + "category" : "basic" + }, + "WebGUI::Asset::Wobject::AssetReport" : { + "category" : "utilities" + }, +}, + +# +# Specify the list of account pluggins available on your site. +# Account pluggins are returned on the site in the order they are list in the config file +# Each pluggin has serveral properties +# +# identifier - This string will act as the identifying agent for this account pluggin. It is passed along +# the url and cannot contain spaces. +# title - The title of the module which is displayed on the website. +# className - The class which drives this module + +# +# IMPORTANT NOTE - PLEASE READ: +# +# DO NOT DELETE THE WebGUI::Account::User pluggin from this list. This module +# is Deprecated on release and is mandatory for every site. You may move it's position +# but if you remove it you will break WebGUI's Authentication System. This module will +# be replaced in WebGUI 8 once the APIs can be broken and the Account portion of Auth +# can be moved into the Account system +# +# A profile module is required as well. You may replace the default profile +# module with a custom version, but many systems in WebGUI rely on being +# able to display a user's profile. +# + +"account" : [ + { + "identifier" : "profile", + "title" : "^International(title,Account_Profile);", + "className" : "WebGUI::Account::Profile" + }, + { + "identifier" : "inbox", + "title" : "^International(title,Account_Inbox);", + "className" : "WebGUI::Account::Inbox" + }, + { + "identifier" : "friends", + "title" : "^International(title,Account_Friends);", + "className" : "WebGUI::Account::Friends" + }, + { + "identifier" : "contributions", + "className" : "WebGUI::Account::Contributions", + "title" : "^International(title,Account_Contributions);" + }, + { + "identifier" : "shop", + "title" : "^International(title,Account_Shop);", + "className" : "WebGUI::Account::Shop" + }, + { + "identifier" : "user", + "title" : "^International(title,Account_User);", + "className" : "WebGUI::Account::User" + }, + { + "identifier" : "friendManager", + "title" : "^International(title,Account_FriendManager);", + "className" : "WebGUI::Account::FriendManager" + }, +], + +# Specify which of the modules in the above list is used +# to display the user's profile. This is a mandatory configuration + +"profileModuleIdentifier" : "profile", + +# Optionally add a "Save and Commit" button to assets so that you +# don't have to hit "Commit My Changes" seperately. + +"enableSaveAndCommit" : 0, + +# Optionally override the default UI Level of any asset. This +# determines whether the current user has the appropriate UI Level +# to add assets of that type. + +# Configure the UI Levels of the asset toolbar links. + +"assetToolbarUiLevel" : { + "copy" : 1, + "cut" : 1, + "delete" : 1, + "edit" : 1, + "view" : 1, + "demote" : 3, + "promote" : 3, + "lock" : 5, + "manage" : 5, + "revisions" : 5, + "shortcut" : 5, + "changeUrl" : 9, + "editBranch" : 9, + "export" : 9 + }, + +# If exportPath is defined, an "Export" toolbar icon will appear +# which allows you to export assets to static HTML. This folder +# needs to be writable by your web server. + +# "exportPath" : "/path/to/export", + +# Enable streaming Image and File assets thru mod_perl process instead of +# simple redirect. WARNING has impact on performance. + +"enableStreamingUploads" : "0", + +# Specify the list of macros you wish to be processed on each page. + +"macros" : { + "@" : "At_username", + "#" : "Hash_userId", + "/" : "Slash_gatewayUrl", + "a" : "a_account", + "AdminBar" : "AdminBar", + "AdminText" : "AdminText", + "AdminToggle" : "AdminToggle", + "AdSpace" : "AdSpace", + "AOIHits" : "AOIHits", + "AOIRank" : "AOIRank", + "AssetProperty" : "AssetProperty", + "AssetProxy" : "AssetProxy", + "BackToSite" : "BackToSite", + "CanEditText" : "CanEditText", + "CartItemCount" : "CartItemCount", + "ConvertUTCToTZ" : "ConvertUTCToTZ", + "c" : "c_companyName", + "D" : "D_date", + "DeactivateAccount": "DeactivateAccount", + "EditableToggle" : "EditableToggle", + "e" : "e_companyEmail", + "Extras" : "Extras", + "FetchMimeType" : "FetchMimeType", + "FilePump" : "FilePump", + "FileUrl" : "FileUrl", + "FormField" : "FormField", + "GroupAdd" : "GroupAdd", + "GroupDelete" : "GroupDelete", + "GroupText" : "GroupText", + "H" : "H_homeLink", + "If" : "If", + "International" : "International", + "LastModified" : "LastModified", + "LastModifiedBy" : "LastModifiedBy", + "L" : "L_loginBox", + "LoginToggle" : "LoginToggle", + "MiniCart" : "MiniCart", + "Page" : "Page", + "PageTitle" : "PageTitle", + "PageUrl" : "PageUrl", + "PickLanguage" : "PickLanguage", + "RandomAssetProxy" : "RandomAssetProxy", + "RandomThread" : "RandomThread", + "RenderThingData" : "RenderThingData", + "RootTitle" : "RootTitle", + "r" : "r_printable", + "Spacer" : "Spacer", + "SpectreCheck" : "SpectreCheck", + "TwitterLogin" : "TwitterLogin", + "Thumbnail" : "Thumbnail", + "User" : "User", + "UsersOnline" : "UsersOnline", + "u" : "u_companyUrl", + "ViewCart" : "ViewCart", + "StorageUrl" : "StorageUrl" + }, + +#Specify any LDAP aliases for synchronizing user profiles to LDAP +"ldapAlias" : { + "firstName" : "givenName", + "lastName" : "sn", + "email" : "mail", + "companyName" : "o" + }, + +# Define the subnets that WebGUI should expect Spectre communication +# to come from. All other subnets will be ignored. The subnet +# should be listed in CIDR notation. + +"spectreSubnets" : [ "127.0.0.1/32" ], + +# Define the IP Address that should be used by WebGUI to connect +# to Spectre. Depending upon your cluster configuration, this may +# or may not be the same as the information in spectreSubnets. + +"spectreIp" : "127.0.0.1", + +# Define the port number WebGUI should use to connect to Spectre + +"spectrePort" : 32133, + +# Define the workflow activities that are available in the editing +# process and what object types they support. + +"workflowActivities" : { + "None" : [ + "WebGUI::Workflow::Activity::ArchiveOldStories", + "WebGUI::Workflow::Activity::ArchiveOldThreads", + "WebGUI::Workflow::Activity::CalendarUpdateFeeds", + "WebGUI::Workflow::Activity::CleanCookieJars", + "WebGUI::Workflow::Activity::CleanDatabaseCache", + "WebGUI::Workflow::Activity::CleanFileCache", + "WebGUI::Workflow::Activity::CleanLoginHistory", + "WebGUI::Workflow::Activity::CleanTempStorage", + "WebGUI::Workflow::Activity::CreateCronJob", + "WebGUI::Workflow::Activity::DecayKarma", + "WebGUI::Workflow::Activity::DeleteExpiredSessions", + "WebGUI::Workflow::Activity::ExpireEmsCartItems", + "WebGUI::Workflow::Activity::ExpireGroupings", + "WebGUI::Workflow::Activity::ExpireSubscriptionCodes", + "WebGUI::Workflow::Activity::GetSyndicatedContent", + "WebGUI::Workflow::Activity::NotifyAdminsWithOpenVersionTags", + "WebGUI::Workflow::Activity::PurgeOldAssetRevisions", + "WebGUI::Workflow::Activity::PurgeOldTrash", + "WebGUI::Workflow::Activity::RemoveOldCarts", + "WebGUI::Workflow::Activity::SendQueuedMailMessages", + "WebGUI::Workflow::Activity::SummarizePassiveProfileLog", + "WebGUI::Workflow::Activity::SyncProfilesToLdap", + "WebGUI::Workflow::Activity::TrashClipboard", + "WebGUI::Workflow::Activity::TrashExpiredEvents", + "WebGUI::Workflow::Activity::SummarizePassiveAnalytics", + "WebGUI::Workflow::Activity::BucketPassiveAnalytics", + "WebGUI::Workflow::Activity::ExpirePurchasedThingyRecords" + ], + "WebGUI::Asset::Wobject::Thingy" : [ + "WebGUI::Workflow::Activity::NotifyAboutThing" + ], + "WebGUI::Asset" : [ + "WebGUI::Workflow::Activity::UpdateAssetSubscribers" + ], + "WebGUI::User" : [ + "WebGUI::Workflow::Activity::CreateCronJob", + "WebGUI::Workflow::Activity::NotifyAboutUser", + "WebGUI::Workflow::Activity::ActivateUser", + "WebGUI::Workflow::Activity::DeactivateUser", + "WebGUI::Workflow::Activity::WaitForUserConfirmation", + "WebGUI::Workflow::Activity::DeleteUser" + ], + "WebGUI::VersionTag" : [ + "WebGUI::Workflow::Activity::CommitVersionTag", + "WebGUI::Workflow::Activity::CreateCronJob", + "WebGUI::Workflow::Activity::ExportVersionTagToHtml", + "WebGUI::Workflow::Activity::NotifyAboutVersionTag", + "WebGUI::Workflow::Activity::RequestApprovalForVersionTag", + "WebGUI::Workflow::Activity::RequestApprovalForVersionTag::ByCommitterGroup", + "WebGUI::Workflow::Activity::RequestApprovalForVersionTag::ByLineage", + "WebGUI::Workflow::Activity::RollbackVersionTag", + "WebGUI::Workflow::Activity::TrashVersionTag", + "WebGUI::Workflow::Activity::UnlockVersionTag", + "WebGUI::Workflow::Activity::WaitUntil" + ] + }, + +# Enter the graphing plugins that you want to enable for your site. + +"graphingPlugins" : [ + "WebGUI::Image::Graph::Pie", + "WebGUI::Image::Graph::XYGraph::Bar", + "WebGUI::Image::Graph::XYGraph::Line" + ], + +# Here you can define the dictionaries that are available through the tinyMCE spellchecker. You should set +# id to the name the dictionary is known by ASpell (eg. en or en_US or nl), use the name parameter to set +# the name the dictionary is displayed with in tinyMCE. To set the default dictionary please set the 'default' +# parameter. + +#"availableDictionaries" : [ +# { +# "id" : "en_US", +# "name" : "English", +# "default" : "1" +# }, +# { +# "id" : "nl", +# "name" : "Dutch" +# } +#], + +# Optional script to run upon successful login. The script can contain macros +# ex: /data/WebGUI/sbin/doLogin.pl --configFile=dev.localhost.localdomain.conf --loginPage=^PageUrl(); + +"runOnLogin" : "", + +# Optional script to run upon successful logout. The script can contain macros +# Example: /data/WebGUI/sbin/doLogout.pl --configFile=dev.localhost.localdomain.conf --logoutPage=^PageUrl(); + +"runOnLogout" : "", + +# URL handlers are used to associate functionality with a URL via a regular expression. + +"urlHandlers" : [ + { "^/extras" : "WebGUI::URL::PassThru" }, +# { "^/icons" : "WebGUI::URL::PassThru" }, +# { "^/documentation/pdf" : "WebGUI::URL::PassThru" }, +# { "^/my-custom-application$" : "WebGUI::URL::PassThru" }, +# { "^/server-status$" : "WebGUI::URL::PassThru" }, +# { "^/perl-status$" : "WebGUI::URL::PassThru" }, + { "^/uploads/dictionaries" : "WebGUI::URL::Unauthorized" }, + { "^/uploads" : "WebGUI::URL::Uploads" }, + { "^/\\*give-credit-where-credit-is-due\\*$" : "WebGUI::URL::Credits" }, + { "^/abcdefghijklmnopqrstuvwxyz$" : "WebGUI::URL::Snoop" }, + { ".*" : "WebGUI::URL::Content" } + ], + +# Content handlers are used to produce content from the content URL handler. +# Note, these handlers are processed in the order listed. Do not change +# unless you know what you're doing. + +"contentHandlers" : [ + "WebGUI::Content::Prefetch", + "WebGUI::Content::Maintenance", + "WebGUI::Content::Referral", + "WebGUI::Content::AssetManager", + "WebGUI::Content::AssetDiscovery", + "WebGUI::Content::PassiveAnalytics", + "WebGUI::Content::SetLanguage", + "WebGUI::Content::AjaxI18N", + "WebGUI::Content::Account", + "WebGUI::Content::AssetHistory", + "WebGUI::Content::FilePump", + "WebGUI::Content::Wizard", + "WebGUI::Content::Operation", + "WebGUI::Content::Setup", + "WebGUI::Content::Shop", + "WebGUI::Content::SiteIndex", + "WebGUI::Content::Asset", + "WebGUI::Content::NotFound" + ], + + +# extensions that the export system should pass through as-is instead of using +# index.html +"exportBinaryExtensions" : [ + "html", + "htm", + "txt", + "pdf", + "jpg", + "css", + "gif", + "png", + "doc", + "xls", + "xml", + "rss", + "bmp", + "mp3", + "js", + "fla", + "flv", + "swf", + "pl", + "php", + "php3", + "php4", + "php5", + "ppt", + "docx", + "zip", + "tar", + "rar", + "gz", + "bz2" +], + +# Drivers for the pluggable tax system +"taxDrivers" : [ + "WebGUI::Shop::TaxDriver::Generic", + "WebGUI::Shop::TaxDriver::EU" +], + +# Content Delivery Network - for use with WebGUI::Storage +# required for CDN: enabled, url, queuePath, syncProgram, deleteProgram +# optional for CDN: sslAlt, sslUrl, extrasCdn, extrasSsl, extrasExclude +#"cdn" : { "enabled" : 0, +# "url" : "http://content.example.com", +# "sslAlt" : 0, +# "sslUrl" : "https://ssl.example.com", +# "queuePath" : "/data/cdnqueue", +# "syncProgram" : "/usr/bin/rsync -av --chmod=u+rwx -- '%s' user@content.example.com:/path", +# "deleteProgram" : "/usr/bin/ssh user@content.example.com 'rm -Rf -- %s'", +# "extrasCdn" : "http://content.example.com/extras", +# "extrasSsl" : "https://content.example.com/extras", +# "extrasExclude": ["tinymce", "^blah$"] +# }, + +#A list of UserAgents of recognized mobile platforms. If useMobileStyle is set in the +#Admin settings, then the mobile style will be used for these browsers. "mobileUserAgents" : [ "AvantGo", "DoCoMo", @@ -615,134 +1114,19 @@ "Windows CE", "Opera Mini" ], - "paymentDrivers" : [ - "WebGUI::Shop::PayDriver::Cash", - "WebGUI::Shop::PayDriver::ITransact", - "WebGUI::Shop::PayDriver::PayPal::PayPalStd", - "WebGUI::Shop::PayDriver::PayPal::ExpressCheckout", - "WebGUI::Shop::PayDriver::CreditCard::AuthorizeNet", - "WebGUI::Shop::PayDriver::Ogone" - ], - "profileModuleIdentifier" : "profile", - "registrationSteps" : [ - "WebGUI::Registration::Step::MailingSubscribe" - ], - "richEditorsUseAssetUrls" : 1, - "runOnLogin" : "", - "runOnLogout" : "", - "searchIndexerPlugins" : { - "htm" : "/bin/cat", - "html" : "/bin/cat", - "readme" : "/bin/cat", - "txt" : "/bin/cat" - }, - "shippingDrivers" : [ - "WebGUI::Shop::ShipDriver::FlatRate", - "WebGUI::Shop::ShipDriver::USPS", - "WebGUI::Shop::ShipDriver::USPSInternational", - "WebGUI::Shop::ShipDriver::UPS" - ], + +# For the siteIndex content plugin. Whether or not the auto-generated siteIndex should +# show hidden pages "siteIndex" : { "showHiddenPages" : 0 }, - "sitename" : [ - "localhost", - "www.example.com", - "example.com" + +# An array of SPAM words. Used in the Post and WikiPage to block spam by sending the asset directly +# to the trash. + "spamStopWords" : [ ], - "spamStopWords" : [], - "spectreIp" : "127.0.0.1", - "spectrePort" : 32133, - "spectreSubnets" : [ - "127.0.0.1/32" - ], - "sslEnabled" : 0, - "taxDrivers" : [ - "WebGUI::Shop::TaxDriver::Generic", - "WebGUI::Shop::TaxDriver::EU" - ], - "templateParsers" : [ - "WebGUI::Asset::Template::HTMLTemplate" - ], - "uploadsPath" : "/data/WebGUI/www/uploads", - "uploadsURL" : "/uploads", - "urlHandlers" : [ - { - "^/extras" : "WebGUI::URL::PassThru" - }, - { - "^/uploads/dictionaries" : "WebGUI::URL::Unauthorized" - }, - { - "^/uploads" : "WebGUI::URL::Uploads" - }, - { - "^/\\*give-credit-where-credit-is-due\\*$" : "WebGUI::URL::Credits" - }, - { - "^/abcdefghijklmnopqrstuvwxyz$" : "WebGUI::URL::Snoop" - }, - { - ".*" : "WebGUI::URL::Content" - } - ], - "workflowActivities" : { - "None" : [ - "WebGUI::Workflow::Activity::ArchiveOldStories", - "WebGUI::Workflow::Activity::ArchiveOldThreads", - "WebGUI::Workflow::Activity::CalendarUpdateFeeds", - "WebGUI::Workflow::Activity::CleanCookieJars", - "WebGUI::Workflow::Activity::CleanDatabaseCache", - "WebGUI::Workflow::Activity::CleanFileCache", - "WebGUI::Workflow::Activity::CleanLoginHistory", - "WebGUI::Workflow::Activity::CleanTempStorage", - "WebGUI::Workflow::Activity::CreateCronJob", - "WebGUI::Workflow::Activity::DecayKarma", - "WebGUI::Workflow::Activity::DeleteExpiredSessions", - "WebGUI::Workflow::Activity::ExpireEmsCartItems", - "WebGUI::Workflow::Activity::ExpireGroupings", - "WebGUI::Workflow::Activity::ExpireSubscriptionCodes", - "WebGUI::Workflow::Activity::GetSyndicatedContent", - "WebGUI::Workflow::Activity::NotifyAdminsWithOpenVersionTags", - "WebGUI::Workflow::Activity::PurgeOldAssetRevisions", - "WebGUI::Workflow::Activity::PurgeOldTrash", - "WebGUI::Workflow::Activity::RemoveOldCarts", - "WebGUI::Workflow::Activity::SendQueuedMailMessages", - "WebGUI::Workflow::Activity::SummarizePassiveProfileLog", - "WebGUI::Workflow::Activity::SyncProfilesToLdap", - "WebGUI::Workflow::Activity::TrashClipboard", - "WebGUI::Workflow::Activity::TrashExpiredEvents", - "WebGUI::Workflow::Activity::SummarizePassiveAnalytics", - "WebGUI::Workflow::Activity::BucketPassiveAnalytics", - "WebGUI::Workflow::Activity::ExpirePurchasedThingyRecords", - "WebGUI::Workflow::Activity::SendQueuedMailings" - ], - "WebGUI::Asset" : [ - "WebGUI::Workflow::Activity::UpdateAssetSubscribers" - ], - "WebGUI::Asset::Wobject::Thingy" : [ - "WebGUI::Workflow::Activity::NotifyAboutThing" - ], - "WebGUI::User" : [ - "WebGUI::Workflow::Activity::CreateCronJob", - "WebGUI::Workflow::Activity::NotifyAboutUser", - "WebGUI::Workflow::Activity::ActivateUser", - "WebGUI::Workflow::Activity::DeactivateUser", - "WebGUI::Workflow::Activity::WaitForUserConfirmation", - "WebGUI::Workflow::Activity::DeleteUser" - ], - "WebGUI::VersionTag" : [ - "WebGUI::Workflow::Activity::CommitVersionTag", - "WebGUI::Workflow::Activity::CreateCronJob", - "WebGUI::Workflow::Activity::ExportVersionTagToHtml", - "WebGUI::Workflow::Activity::NotifyAboutVersionTag", - "WebGUI::Workflow::Activity::RequestApprovalForVersionTag", - "WebGUI::Workflow::Activity::RequestApprovalForVersionTag::ByCommitterGroup", - "WebGUI::Workflow::Activity::RequestApprovalForVersionTag::ByLineage", - "WebGUI::Workflow::Activity::RollbackVersionTag", - "WebGUI::Workflow::Activity::TrashVersionTag", - "WebGUI::Workflow::Activity::UnlockVersionTag", - "WebGUI::Workflow::Activity::WaitUntil" - ] - } + +# A flag to enable a very simple SSO mechanism using sessionIds. + "enableSimpleSSO" : 0 + } diff --git a/lib/Spectre/Admin.pm b/lib/Spectre/Admin.pm index fe50b805a..39da82de9 100644 --- a/lib/Spectre/Admin.pm +++ b/lib/Spectre/Admin.pm @@ -155,7 +155,6 @@ sub loadSiteData { } else { my $siteData = {}; - print "Reading site configs. $url responded with: " . $response->content . "\n"; eval { $siteData = JSON::decode_json($response->content); }; if ($@) { $self->error("Couldn't fetch Spectre configuration data for $key : $@"); diff --git a/lib/WebGUI/Asset/RichEdit.pm b/lib/WebGUI/Asset/RichEdit.pm index 982b25548..96f80e3d2 100644 --- a/lib/WebGUI/Asset/RichEdit.pm +++ b/lib/WebGUI/Asset/RichEdit.pm @@ -19,7 +19,7 @@ use WebGUI::Asset; use WebGUI::Form; use WebGUI::Utility; use WebGUI::International; -use JSON -convert_blessed_universally; +use JSON; our @ISA = qw(WebGUI::Asset); @@ -664,10 +664,9 @@ EOHTML1 if ( $ask ) { $config->{mode} = "none"; } - $self->session->log->debug("config: $config->{mode} "); $out .= $self->getLoadPlugins; - $out .= "\ttinyMCE.init(" . JSON->new->allow_blessed->pretty->encode( $config ) . " );\n"; + $out .= "\ttinyMCE.init(" . JSON->new->pretty->encode( $config ) . " );\n"; $out .= ""; } diff --git a/lib/WebGUI/Crud.pm b/lib/WebGUI/Crud.pm index a83ac72f3..7afd7faf8 100644 --- a/lib/WebGUI/Crud.pm +++ b/lib/WebGUI/Crud.pm @@ -233,7 +233,7 @@ sub crud_createTable { my $tableName = $class->crud_getTableName($session); $class->crud_dropTable($session); $db->write('create table '.$dbh->quote_identifier($tableName).' ( - '.$dbh->quote_identifier($class->crud_getTableKey($session)).' CHAR(22) binary not null default "" primary key, + '.$dbh->quote_identifier($class->crud_getTableKey($session)).' CHAR(22) binary not null primary key, sequenceNumber int not null default 1, dateCreated datetime, lastUpdated datetime @@ -468,7 +468,7 @@ sub crud_updateTable { my $notNullClause = ($isKey || $defaultValue ne "") ? "not null" : ""; my $defaultClause = ''; if ($fieldType !~ /(?:text|blob)$/i) { - $defaultClause = "default ".$dbh->quote($defaultValue); + $defaultClause = "default ".$dbh->quote($defaultValue) if ($defaultValue ne ""); } if (exists $tableFields{$property}) { my $changed = 0; diff --git a/sbin/.gitignore b/sbin/.gitignore index 55928e328..b600508d0 100644 --- a/sbin/.gitignore +++ b/sbin/.gitignore @@ -1 +1,2 @@ +/preload.custom /preload.exclude diff --git a/sbin/preload.custom b/sbin/preload.custom deleted file mode 100755 index e08d25c9e..000000000 --- a/sbin/preload.custom +++ /dev/null @@ -1,6 +0,0 @@ -# Add paths to lib folders where you have custom plugins for WebGUI. -# Note that the folder must contain the same directory structure of -# of WebGUI itself. This file should reside at WebGUI/sbin/preload.custom -/data/WebGUI/custom/customlib_honeypot/lib -/data/WebGUI/custom/webgui_newsletter/lib -/data/WebGUI/custom/webgui_specialstate/lib diff --git a/www/extras/assets/newsletter_collection.gif b/www/extras/assets/newsletter_collection.gif deleted file mode 100644 index 869f8628e..000000000 Binary files a/www/extras/assets/newsletter_collection.gif and /dev/null differ diff --git a/www/extras/assets/small/newsletter_collection.gif b/www/extras/assets/small/newsletter_collection.gif deleted file mode 100644 index 2987916bc..000000000 Binary files a/www/extras/assets/small/newsletter_collection.gif and /dev/null differ