File roundcubemail-skin-base4kids.spec of Package roundcubemail-skin-base4kids

%if 0%{?opensuse_bs}
#!BuildIgnore: lighttpd
#!BuildIgnore: nginx
%endif

%define lock_version() %{1} = %(rpm -q --queryformat "%%{EVR}" %{1})

%{!?php_inidir: %global php_inidir %{_sysconfdir}/php.d}

%if 0%{?suse_version} < 1 && 0%{?fedora} < 1 && 0%{?rhel} < 7
%global with_systemd 0
%else
%global with_systemd 1
%endif

%if 0%{?suse_version}
%global httpd_group www
%global httpd_name apache2
%global httpd_user wwwrun
%else
%if 0%{?plesk}
%global httpd_group roundcube_sysgroup
%global httpd_name httpd
%global httpd_user roundcube_sysuser
%else
%global httpd_group apache
%global httpd_name httpd
%global httpd_user apache
%endif
%endif

%global datadir %{_datadir}/roundcubemail
%global plugindir %{datadir}/plugins
%global confdir %{_sysconfdir}/roundcubemail
%global tmpdir %{_var}/lib/roundcubemail

Name:               roundcubemail-skin-base4kids
Version:            0.2019.11.27
Release:            1%{?dist}
Summary:            Base4Kids reponsive skin for Roundcube

Group:              Web/Applications
License:            CC-BY-SA
URL:                https://kolabsystems.com

Source0:            %{name}-%{version}.tar.gz
Source1:            comm.py

BuildArch:          noarch

BuildRequires:      nodejs-less
BuildRequires:      php-lessphp
BuildRequires:      python
BuildRequires:      roundcubemail(skin-elastic)
BuildRequires:      roundcubemail-plugin-libkolab-skin-elastic

Requires:           %lock_version roundcubemail-core
Requires:           %lock_version roundcubemail-skin-elastic
Requires:           %lock_version roundcubemail-plugin-libkolab-skin-elastic

Requires:           roundcubemail(skin-base4kids) = %{?epoch:%%{epoch}:}%{version}-%{release}
Requires:           roundcubemail(skin-base4kids-assets) = %{?epoch:%%{epoch}:}%{version}-%{release}

%description
This package contains the Plesk Premium Email skin for Roundcube

%package core
Summary:            Plesk Premium Email Web Client skin
Group:              Applications/Internet
Requires:           %lock_version roundcubemail-core
Provides:           roundcubemail(skin-base4kids) = %{?epoch:%%{epoch}:}%{version}-%{release}

%description core
Kolab skin for Roundcube

%package assets
Summary:            Assets for the Plesk Premium Email skin
Group:              Applications/Internet
Provides:           roundcubemail(skin-base4kids-assets) = %{?epoch:%%{epoch}:}%{version}-%{release}

%description assets
Assets for the Plesk Premium Email skin

%prep
%setup -q -n %{name}-%{version}

rm -rvf contargo/
rm -rvf kolab/
rm -rvf now/
rm -rvf plesk/

find . | sort

find \
    %{datadir}/skins/elastic/ \
    %{datadir}/public_html/assets/skins/elastic/ \
    %{datadir}/plugins/libkolab/skins/elastic/ \
    %{datadir}/public_html/assets/plugins/libkolab/skins/elastic/ \
    -type f | sort | while read file; do
    target_dir=$(dirname ${file} | sed -e 's|%{datadir}|.|g' -e 's|./public_html/assets/|./|g' -e 's|./public_html/assets/plugins/libkolab/|./|g' -e 's/elastic/base4kids/g')
    file_name=$(basename ${file})
    if [ ! -d ${target_dir} ]; then
        %{__mkdir_p} ${target_dir}
    fi
    cp -av ${file} ${target_dir}
done

cat ./plugins/libkolab/skins/base4kids/libkolab.less

find . | sort

sed -i -e 's/"elastic"/"base4kids"/g' \
    $(find skins/base4kids/ plugins/libkolab/skins/base4kids/ -type f)

find base4kids/ -type f | sort | while read file; do
    target_dir="./skins/$(dirname ${file})"
    file_name=$(basename ${file})
    if [ ! -d ${target_dir} ]; then
        %{__mkdir_p} ${target_dir}
    fi
    cp -av ${file} ${target_dir}
done

rm -rvf base4kids/

sed -i -e 's/"elastic"/"base4kids"/g' plugins/libkolab/skins/base4kids/libkolab.less

find . | sort

