commit
6d47eb1d91
18
.travis.yml
18
.travis.yml
@ -12,6 +12,8 @@ env:
|
||||
- DB=mysql
|
||||
- DB=pgsql
|
||||
- DB=sqlite
|
||||
allow_failures:
|
||||
- DB=sqlite
|
||||
|
||||
cache:
|
||||
directories:
|
||||
@ -41,13 +43,15 @@ script:
|
||||
after_failure:
|
||||
- head -n 100 data/config/*
|
||||
- ls /var/run/mysql*
|
||||
- ls /var/log/*mysql*
|
||||
- cat /var/log/mysql.err
|
||||
- cat /var/log/mysql.log
|
||||
- cat /var/log/mysql/error.log
|
||||
- cat /var/log/mysql/slow.log
|
||||
- ls /var/log/postgresql
|
||||
- cat /var/log/postgresql/postgresql*
|
||||
# All of the below commands require sudo, which we can't use without losing some speed & caching.
|
||||
# SEE: https://docs.travis-ci.com/user/workers/container-based-infrastructure/
|
||||
# - ls /var/log/*mysql*
|
||||
# - cat /var/log/mysql.err
|
||||
# - cat /var/log/mysql.log
|
||||
# - cat /var/log/mysql/error.log
|
||||
# - cat /var/log/mysql/slow.log
|
||||
# - ls /var/log/postgresql
|
||||
# - cat /var/log/postgresql/postgresql*
|
||||
|
||||
after_script:
|
||||
- wget https://scrutinizer-ci.com/ocular.phar
|
||||
|
@ -11,6 +11,8 @@
|
||||
# Shimmie
|
||||
|
||||
[](https://travis-ci.org/shish/shimmie2)
|
||||
[](https://scrutinizer-ci.com/g/shish/shimmie2/?branch=master)
|
||||
[](https://scrutinizer-ci.com/g/shish/shimmie2/?branch=master)
|
||||
|
||||
This is the main branch of Shimmie, if you know anything at all about running
|
||||
websites, this is the version to use.
|
||||
@ -26,21 +28,22 @@ check out one of the versioned branches.
|
||||
|
||||
# Installation
|
||||
|
||||
0. Download the latest release under [Releases](https://github.com/shish/shimmie2/releases).
|
||||
1. Create a blank database
|
||||
2. Unzip shimmie into a folder on the web host
|
||||
3. Visit the folder with a web browser
|
||||
4. Enter the location of the database
|
||||
5. Click "install". Hopefully you'll end up at the welcome screen; if
|
||||
1. Download the latest release under [Releases](https://github.com/shish/shimmie2/releases).
|
||||
2. Create a blank database
|
||||
3. Unzip shimmie into a folder on the web host
|
||||
4. Visit the folder with a web browser
|
||||
5. Enter the location of the database
|
||||
6. Click "install". Hopefully you'll end up at the welcome screen; if
|
||||
not, you should be given instructions on how to fix any errors~
|
||||
|
||||
# Installation (Development)
|
||||
|
||||
0. Download the shimmie via the "Download Zip" button.
|
||||
1. Install [Composer](https://getcomposer.org/). (If you don't already have it)
|
||||
2. Run `composer global require "fxp/composer-asset-plugin:~1.1" --no-plugins`. (This is installed globally due to a known composer bug)
|
||||
3. Run `composer install`
|
||||
4. Follow instructions noted in "Installation" (Excluding 0).
|
||||
1. Download shimmie via the "Download Zip" button on the [develop](https://github.com/shish/shimmie2/tree/develop) branch.
|
||||
2. Unzip shimmie into a folder on the web host
|
||||
3. Install [Composer](https://getcomposer.org/). (If you don't already have it)
|
||||
4. Run `composer global require "fxp/composer-asset-plugin:~1.1" --no-plugins`. (This is installed globally due to a known composer bug)
|
||||
5. Run `composer install` in the shimmie folder.
|
||||
6. Follow instructions noted in "Installation" (Excluding 1 & 3).
|
||||
|
||||
## Upgrade from 2.3.X
|
||||
|
||||
|
@ -837,7 +837,7 @@ class Artists extends Extension {
|
||||
INSERT INTO artists (user_id, name, notes, created, updated)
|
||||
VALUES (?, ?, ?, now(), now())
|
||||
", array($user->id, $name, $notes));
|
||||
return $database->get_last_insert_id();
|
||||
return $database->get_last_insert_id('artists_id_seq');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,16 +1,36 @@
|
||||
$(function(){
|
||||
var metatags = ['order:id', 'order:width', 'order:height', 'order:filesize', 'order:filename'];
|
||||
|
||||
$('[name=search]').tagit({
|
||||
singleFieldDelimiter: ' ',
|
||||
beforeTagAdded: function(event, ui) {
|
||||
// give special class to negative tags
|
||||
if(ui.tagLabel[0] === '-') {
|
||||
ui.tag.addClass('tag-negative');
|
||||
}else{
|
||||
ui.tag.addClass('tag-positive');
|
||||
if(metatags.indexOf(ui.tagLabel) !== -1) {
|
||||
ui.tag.addClass('tag-metatag');
|
||||
} else {
|
||||
console.log(ui.tagLabel);
|
||||
// give special class to negative tags
|
||||
if(ui.tagLabel[0] === '-') {
|
||||
ui.tag.addClass('tag-negative');
|
||||
}else{
|
||||
ui.tag.addClass('tag-positive');
|
||||
}
|
||||
}
|
||||
},
|
||||
autocomplete : ({
|
||||
source: function (request, response) {
|
||||
var ac_metatags = $.map(
|
||||
$.grep(metatags, function(s) {
|
||||
// Only show metatags for strings longer than one character
|
||||
return (request.term.length > 1 && s.indexOf(request.term) === 0);
|
||||
}),
|
||||
function(item) {
|
||||
return {
|
||||
label : item + ' [metatag]',
|
||||
value : item
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
var isNegative = (request.term[0] === '-');
|
||||
$.ajax({
|
||||
url: base_href + '/api/internal/autocomplete',
|
||||
@ -18,13 +38,17 @@ $(function(){
|
||||
dataType : 'json',
|
||||
type : 'GET',
|
||||
success : function (data) {
|
||||
response($.map(data, function (count, item) {
|
||||
item = (isNegative ? '-'+item : item);
|
||||
return {
|
||||
label : item + ' ('+count+')',
|
||||
value : item
|
||||
};
|
||||
}));
|
||||
response(
|
||||
$.merge(ac_metatags,
|
||||
$.map(data, function (count, item) {
|
||||
item = (isNegative ? '-'+item : item);
|
||||
return {
|
||||
label : item + ' ('+count+')',
|
||||
value : item
|
||||
};
|
||||
})
|
||||
)
|
||||
);
|
||||
},
|
||||
error : function (request, status, error) {
|
||||
alert(error);
|
||||
@ -47,10 +71,9 @@ $(function(){
|
||||
} else if (keyCode == 9) {
|
||||
e.preventDefault();
|
||||
|
||||
var tag = $('.tagit-autocomplete[style*=\"display: block\"] > li:first').text();
|
||||
if(tag){
|
||||
$('[name=search]').tagit('createTag', tag);
|
||||
$('.ui-autocomplete-input').autocomplete('close');
|
||||
var tag = $('.tagit-autocomplete[style*=\"display: block\"] > li:focus, .tagit-autocomplete[style*=\"display: block\"] > li:first').first();
|
||||
if(tag.length){
|
||||
$(tag).click();
|
||||
$('.ui-autocomplete-input').val(''); //If tag already exists, make sure to remove duplicate.
|
||||
}
|
||||
}
|
||||
|
@ -5,4 +5,5 @@
|
||||
input[name=search] ~ input[type=submit] { display: inline-block !important; }
|
||||
|
||||
.tag-negative { background: #ff8080 !important; }
|
||||
.tag-positive { background: #40bf40 !important; }
|
||||
.tag-positive { background: #40bf40 !important; }
|
||||
.tag-metatag { background: #eaa338 !important; }
|
||||
|
@ -7,26 +7,31 @@ class ExtManagerTheme extends Themelet {
|
||||
".make_form(make_link("ext_manager/set"))."
|
||||
<table id='extensions' class='zebra sortable'>
|
||||
<thead>
|
||||
<tr>$h_en<th>Name</th><th>Description</th></tr>
|
||||
<tr>
|
||||
$h_en
|
||||
<th>Name</th>
|
||||
<th>Docs</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
";
|
||||
foreach($extensions as $extension) {
|
||||
if(!$editable && $extension->visibility == "admin") continue;
|
||||
|
||||
$h_name = html_escape(empty($extension->name) ? $extension->ext_name : $extension->name);
|
||||
$h_name = html_escape(empty($extension->name) ? $extension->ext_name : $extension->name);
|
||||
$h_description = html_escape($extension->description);
|
||||
if($extension->enabled === TRUE) $h_enabled = " checked='checked'";
|
||||
else if($extension->enabled === FALSE) $h_enabled = "";
|
||||
else $h_enabled = " disabled checked='checked'";
|
||||
$h_link = make_link("ext_doc/".url_escape($extension->ext_name));
|
||||
$h_link = make_link("ext_doc/".url_escape($extension->ext_name));
|
||||
$h_enabled = ($extension->enabled === TRUE ? " checked='checked'" : ($extension->enabled === FALSE ? "" : " disabled checked='checked'"));
|
||||
$h_enabled_box = $editable ? "<td><input type='checkbox' name='ext_".html_escape($extension->ext_name)."'$h_enabled></td>" : "";
|
||||
$h_docs = ($extension->documentation ? "<a href='$h_link'>■</a>" : ""); //TODO: A proper "docs" symbol would be preferred here.
|
||||
|
||||
$h_en = $editable ? "<td><input type='checkbox' name='ext_".html_escape($extension->ext_name)."'$h_enabled></td>" : "";
|
||||
$html .= "
|
||||
<tr>
|
||||
$h_en
|
||||
<td><a href='$h_link'>$h_name</a></td>
|
||||
<td style='text-align: left;'>$h_description</td>
|
||||
<tr data-ext='{$extension->ext_name}'>
|
||||
{$h_enabled_box}
|
||||
<td>{$h_name}</td>
|
||||
<td>{$h_docs}</td>
|
||||
<td style='text-align: left;'>{$h_description}</td>
|
||||
</tr>";
|
||||
}
|
||||
$h_set = $editable ? "<tfoot><tr><td colspan='5'><input type='submit' value='Set Extensions'></td></tr></tfoot>" : "";
|
||||
|
@ -85,8 +85,7 @@ class LinkImageTheme extends Themelet {
|
||||
return "
|
||||
<tr>
|
||||
<td><label for='".$id."' title='Click to select the textbox'>$label</label></td>
|
||||
<td><input type='text' readonly='readonly' id='".$id."' name='".$id."'
|
||||
value='".html_escape($content)."' onfocus='this.select();'></input></td>
|
||||
<td><input type='text' readonly='readonly' id='".$id."' name='".$id."' value='".html_escape($content)."' onfocus='this.select();' /></td>
|
||||
</tr>
|
||||
";
|
||||
}
|
||||
|
@ -21,6 +21,7 @@ class PoolsTheme extends Themelet {
|
||||
$navlinks .= '<a href="'.make_link('post/view/'.$pool['nav']['next']).'" class="pools_next_img">Next</a>';
|
||||
}
|
||||
if(!empty($navlinks)){
|
||||
$navlinks .= "<div style='height: 5px'></div>";
|
||||
$linksPools[] = $navlinks;
|
||||
}
|
||||
}
|
||||
|
@ -69,7 +69,7 @@ var Tagger = {
|
||||
tag : {
|
||||
submit : function () {
|
||||
var l = this.list.childNodes.length;
|
||||
var tags = Array();
|
||||
var tags = [];
|
||||
for(var i=0; i<l; i++) {
|
||||
var s_tag = this.list.childNodes[i].firstChild.data;
|
||||
tags.push(s_tag);
|
||||
|
@ -89,11 +89,14 @@ $(document).ready(function() {
|
||||
});
|
||||
|
||||
if(document.location.hash.length > 3) {
|
||||
query = document.location.hash.substring(1);
|
||||
a = document.getElementById("prevlink");
|
||||
a.href = a.href + '?' + query;
|
||||
a = document.getElementById("nextlink");
|
||||
a.href = a.href + '?' + query;
|
||||
var query = document.location.hash.substring(1);
|
||||
|
||||
$('#prevlink').attr('href', function(i, attr) {
|
||||
return attr + '?' + query;
|
||||
});
|
||||
$('#nextlink').attr('href', function(i, attr) {
|
||||
return attr + '?' + query;
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
x
Reference in New Issue
Block a user