264 lines
9.7 KiB
Bash
Executable File
264 lines
9.7 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# setup-libs.sh - Richtet lokale JavaScript/CSS Libraries ein
|
|
#
|
|
# Verwendung:
|
|
# chmod +x setup-libs.sh
|
|
# sudo ./setup-libs.sh
|
|
#
|
|
# Struktur:
|
|
# /var/www/html/libs/
|
|
# ├── bootstrap/
|
|
# │ ├── 5.3.0/
|
|
# │ └── current -> 5.3.0
|
|
# ├── jquery/
|
|
# │ ├── 3.6.0/
|
|
# │ └── current -> 3.6.0
|
|
# ...
|
|
#
|
|
# Nutzung in HTML:
|
|
# <link href="/libs/bootstrap/current/css/bootstrap.min.css">
|
|
# <script src="/libs/jquery/current/jquery.min.js">
|
|
#
|
|
|
|
set -e
|
|
|
|
# Konfiguration
|
|
LIBS_BASE="/var/www/html/tools/libs"
|
|
WGET_OPTS="-q --show-progress"
|
|
|
|
# Farben für Ausgabe
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
echo -e "${BLUE}========================================${NC}"
|
|
echo -e "${BLUE} Lokale Libraries Setup${NC}"
|
|
echo -e "${BLUE}========================================${NC}"
|
|
echo ""
|
|
|
|
# Prüfe Root-Rechte
|
|
if [ "$EUID" -ne 0 ]; then
|
|
echo -e "${YELLOW}Hinweis: Ohne Root-Rechte wird nach $HOME/libs installiert${NC}"
|
|
LIBS_BASE="$HOME/libs"
|
|
fi
|
|
|
|
echo -e "${GREEN}Zielverzeichnis: ${LIBS_BASE}${NC}"
|
|
echo ""
|
|
|
|
# Basisverzeichnis erstellen
|
|
mkdir -p "$LIBS_BASE"
|
|
|
|
# ============================================
|
|
# 1. Bootstrap 5.3.0
|
|
# ============================================
|
|
echo -e "${BLUE}[1/7] Bootstrap 5.3.0${NC}"
|
|
BOOTSTRAP_VERSION="5.3.0"
|
|
BOOTSTRAP_DIR="$LIBS_BASE/bootstrap/$BOOTSTRAP_VERSION"
|
|
mkdir -p "$BOOTSTRAP_DIR/css" "$BOOTSTRAP_DIR/js"
|
|
|
|
# CSS
|
|
if [ ! -f "$BOOTSTRAP_DIR/css/bootstrap.min.css" ]; then
|
|
wget $WGET_OPTS -O "$BOOTSTRAP_DIR/css/bootstrap.min.css" \
|
|
"https://cdn.jsdelivr.net/npm/bootstrap@${BOOTSTRAP_VERSION}/dist/css/bootstrap.min.css"
|
|
wget $WGET_OPTS -O "$BOOTSTRAP_DIR/css/bootstrap.min.css.map" \
|
|
"https://cdn.jsdelivr.net/npm/bootstrap@${BOOTSTRAP_VERSION}/dist/css/bootstrap.min.css.map" 2>/dev/null || true
|
|
fi
|
|
|
|
# JS
|
|
if [ ! -f "$BOOTSTRAP_DIR/js/bootstrap.bundle.min.js" ]; then
|
|
wget $WGET_OPTS -O "$BOOTSTRAP_DIR/js/bootstrap.bundle.min.js" \
|
|
"https://cdn.jsdelivr.net/npm/bootstrap@${BOOTSTRAP_VERSION}/dist/js/bootstrap.bundle.min.js"
|
|
wget $WGET_OPTS -O "$BOOTSTRAP_DIR/js/bootstrap.bundle.min.js.map" \
|
|
"https://cdn.jsdelivr.net/npm/bootstrap@${BOOTSTRAP_VERSION}/dist/js/bootstrap.bundle.min.js.map" 2>/dev/null || true
|
|
fi
|
|
|
|
# Symlink
|
|
ln -sfn "$BOOTSTRAP_VERSION" "$LIBS_BASE/bootstrap/current"
|
|
echo -e "${GREEN} ✓ Bootstrap $BOOTSTRAP_VERSION installiert${NC}"
|
|
|
|
# ============================================
|
|
# 2. jQuery 3.6.0
|
|
# ============================================
|
|
echo -e "${BLUE}[2/7] jQuery 3.6.0${NC}"
|
|
JQUERY_VERSION="3.6.0"
|
|
JQUERY_DIR="$LIBS_BASE/jquery/$JQUERY_VERSION"
|
|
mkdir -p "$JQUERY_DIR"
|
|
|
|
if [ ! -f "$JQUERY_DIR/jquery.min.js" ]; then
|
|
wget $WGET_OPTS -O "$JQUERY_DIR/jquery.min.js" \
|
|
"https://code.jquery.com/jquery-${JQUERY_VERSION}.min.js"
|
|
wget $WGET_OPTS -O "$JQUERY_DIR/jquery.min.map" \
|
|
"https://code.jquery.com/jquery-${JQUERY_VERSION}.min.map" 2>/dev/null || true
|
|
fi
|
|
|
|
ln -sfn "$JQUERY_VERSION" "$LIBS_BASE/jquery/current"
|
|
echo -e "${GREEN} ✓ jQuery $JQUERY_VERSION installiert${NC}"
|
|
|
|
# ============================================
|
|
# 3. Bootstrap Table 1.21.0
|
|
# ============================================
|
|
echo -e "${BLUE}[3/7] Bootstrap Table 1.21.0${NC}"
|
|
BSTABLE_VERSION="1.21.0"
|
|
BSTABLE_DIR="$LIBS_BASE/bootstrap-table/$BSTABLE_VERSION"
|
|
mkdir -p "$BSTABLE_DIR/css" "$BSTABLE_DIR/js" "$BSTABLE_DIR/locale"
|
|
|
|
if [ ! -f "$BSTABLE_DIR/css/bootstrap-table.min.css" ]; then
|
|
wget $WGET_OPTS -O "$BSTABLE_DIR/css/bootstrap-table.min.css" \
|
|
"https://unpkg.com/bootstrap-table@${BSTABLE_VERSION}/dist/bootstrap-table.min.css"
|
|
fi
|
|
|
|
if [ ! -f "$BSTABLE_DIR/js/bootstrap-table.min.js" ]; then
|
|
wget $WGET_OPTS -O "$BSTABLE_DIR/js/bootstrap-table.min.js" \
|
|
"https://unpkg.com/bootstrap-table@${BSTABLE_VERSION}/dist/bootstrap-table.min.js"
|
|
fi
|
|
|
|
if [ ! -f "$BSTABLE_DIR/locale/bootstrap-table-de-DE.min.js" ]; then
|
|
wget $WGET_OPTS -O "$BSTABLE_DIR/locale/bootstrap-table-de-DE.min.js" \
|
|
"https://unpkg.com/bootstrap-table@${BSTABLE_VERSION}/dist/locale/bootstrap-table-de-DE.min.js"
|
|
fi
|
|
|
|
ln -sfn "$BSTABLE_VERSION" "$LIBS_BASE/bootstrap-table/current"
|
|
echo -e "${GREEN} ✓ Bootstrap Table $BSTABLE_VERSION installiert${NC}"
|
|
|
|
# ============================================
|
|
# 4. Font Awesome 6.4.0
|
|
# ============================================
|
|
echo -e "${BLUE}[4/7] Font Awesome 6.4.0${NC}"
|
|
FA_VERSION="6.4.0"
|
|
FA_DIR="$LIBS_BASE/fontawesome/$FA_VERSION"
|
|
mkdir -p "$FA_DIR"
|
|
|
|
if [ ! -f "$FA_DIR/css/all.min.css" ]; then
|
|
# Font Awesome als ZIP herunterladen und entpacken
|
|
TEMP_DIR=$(mktemp -d)
|
|
wget $WGET_OPTS -O "$TEMP_DIR/fontawesome.zip" \
|
|
"https://use.fontawesome.com/releases/v${FA_VERSION}/fontawesome-free-${FA_VERSION}-web.zip"
|
|
unzip -q "$TEMP_DIR/fontawesome.zip" -d "$TEMP_DIR"
|
|
cp -r "$TEMP_DIR/fontawesome-free-${FA_VERSION}-web/css" "$FA_DIR/"
|
|
cp -r "$TEMP_DIR/fontawesome-free-${FA_VERSION}-web/webfonts" "$FA_DIR/"
|
|
rm -rf "$TEMP_DIR"
|
|
fi
|
|
|
|
ln -sfn "$FA_VERSION" "$LIBS_BASE/fontawesome/current"
|
|
echo -e "${GREEN} ✓ Font Awesome $FA_VERSION installiert${NC}"
|
|
|
|
# ============================================
|
|
# 5. vis.js Network 9.1.2
|
|
# ============================================
|
|
echo -e "${BLUE}[5/7] vis.js Network 9.1.2${NC}"
|
|
VIS_VERSION="9.1.2"
|
|
VIS_DIR="$LIBS_BASE/vis-network/$VIS_VERSION"
|
|
mkdir -p "$VIS_DIR"
|
|
|
|
if [ ! -f "$VIS_DIR/vis-network.min.js" ]; then
|
|
wget $WGET_OPTS -O "$VIS_DIR/vis-network.min.js" \
|
|
"https://unpkg.com/vis-network@${VIS_VERSION}/standalone/umd/vis-network.min.js"
|
|
fi
|
|
|
|
ln -sfn "$VIS_VERSION" "$LIBS_BASE/vis-network/current"
|
|
echo -e "${GREEN} ✓ vis.js Network $VIS_VERSION installiert${NC}"
|
|
|
|
# ============================================
|
|
# 6. jsTree 3.3.16
|
|
# ============================================
|
|
echo -e "${BLUE}[6/7] jsTree 3.3.16${NC}"
|
|
JSTREE_VERSION="3.3.16"
|
|
JSTREE_DIR="$LIBS_BASE/jstree/$JSTREE_VERSION"
|
|
mkdir -p "$JSTREE_DIR/themes/default"
|
|
|
|
if [ ! -f "$JSTREE_DIR/jstree.min.js" ]; then
|
|
wget $WGET_OPTS -O "$JSTREE_DIR/jstree.min.js" \
|
|
"https://cdnjs.cloudflare.com/ajax/libs/jstree/${JSTREE_VERSION}/jstree.min.js"
|
|
fi
|
|
|
|
if [ ! -f "$JSTREE_DIR/themes/default/style.min.css" ]; then
|
|
wget $WGET_OPTS -O "$JSTREE_DIR/themes/default/style.min.css" \
|
|
"https://cdnjs.cloudflare.com/ajax/libs/jstree/${JSTREE_VERSION}/themes/default/style.min.css"
|
|
|
|
# Theme-Bilder
|
|
wget $WGET_OPTS -O "$JSTREE_DIR/themes/default/32px.png" \
|
|
"https://cdnjs.cloudflare.com/ajax/libs/jstree/${JSTREE_VERSION}/themes/default/32px.png" 2>/dev/null || true
|
|
wget $WGET_OPTS -O "$JSTREE_DIR/themes/default/40px.png" \
|
|
"https://cdnjs.cloudflare.com/ajax/libs/jstree/${JSTREE_VERSION}/themes/default/40px.png" 2>/dev/null || true
|
|
wget $WGET_OPTS -O "$JSTREE_DIR/themes/default/throbber.gif" \
|
|
"https://cdnjs.cloudflare.com/ajax/libs/jstree/${JSTREE_VERSION}/themes/default/throbber.gif" 2>/dev/null || true
|
|
fi
|
|
|
|
ln -sfn "$JSTREE_VERSION" "$LIBS_BASE/jstree/current"
|
|
echo -e "${GREEN} ✓ jsTree $JSTREE_VERSION installiert${NC}"
|
|
|
|
# ============================================
|
|
# 7. Bootstrap Icons 1.11.0 (optional)
|
|
# ============================================
|
|
echo -e "${BLUE}[7/8] Bootstrap Icons 1.11.0${NC}"
|
|
BSI_VERSION="1.11.0"
|
|
BSI_DIR="$LIBS_BASE/bootstrap-icons/$BSI_VERSION"
|
|
mkdir -p "$BSI_DIR"
|
|
|
|
if [ ! -f "$BSI_DIR/bootstrap-icons.min.css" ]; then
|
|
wget $WGET_OPTS -O "$BSI_DIR/bootstrap-icons.min.css" \
|
|
"https://cdn.jsdelivr.net/npm/bootstrap-icons@${BSI_VERSION}/font/bootstrap-icons.min.css"
|
|
|
|
# Fonts-Verzeichnis
|
|
mkdir -p "$BSI_DIR/fonts"
|
|
wget $WGET_OPTS -O "$BSI_DIR/fonts/bootstrap-icons.woff" \
|
|
"https://cdn.jsdelivr.net/npm/bootstrap-icons@${BSI_VERSION}/font/fonts/bootstrap-icons.woff" 2>/dev/null || true
|
|
wget $WGET_OPTS -O "$BSI_DIR/fonts/bootstrap-icons.woff2" \
|
|
"https://cdn.jsdelivr.net/npm/bootstrap-icons@${BSI_VERSION}/font/fonts/bootstrap-icons.woff2" 2>/dev/null || true
|
|
fi
|
|
|
|
ln -sfn "$BSI_VERSION" "$LIBS_BASE/bootstrap-icons/current"
|
|
echo -e "${GREEN} ✓ Bootstrap Icons $BSI_VERSION installiert${NC}"
|
|
|
|
# ============================================
|
|
# 8. Bootstrap 3 Typeahead 4.0.2
|
|
# ============================================
|
|
echo -e "${BLUE}[8/8] Bootstrap 3 Typeahead 4.0.2${NC}"
|
|
TYPEAHEAD_VERSION="4.0.2"
|
|
TYPEAHEAD_DIR="$LIBS_BASE/bootstrap3-typeahead/$TYPEAHEAD_VERSION"
|
|
mkdir -p "$TYPEAHEAD_DIR"
|
|
|
|
if [ ! -f "$TYPEAHEAD_DIR/bootstrap3-typeahead.min.js" ]; then
|
|
wget $WGET_OPTS -O "$TYPEAHEAD_DIR/bootstrap3-typeahead.min.js" \
|
|
"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-3-typeahead/${TYPEAHEAD_VERSION}/bootstrap3-typeahead.min.js"
|
|
fi
|
|
|
|
ln -sfn "$TYPEAHEAD_VERSION" "$LIBS_BASE/bootstrap3-typeahead/current"
|
|
echo -e "${GREEN} ✓ Bootstrap 3 Typeahead $TYPEAHEAD_VERSION installiert${NC}"
|
|
|
|
# ============================================
|
|
# Berechtigungen setzen
|
|
# ============================================
|
|
echo ""
|
|
echo -e "${BLUE}Setze Berechtigungen...${NC}"
|
|
if [ "$EUID" -eq 0 ]; then
|
|
chown -R www-data:www-data "$LIBS_BASE"
|
|
fi
|
|
chmod -R 755 "$LIBS_BASE"
|
|
|
|
# ============================================
|
|
# Übersicht anzeigen
|
|
# ============================================
|
|
echo ""
|
|
echo -e "${GREEN}========================================${NC}"
|
|
echo -e "${GREEN} Installation abgeschlossen!${NC}"
|
|
echo -e "${GREEN}========================================${NC}"
|
|
echo ""
|
|
echo "Struktur:"
|
|
echo ""
|
|
find "$LIBS_BASE" -maxdepth 3 -type d | head -30
|
|
echo ""
|
|
echo "Symlinks:"
|
|
ls -la "$LIBS_BASE"/*/current 2>/dev/null || true
|
|
echo ""
|
|
echo -e "${YELLOW}Hinweis: Passen Sie die Header.html entsprechend an.${NC}"
|
|
echo ""
|
|
echo "Beispiel-Pfade:"
|
|
echo " /libs/bootstrap/current/css/bootstrap.min.css"
|
|
echo " /libs/jquery/current/jquery.min.js"
|
|
echo " /libs/fontawesome/current/css/all.min.css"
|
|
echo ""
|