summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile53
-rw-r--r--README.md36
-rw-r--r--static/css/pomf.css3
-rw-r--r--static/img/glyphicons-512-copy.pngbin0 -> 1356 bytes
-rw-r--r--static/js/app.js22
5 files changed, 98 insertions, 16 deletions
diff --git a/Makefile b/Makefile
index 96b3118..1d4d553 100644
--- a/Makefile
+++ b/Makefile
@@ -1,3 +1,4 @@
+MAKE="make"
INSTALL="install"
TAR="tar"
GREP="grep"
@@ -6,9 +7,11 @@ NPM="npm"
DESTDIR="./dist"
PKG_VERSION := $( $(GREP) -Po '(?<="version": ")[^"]*' )
TMPDIR := $(shell mktemp -d)
+# default modules
+MODULES="php"
-all: builddirs npm_dependencies swig htmlmin min-css min-js copy-img copy-php
-
+all: builddirs npm_dependencies swig htmlmin min-css min-js copy-img submodules
+
swig:
$(NODE) node_modules/swig/bin/swig.js render -j dist.json templates/faq.swig > $(CURDIR)/build/faq.html
$(NODE) node_modules/swig/bin/swig.js render -j dist.json templates/index.swig > $(CURDIR)/build/index.html
@@ -20,23 +23,40 @@ htmlmin:
$(NODE) node_modules/htmlmin/bin/htmlmin $(CURDIR)/build/tools.html -o $(CURDIR)/build/tools.html
installdirs:
- mkdir -p $(DESTDIR)/ $(DESTDIR)/img $(DESTDIR)/classes $(DESTDIR)/includes
+ mkdir -p $(DESTDIR)/ $(DESTDIR)/img
+ifneq (,$(findstring php,$(MODULES)))
+ mkdir -p $(DESTDIR)/classes $(DESTDIR)/includes
+endif
+ifneq (,$(findstring moe,$(MODULES)))
+ mkdir -p $(DESTDIR)/moe/{css,fonts,includes,js,login,panel/css/font,panel/css/images,register,templates}
+endif
min-css:
- $(NODE) ./node_modules/.bin/cleancss --s0 ./static/css/pomf.css > $(CURDIR)/build/pomf.min.css
+ $(NODE) $(CURDIR)/node_modules/.bin/cleancss --s0 $(CURDIR)/static/css/pomf.css > $(CURDIR)/build/pomf.min.css
min-js:
echo "// @source https://github.com/pomf/pomf/tree/master/static/js" > $(CURDIR)/build/pomf.min.js
echo "// @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat" >> $(CURDIR)/build/pomf.min.js
- $(NODE) ./node_modules/.bin/uglifyjs --screw-ie8 ./static/js/app.js >> $(CURDIR)/build/pomf.min.js
+ $(NODE) $(CURDIR)/node_modules/.bin/uglifyjs --screw-ie8 ./static/js/app.js >> $(CURDIR)/build/pomf.min.js
echo "// @license-end" >> $(CURDIR)/build/pomf.min.js
copy-img:
- cp -v ./static/img/*.png $(CURDIR)/build/img/
- cp -vT ./static/img/favicon.ico $(CURDIR)/build/favicon.ico
+ cp -v $(CURDIR)/static/img/*.png $(CURDIR)/build/img/
+ cp -vT $(CURDIR)/static/img/favicon.ico $(CURDIR)/build/favicon.ico
copy-php:
- cp -rv ./php/* $(CURDIR)/build/
+ifneq ($(wildcard $(CURDIR)/php/.),)
+ cp -rv $(CURDIR)/php/* $(CURDIR)/build/
+else
+ $(error The php submodule was not found)
+endif
+
+copy-moe:
+ifneq ($(wildcard $(CURDIR)/moe/.),)
+ cp -rv $(CURDIR)/moe $(CURDIR)/build/moe
+else
+ $(error The moe submodule was not found)
+endif
install: installdirs
cp -rv $(CURDIR)/build/* $(DESTDIR)/
@@ -59,4 +79,19 @@ npm_dependencies:
$(NPM) install
builddirs:
- mkdir -p $(CURDIR)/build $(CURDIR)/build/img $(CURDIR)/build/classes $(CURDIR)/build/includes
+ mkdir -p $(CURDIR)/build $(CURDIR)/build/img
+ifneq (,$(findstring php,$(MODULES)))
+ mkdir -p $(CURDIR)/build/classes $(CURDIR)/build/includes
+endif
+ifneq (,$(findstring moe,$(MODULES)))
+ mkdir -p $(CURDIR)/build/moe/{css,fonts,includes,js,login,panel/css/font,panel/css/images,register,templates}
+endif
+
+submodules:
+ $(info The following modules will be enabled: $(MODULES))
+ifneq (,$(findstring php,$(MODULES)))
+ $(MAKE) copy-php
+endif
+ifneq (,$(findstring moe,$(MODULES)))
+ $(MAKE) copy-moe
+endif
diff --git a/README.md b/README.md
index 29f2422..b5710f9 100644
--- a/README.md
+++ b/README.md
@@ -40,12 +40,27 @@ Node, or NPM. So we'll just assume you already have them all running well.
### Compiling
-Assuming you already have Node and NPM working, compilation is easy. Use the
-following shell code:
+First you must get a copy of the pomf code. To do so, clone this git repo.
+You will need to recursively clone the repo to get the required PHP submodule,
+and the optional user panel submodule.
```bash
git clone --recursive https://github.com/pomf/pomf
+```
+If you don't want either of the submodules run the following command,
+```bash
+git clone https://github.com/pomf/pomf
+```
+
+Assuming you already have Node and NPM working, compilation is easy. If you would like any additional submodules, or to exclude the default PHP submodule, use the `MODULES="..."` variable.
+
+Run the following commands to do so.
+```bash
cd pomf/
make
+# alternatively
+make MODULES="" # compile no submodules; exclude the default php backend module
+make MODULES="php moe" # compile the php and moe submodules
+#
make install
```
OR
@@ -104,11 +119,17 @@ Remember to enable `deflate_module` and `filter_module` modules in your Apache
configuration file.
### Migrating from MySQL to SQLite
+ ,
+Compared to SQLite, MySQL is relatively complicated to administer, brings in many unneeded dependencies, and consumes more resources. Additonally, as a network service, poorly configured installations have the potential
+to pose a security risk.
+
+For these reasons, you may wish to use SQLite rather than MySQL.
+
+Fortunately, it is incredibly simple to migrate your database. This may be done on a live server, if you desire, and requires zero downtime.
-For older versions of Pomf you may want to migrate to SQLite. Fortunately, it is incredibly simple to migrate your database. This may be done on a live server, and should require zero downtime.
+The process described below involves running these commands on a live server. Nothing done here affects your main site, until running the very last command, which is done after verifying there are no issues.
-_If doing this on a live server, you way wish to work in a subdirectory (or vhost, or equivelant), so that any complications or mistakes do not affect your main site.
-If you choose not to do so, know that mistakes in the changes outlined below, will only temporarily impact **uploading**, causing **Server error** to be displayed. None of these steps are destructive, and are easily reverted._
+No changes described here are destructive, and are easily reverted. They only have the potential to cause uploading to fail gracefully, and will not affect downloading.
Run the following commands as root, to dump your database, and make a SQLite database with the contents.
```bash
@@ -119,14 +140,15 @@ rm /tmp/m2s
chown -R nginx:nginx /var/db/pomf #replace user as appropriate
chmod 0750 /var/db/pomf && chmod 0640 /var/db/pomf/sq3
```
-Edit the file `php/includes/settings.inc.php`, in the subdirectory you just made, making the changes outlined below.
+Edit the file `php/includes/settings.inc.php`, in your **source directory**, making the changes outlined below. Note, changing the second two lines is optional, as they are simply ignored when using SQLite.
```php
define('POMF_DB_CONN', '[stuff]'); ---> define('POMF_DB_CONN', 'sqlite:/var/db/pomf/pomf.sq3');`
define('POMF_DB_USER', '[stuff]'); ---> define('POMF_DB_USER', null);
define('POMF_DB_PASS', '[stuff]'); ---> define('POMF_DB_PASS', null);
```
+Then, run `make DESTDIR=/path/to/main_site/testing_dir` (note the *testing_dir* component) to rebuild the website, and copy it into place, in a new testing subdirectory.
-Then, run `make` to rebuild the website pages, and copy the new `settings.inc.php` file into place.
+Now, navigate to this subdirectory in your web browser, e.g. https://try.pantsu.cat/testing_dir, and verify that uploading works fine. If so, excellent! You may rerun `make DESTDIR=/path/to/main_site` to update your main site.
All done! You may disable or uninstall MySQL if you wish.
diff --git a/static/css/pomf.css b/static/css/pomf.css
index 9bc5852..ae4e75e 100644
--- a/static/css/pomf.css
+++ b/static/css/pomf.css
@@ -231,6 +231,9 @@ nav > ul > li:last-child:after {
.error#upload-filelist {
color: #891A18;
}
+button.upload-clipboard-btn {
+ height: 16px;
+}
.error#upload-filelist .progress-percent {
color: #B94A48;
}
diff --git a/static/img/glyphicons-512-copy.png b/static/img/glyphicons-512-copy.png
new file mode 100644
index 0000000..4e293dc
--- /dev/null
+++ b/static/img/glyphicons-512-copy.png
Binary files differ
diff --git a/static/js/app.js b/static/js/app.js
index e9e755a..27a9353 100644
--- a/static/js/app.js
+++ b/static/js/app.js
@@ -81,6 +81,26 @@ document.addEventListener('DOMContentLoaded', function () {
link.textContent = response.files[0].url.replace(/.*?:\/\//g, '');
link.href = response.files[0].url;
url.appendChild(link);
+ var copy = document.createElement('button');
+ copy.className = 'upload-clipboard-btn';
+ var glyph = document.createElement('img');
+ glyph.src = 'img/glyphicons-512-copy.png';
+ copy.appendChild(glyph);
+ url.appendChild(copy);
+ copy.addEventListener("click", function(event) {
+ /*why create element? text needs to be on screen to be selected
+ and thus copied. only text we have on screen is the link without
+ the http[s]:// part. so this creates an element with the full link
+ for a moment and then deletes. */
+ var element = document.createElement('a');
+ element.textContent = response.files[0].url;
+ link.appendChild(element);
+ var range = document.createRange();
+ range.selectNode(element);
+ window.getSelection().addRange(range);
+ document.execCommand("copy");
+ link.removeChild(element);
+ });
} else {
bar.innerHTML = 'Error: ' + response.description;
}
@@ -172,4 +192,6 @@ document.addEventListener('DOMContentLoaded', function () {
uploadButton.addEventListener('click', selectFiles.bind(this, uploadInput));
uploadButton.addEventListener('drop', handleDragDrop.bind(this, state, uploadButton), false);
document.getElementById('upload-form').classList.add('js');
+
+
});