%build
# Compile and compress the CSS
for file in `find . -type f -name "styles.less" -o -name "print.less" -o -name "embed.less" -o -name "libkolab.less"`; do
    %{_bindir}/lessc --relative-urls ${file} > $(dirname ${file})/$(basename ${file} .less).css

    sed -i \
        -e "s|../../../skins/base4kids/images/contactpic.png|../../../../skins/base4kids/images/contactpic.png|" \
        -e "s|../../../skins/base4kids/images/watermark.jpg|../../../../skins/base4kids/images/watermark.jpg|" \
        $(dirname ${file})/$(basename ${file} .less).css

    cat $(dirname ${file})/$(basename ${file} .less).css
done

for orig_dir in "skins/base4kids/" "plugins/libkolab/skins/base4kids/"; do
    asset_dir="public_html/assets/${orig_dir}"

    # Compress the CSS
    for file in `find ${orig_dir} -type f -name "*.css"`; do
        asset_loc=$(dirname $(echo ${file} | %{__sed} -e "s|${orig_dir}|${asset_dir}|g"))
        %{__mkdir_p} ${asset_loc}
        cat ${file} | %{_bindir}/python-cssmin > ${asset_loc}/$(basename ${file}) && \
            %{__rm} -rf ${file} || \
            %{__mv} -v ${file} ${asset_loc}/$(basename ${file})
    done || :

    # Compress the JS, but not the already minified
    for file in `find ${orig_dir} -type f -name "*.js" ! -name "*.min.js"`; do
        asset_loc=$(dirname $(echo ${file} | %{__sed} -e "s|${orig_dir}|${asset_dir}|g"))
        %{__mkdir_p} ${asset_loc}
        uglifyjs ${file} > ${asset_loc}/$(basename ${file}) && \
            %{__rm} -rf ${file} || \
            %{__mv} -v ${file} ${asset_loc}/$(basename ${file})
    done || :

    # The already minified JS can just be copied over to the assets location
    for file in `find ${orig_dir} -type f -name "*.min.js"`; do
        asset_loc=$(dirname $(echo ${file} | %{__sed} -e "s|${orig_dir}|${asset_dir}|g"))
        %{__mkdir_p} ${asset_loc}
        %{__mv} -v ${file} ${asset_loc}/$(basename ${file})
    done || :

    # Other assets
    for file in $(find ${orig_dir} -type f \
            -name "*.eot" -o \
            -name "*.gif" -o \
            -name "*.ico" -o \
            -name "*.jpg" -o \
            -name "*.mp3" -o \
            -name "*.png" -o \
            -name "*.svg" -o \
            -name "*.swf" -o \
            -name "*.tif" -o \
            -name "*.ttf" -o \
            -name "*.woff" -o \
            -name "*.woff2"
        ); do
        asset_loc=$(dirname $(echo ${file} | %{__sed} -e "s|${orig_dir}|${asset_dir}|g"))
        %{__mkdir_p} ${asset_loc}
        %{__mv} -vf ${file} ${asset_loc}/$(basename $file)
    done || :

    # Purge empty directories
    find ${orig_dir} -type d -empty -delete || :
done

find . | sort

%install
%{__rm} -rvf %{buildroot}
%{__mkdir_p} \
    %{buildroot}%{datadir}/public_html/assets/skins/ \
    %{buildroot}%{datadir}/skins/

cp -av skins/base4kids/ %{buildroot}%{datadir}/skins/.
cp -av public_html/assets/skins/base4kids/ %{buildroot}%{datadir}/public_html/assets/skins/base4kids/
cp -av plugins/ %{buildroot}%{datadir}/plugins
cp -av public_html/assets/plugins/ %{buildroot}%{datadir}/public_html/assets/.

# Workaround for watermark.html
cp -av skins/base4kids/watermark.html %{buildroot}%{datadir}/public_html/assets/skins/base4kids/

%files
%defattr(-,root,root,-)

%files core
%defattr(-,root,root,-)
%{datadir}/skins/base4kids/
%{datadir}/plugins/libkolab/

%files assets
%defattr(-,root,root,-)
%{datadir}/public_html/assets/skins/base4kids/
%{datadir}/public_html/assets/plugins/libkolab/

%changelog
* Mon Jul  6 2020 Jeroen van Meeuwen <vanmeeuwen@kolabsys.com> - 0.2019.11.27-2
- Rebuild against core skin updates

* Wed Dec  4 2019 Jeroen van Meeuwen <vanmeeuwen@kolabsys.com> - 0.2019.11.27-1
- Release of version 0.2019.11.27
- Improve task menu
- Change of logo

* Mon Jul  1 2019 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 0.2019.05.06-4
- Rebase, rebuild

* Mon Feb 18 2019 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 0.2019.02.18-1
- Initial packaged version