Merge branch '0.8.x' of git@gitorious.org:laconica/dev into 0.8.x
This commit is contained in:
commit
0b53a820c2
|
@ -31,8 +31,6 @@ if (!defined('LACONICA')) {
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
//require_once INSTALLDIR.'/lib/personalgroupnav.php';
|
|
||||||
//require_once INSTALLDIR.'/lib/feedlist.php';
|
|
||||||
require_once INSTALLDIR.'/lib/attachmentlist.php';
|
require_once INSTALLDIR.'/lib/attachmentlist.php';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -67,11 +65,11 @@ class AttachmentAction extends Action
|
||||||
{
|
{
|
||||||
parent::prepare($args);
|
parent::prepare($args);
|
||||||
|
|
||||||
$id = $this->arg('attachment');
|
if ($id = $this->trimmed('attachment')) {
|
||||||
|
$this->attachment = File::staticGet($id);
|
||||||
|
}
|
||||||
|
|
||||||
$this->attachment = File::staticGet($id);
|
if (empty($this->attachment)) {
|
||||||
|
|
||||||
if (!$this->attachment) {
|
|
||||||
$this->clientError(_('No such attachment.'), 404);
|
$this->clientError(_('No such attachment.'), 404);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -178,10 +176,8 @@ class AttachmentAction extends Action
|
||||||
|
|
||||||
function showContent()
|
function showContent()
|
||||||
{
|
{
|
||||||
$this->elementStart('ul', array('class' => 'attachments'));
|
|
||||||
$ali = new Attachment($this->attachment, $this);
|
$ali = new Attachment($this->attachment, $this);
|
||||||
$cnt = $ali->show();
|
$cnt = $ali->show();
|
||||||
$this->elementEnd('ul');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -45,26 +45,6 @@ require_once INSTALLDIR.'/actions/attachment.php';
|
||||||
|
|
||||||
class Attachment_ajaxAction extends AttachmentAction
|
class Attachment_ajaxAction extends AttachmentAction
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* Load attributes based on database arguments
|
|
||||||
*
|
|
||||||
* Loads all the DB stuff
|
|
||||||
*
|
|
||||||
* @param array $args $_REQUEST array
|
|
||||||
*
|
|
||||||
* @return success flag
|
|
||||||
*/
|
|
||||||
|
|
||||||
function prepare($args)
|
|
||||||
{
|
|
||||||
parent::prepare($args);
|
|
||||||
if (!$this->attachment) {
|
|
||||||
$this->clientError(_('No such attachment.'), 404);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Show page, a template method.
|
* Show page, a template method.
|
||||||
*
|
*
|
||||||
|
@ -95,8 +75,6 @@ class Attachment_ajaxAction extends AttachmentAction
|
||||||
$this->elementEnd('div');
|
$this->elementEnd('div');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Last-modified date for page
|
* Last-modified date for page
|
||||||
*
|
*
|
||||||
|
|
|
@ -31,9 +31,7 @@ if (!defined('LACONICA')) {
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
//require_once INSTALLDIR.'/lib/personalgroupnav.php';
|
require_once INSTALLDIR.'/actions/attachment.php';
|
||||||
//require_once INSTALLDIR.'/lib/feedlist.php';
|
|
||||||
require_once INSTALLDIR.'/actions/attachments.php';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Show notice attachments
|
* Show notice attachments
|
||||||
|
@ -45,39 +43,8 @@ require_once INSTALLDIR.'/actions/attachments.php';
|
||||||
* @link http://laconi.ca/
|
* @link http://laconi.ca/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class Attachments_ajaxAction extends AttachmentsAction
|
class Attachment_thumbnailAction extends AttachmentAction
|
||||||
{
|
{
|
||||||
function showContent()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Fill the content area of the page
|
|
||||||
*
|
|
||||||
* Shows a single notice list item.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
|
|
||||||
function showContentBlock()
|
|
||||||
{
|
|
||||||
$al = new AttachmentList($this->notice, $this);
|
|
||||||
$cnt = $al->show();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Extra <head> content
|
|
||||||
*
|
|
||||||
* We show the microid(s) for the author, if any.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
|
|
||||||
function extraHead()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Show page, a template method.
|
* Show page, a template method.
|
||||||
*
|
*
|
||||||
|
@ -100,16 +67,52 @@ class Attachments_ajaxAction extends AttachmentsAction
|
||||||
*/
|
*/
|
||||||
function showCore()
|
function showCore()
|
||||||
{
|
{
|
||||||
$this->elementStart('div', array('id' => 'core'));
|
$file_thumbnail = File_thumbnail::staticGet('file_id', $this->attachment->id);
|
||||||
if (Event::handle('StartShowContentBlock', array($this))) {
|
if (empty($file_thumbnail->url)) {
|
||||||
$this->showContentBlock();
|
return;
|
||||||
Event::handle('EndShowContentBlock', array($this));
|
|
||||||
}
|
}
|
||||||
$this->elementEnd('div');
|
$this->element('img', array('src' => $file_thumbnail->url, 'alt' => 'Thumbnail'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Last-modified date for page
|
||||||
|
*
|
||||||
|
* When was the content of this page last modified? Based on notice,
|
||||||
|
* profile, avatar.
|
||||||
|
*
|
||||||
|
* @return int last-modified date as unix timestamp
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
function lastModified()
|
||||||
|
{
|
||||||
|
return max(strtotime($this->notice->created),
|
||||||
|
strtotime($this->profile->modified),
|
||||||
|
($this->avatar) ? strtotime($this->avatar->modified) : 0);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An entity tag for this page
|
||||||
|
*
|
||||||
|
* Shows the ETag for the page, based on the notice ID and timestamps
|
||||||
|
* for the notice, profile, and avatar. It's weak, since we change
|
||||||
|
* the date text "one hour ago", etc.
|
||||||
|
*
|
||||||
|
* @return string etag
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
function etag()
|
||||||
|
{
|
||||||
|
$avtime = ($this->avatar) ?
|
||||||
|
strtotime($this->avatar->modified) : 0;
|
||||||
|
|
||||||
|
return 'W/"' . implode(':', array($this->arg('action'),
|
||||||
|
common_language(),
|
||||||
|
$this->notice->id,
|
||||||
|
strtotime($this->notice->created),
|
||||||
|
strtotime($this->profile->modified),
|
||||||
|
$avtime)) . '"';
|
||||||
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,292 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* Laconica, the distributed open-source microblogging tool
|
|
||||||
*
|
|
||||||
* Show notice attachments
|
|
||||||
*
|
|
||||||
* PHP version 5
|
|
||||||
*
|
|
||||||
* LICENCE: This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU Affero General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*
|
|
||||||
* @category Personal
|
|
||||||
* @package Laconica
|
|
||||||
* @author Evan Prodromou <evan@controlyourself.ca>
|
|
||||||
* @copyright 2008-2009 Control Yourself, Inc.
|
|
||||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
|
||||||
* @link http://laconi.ca/
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (!defined('LACONICA')) {
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
//require_once INSTALLDIR.'/lib/personalgroupnav.php';
|
|
||||||
//require_once INSTALLDIR.'/lib/feedlist.php';
|
|
||||||
require_once INSTALLDIR.'/lib/attachmentlist.php';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Show notice attachments
|
|
||||||
*
|
|
||||||
* @category Personal
|
|
||||||
* @package Laconica
|
|
||||||
* @author Evan Prodromou <evan@controlyourself.ca>
|
|
||||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
|
||||||
* @link http://laconi.ca/
|
|
||||||
*/
|
|
||||||
|
|
||||||
class AttachmentsAction extends Action
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Notice object to show
|
|
||||||
*/
|
|
||||||
|
|
||||||
var $notice = null;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Profile of the notice object
|
|
||||||
*/
|
|
||||||
|
|
||||||
var $profile = null;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Avatar of the profile of the notice object
|
|
||||||
*/
|
|
||||||
|
|
||||||
var $avatar = null;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Is this action read-only?
|
|
||||||
*
|
|
||||||
* @return boolean true
|
|
||||||
*/
|
|
||||||
|
|
||||||
function isReadOnly($args)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Last-modified date for page
|
|
||||||
*
|
|
||||||
* When was the content of this page last modified? Based on notice,
|
|
||||||
* profile, avatar.
|
|
||||||
*
|
|
||||||
* @return int last-modified date as unix timestamp
|
|
||||||
*/
|
|
||||||
|
|
||||||
function lastModified()
|
|
||||||
{
|
|
||||||
return max(strtotime($this->notice->created),
|
|
||||||
strtotime($this->profile->modified),
|
|
||||||
($this->avatar) ? strtotime($this->avatar->modified) : 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An entity tag for this page
|
|
||||||
*
|
|
||||||
* Shows the ETag for the page, based on the notice ID and timestamps
|
|
||||||
* for the notice, profile, and avatar. It's weak, since we change
|
|
||||||
* the date text "one hour ago", etc.
|
|
||||||
*
|
|
||||||
* @return string etag
|
|
||||||
*/
|
|
||||||
|
|
||||||
function etag()
|
|
||||||
{
|
|
||||||
$avtime = ($this->avatar) ?
|
|
||||||
strtotime($this->avatar->modified) : 0;
|
|
||||||
|
|
||||||
return 'W/"' . implode(':', array($this->arg('action'),
|
|
||||||
common_language(),
|
|
||||||
$this->notice->id,
|
|
||||||
strtotime($this->notice->created),
|
|
||||||
strtotime($this->profile->modified),
|
|
||||||
$avtime)) . '"';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Title of the page
|
|
||||||
*
|
|
||||||
* @return string title of the page
|
|
||||||
*/
|
|
||||||
|
|
||||||
function title()
|
|
||||||
{
|
|
||||||
return sprintf(_('%1$s\'s status on %2$s'),
|
|
||||||
$this->profile->nickname,
|
|
||||||
common_exact_date($this->notice->created));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Load attributes based on database arguments
|
|
||||||
*
|
|
||||||
* Loads all the DB stuff
|
|
||||||
*
|
|
||||||
* @param array $args $_REQUEST array
|
|
||||||
*
|
|
||||||
* @return success flag
|
|
||||||
*/
|
|
||||||
|
|
||||||
function prepare($args)
|
|
||||||
{
|
|
||||||
parent::prepare($args);
|
|
||||||
|
|
||||||
$id = $this->arg('notice');
|
|
||||||
|
|
||||||
$this->notice = Notice::staticGet($id);
|
|
||||||
|
|
||||||
if (!$this->notice) {
|
|
||||||
$this->clientError(_('No such notice.'), 404);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
// STOP if there are no attachments
|
|
||||||
// maybe even redirect if there's a single one
|
|
||||||
// RYM FIXME TODO
|
|
||||||
$this->clientError(_('No such attachment.'), 404);
|
|
||||||
return false;
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$this->profile = $this->notice->getProfile();
|
|
||||||
|
|
||||||
if (!$this->profile) {
|
|
||||||
$this->serverError(_('Notice has no profile'), 500);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->avatar = $this->profile->getAvatar(AVATAR_PROFILE_SIZE);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handle input
|
|
||||||
*
|
|
||||||
* Only handles get, so just show the page.
|
|
||||||
*
|
|
||||||
* @param array $args $_REQUEST data (unused)
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
|
|
||||||
function handle($args)
|
|
||||||
{
|
|
||||||
parent::handle($args);
|
|
||||||
|
|
||||||
if ($this->notice->is_local == 0) {
|
|
||||||
if (!empty($this->notice->url)) {
|
|
||||||
common_redirect($this->notice->url, 301);
|
|
||||||
} else if (!empty($this->notice->uri) && preg_match('/^https?:/', $this->notice->uri)) {
|
|
||||||
common_redirect($this->notice->uri, 301);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$f2p = new File_to_post;
|
|
||||||
$f2p->post_id = $this->notice->id;
|
|
||||||
$file = new File;
|
|
||||||
$file->joinAdd($f2p);
|
|
||||||
$file->selectAdd();
|
|
||||||
$file->selectAdd('file.id as id');
|
|
||||||
$count = $file->find(true);
|
|
||||||
if (!$count) return;
|
|
||||||
if (1 === $count) {
|
|
||||||
common_redirect(common_local_url('attachment', array('attachment' => $file->id)), 301);
|
|
||||||
} else {
|
|
||||||
$this->showPage();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Don't show local navigation
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
|
|
||||||
function showLocalNavBlock()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Fill the content area of the page
|
|
||||||
*
|
|
||||||
* Shows a single notice list item.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
|
|
||||||
function showContent()
|
|
||||||
{
|
|
||||||
$al = new AttachmentList($this->notice, $this);
|
|
||||||
$cnt = $al->show();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Don't show page notice
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
|
|
||||||
function showPageNoticeBlock()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Don't show aside
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
|
|
||||||
function showAside() {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Extra <head> content
|
|
||||||
*
|
|
||||||
* We show the microid(s) for the author, if any.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
|
|
||||||
function extraHead()
|
|
||||||
{
|
|
||||||
$user = User::staticGet($this->profile->id);
|
|
||||||
|
|
||||||
if (!$user) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($user->emailmicroid && $user->email && $this->notice->uri) {
|
|
||||||
$id = new Microid('mailto:'. $user->email,
|
|
||||||
$this->notice->uri);
|
|
||||||
$this->element('meta', array('name' => 'microid',
|
|
||||||
'content' => $id->toString()));
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($user->jabbermicroid && $user->jabber && $this->notice->uri) {
|
|
||||||
$id = new Microid('xmpp:', $user->jabber,
|
|
||||||
$this->notice->uri);
|
|
||||||
$this->element('meta', array('name' => 'microid',
|
|
||||||
'content' => $id->toString()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -49,8 +49,6 @@ class TagAction extends Action
|
||||||
{
|
{
|
||||||
$pop = new PopularNoticeSection($this);
|
$pop = new PopularNoticeSection($this);
|
||||||
$pop->show();
|
$pop->show();
|
||||||
$freqatt = new FrequentAttachmentSection($this);
|
|
||||||
$freqatt->show();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function title()
|
function title()
|
||||||
|
|
|
@ -9,6 +9,7 @@ VALUES
|
||||||
('Do','Gnome Do','http://do.davebsd.com/wiki/index.php?title=Microblog_Plugin', now()),
|
('Do','Gnome Do','http://do.davebsd.com/wiki/index.php?title=Microblog_Plugin', now()),
|
||||||
('Facebook','Facebook','http://apps.facebook.com/identica/', now()),
|
('Facebook','Facebook','http://apps.facebook.com/identica/', now()),
|
||||||
('feed2omb','feed2omb','http://projects.ciarang.com/p/feed2omb/', now()),
|
('feed2omb','feed2omb','http://projects.ciarang.com/p/feed2omb/', now()),
|
||||||
|
('gravity', 'Gravity', 'http://mobileways.de/gravity', now()),
|
||||||
('Gwibber','Gwibber','http://launchpad.net/gwibber', now()),
|
('Gwibber','Gwibber','http://launchpad.net/gwibber', now()),
|
||||||
('HelloTxt','HelloTxt','http://hellotxt.com/', now()),
|
('HelloTxt','HelloTxt','http://hellotxt.com/', now()),
|
||||||
('identicatools','Laconica Tools','http://bitbucketlabs.net/laconica-tools/', now()),
|
('identicatools','Laconica Tools','http://bitbucketlabs.net/laconica-tools/', now()),
|
||||||
|
|
|
@ -64,7 +64,7 @@ function handleError($error)
|
||||||
function main()
|
function main()
|
||||||
{
|
{
|
||||||
// quick check for fancy URL auto-detection support in installer.
|
// quick check for fancy URL auto-detection support in installer.
|
||||||
if (isset($_SERVER['REDIRECT_URL']) && ('/check-fancy' === $_SERVER['REDIRECT_URL'])) {
|
if (isset($_SERVER['REDIRECT_URL']) && ((dirname($_SERVER['REQUEST_URI']) . '/check-fancy') === $_SERVER['REDIRECT_URL'])) {
|
||||||
die("Fancy URL support detection succeeded. We suggest you enable this to get fancy (pretty) URLs.");
|
die("Fancy URL support detection succeeded. We suggest you enable this to get fancy (pretty) URLs.");
|
||||||
}
|
}
|
||||||
global $user, $action, $config;
|
global $user, $action, $config;
|
||||||
|
|
18
install.php
18
install.php
|
@ -116,16 +116,16 @@ function showForm()
|
||||||
<input type="radio" name="fancy" id="fancy-disable" value="" /> disable<br />
|
<input type="radio" name="fancy" id="fancy-disable" value="" /> disable<br />
|
||||||
<p class="form_guide" id='fancy-form_guide'>Enable fancy (pretty) URLs. Auto-detection failed, it depends on Javascript.</p>
|
<p class="form_guide" id='fancy-form_guide'>Enable fancy (pretty) URLs. Auto-detection failed, it depends on Javascript.</p>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
|
||||||
<label for="host">Hostname</label>
|
|
||||||
<input type="text" id="host" name="host" />
|
|
||||||
<p class="form_guide">Database hostname</p>
|
|
||||||
</li>
|
|
||||||
<li>
|
<li>
|
||||||
<label for="host">Site path</label>
|
<label for="host">Site path</label>
|
||||||
<input type="text" id="path" name="path" value="$config_path" />
|
<input type="text" id="path" name="path" value="$config_path" />
|
||||||
<p class="form_guide">Site path, following the "/" after the domain name in the URL. Empty is fine. Field should be filled automatically.</p>
|
<p class="form_guide">Site path, following the "/" after the domain name in the URL. Empty is fine. Field should be filled automatically.</p>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<label for="host">Hostname</label>
|
||||||
|
<input type="text" id="host" name="host" />
|
||||||
|
<p class="form_guide">Database hostname</p>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<label for="host">Database</label>
|
<label for="host">Database</label>
|
||||||
<input type="text" id="database" name="database" />
|
<input type="text" id="database" name="database" />
|
||||||
|
@ -295,13 +295,13 @@ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en_US" lang="en_US">
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en_US" lang="en_US">
|
||||||
<head>
|
<head>
|
||||||
<title>Install Laconica</title>
|
<title>Install Laconica</title>
|
||||||
<link rel="stylesheet" type="text/css" href="theme/base/css/display.css?version=0.8" media="screen, projection, tv"/>
|
<link rel="shortcut icon" href="favicon.ico"/>
|
||||||
<link rel="stylesheet" type="text/css" href="theme/default/css/display.css?version=0.8" media="screen, projection, tv"/>
|
<link rel="stylesheet" type="text/css" href="theme/default/css/display.css?version=0.8" media="screen, projection, tv"/>
|
||||||
<!--[if IE]><link rel="stylesheet" type="text/css" href="theme/base/css/ie.css?version=0.8" /><![endif]-->
|
<!--[if IE]><link rel="stylesheet" type="text/css" href="theme/base/css/ie.css?version=0.8" /><![endif]-->
|
||||||
<!--[if lte IE 6]><link rel="stylesheet" type="text/css" theme/base/css/ie6.css?version=0.8" /><![endif]-->
|
<!--[if lte IE 6]><link rel="stylesheet" type="text/css" theme/base/css/ie6.css?version=0.8" /><![endif]-->
|
||||||
<!--[if IE]><link rel="stylesheet" type="text/css" href="theme/earthy/css/ie.css?version=0.8" /><![endif]-->
|
<!--[if IE]><link rel="stylesheet" type="text/css" href="theme/default/css/ie.css?version=0.8" /><![endif]-->
|
||||||
<script src='js/jquery.min.js'></script>
|
<script src="js/jquery.min.js"></script>
|
||||||
<script src='js/install.js'></script>
|
<script src="js/install.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body id="install">
|
<body id="install">
|
||||||
<div id="wrap">
|
<div id="wrap">
|
||||||
|
|
50
js/util.js
50
js/util.js
|
@ -17,9 +17,29 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
$('.attachments').click(function() {$().jOverlay({zIndex:999, success:function(html) {$('.attachment').click(function() {$().jOverlay({url:$(this).attr('href') + '/ajax'}); return false; });
|
$('a.attachment').click(function() {$().jOverlay({url: $('address .url')[0].href+'/attachment/' + ($(this).attr('id').substring('attachment'.length + 1)) + '/ajax'}); return false; });
|
||||||
}, url:$(this).attr('href') + '/ajax'}); return false; });
|
$("a.thumbnail").hover(
|
||||||
$('.attachment').click(function() {$().jOverlay({url:$(this).attr('href') + '/ajax'}); return false; });
|
function() {
|
||||||
|
var anchor = $(this);
|
||||||
|
$("a.thumbnail").children('img').remove();
|
||||||
|
|
||||||
|
setTimeout(function() {
|
||||||
|
anchor.closest(".entry-title").addClass('ov');
|
||||||
|
$.get($('address .url')[0].href+'/attachment/' + (anchor.attr('id').substring('attachment'.length + 1)) + '/thumbnail', null, function(data) {
|
||||||
|
anchor.append(data);
|
||||||
|
});
|
||||||
|
}, 250);
|
||||||
|
|
||||||
|
setTimeout(function() {
|
||||||
|
anchor.children('img').remove();
|
||||||
|
anchor.closest(".entry-title").removeClass('ov');
|
||||||
|
}, 3000);
|
||||||
|
},
|
||||||
|
function() {
|
||||||
|
$(this).children('img').remove();
|
||||||
|
$(this).closest(".entry-title").removeClass('ov');
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
// count character on keyup
|
// count character on keyup
|
||||||
function counter(event){
|
function counter(event){
|
||||||
|
@ -203,7 +223,6 @@ $(document).ready(function(){
|
||||||
$("#notices_primary .notices").prepend(document._importNode(li, true));
|
$("#notices_primary .notices").prepend(document._importNode(li, true));
|
||||||
$("#notices_primary .notice:first").css({display:"none"});
|
$("#notices_primary .notice:first").css({display:"none"});
|
||||||
$("#notices_primary .notice:first").fadeIn(2500);
|
$("#notices_primary .notice:first").fadeIn(2500);
|
||||||
NoticeHover();
|
|
||||||
NoticeReply();
|
NoticeReply();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -221,24 +240,23 @@ $(document).ready(function(){
|
||||||
NoticeReply();
|
NoticeReply();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
function NoticeHover() {
|
function NoticeHover() {
|
||||||
$("#content .notice").hover(
|
function mouseHandler(e) {
|
||||||
function () {
|
$(e.target).closest('li.hentry')[(e.type === 'mouseover') ? 'addClass' : 'removeClass']('hover');
|
||||||
$(this).addClass('hover');
|
};
|
||||||
},
|
$('#content .notices').mouseover(mouseHandler);
|
||||||
function () {
|
$('#content .notices').mouseout(mouseHandler);
|
||||||
$(this).removeClass('hover');
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function NoticeReply() {
|
function NoticeReply() {
|
||||||
if ($('#notice_data-text').length > 0) {
|
if ($('#notice_data-text').length > 0) {
|
||||||
$('#content .notice').each(function() {
|
$('#content .notice').each(function() {
|
||||||
var notice = $(this);
|
var notice = $(this)[0];
|
||||||
$('.notice_reply', $(this)).click(function() {
|
$($('.notice_reply', notice)[0]).click(function() {
|
||||||
var nickname = ($('.author .nickname', notice).length > 0) ? $('.author .nickname', notice) : $('.author .nickname');
|
var nickname = ($('.author .nickname', notice).length > 0) ? $($('.author .nickname', notice)[0]) : $('.author .nickname');
|
||||||
NoticeReplySet(nickname.text(), $('.notice_id', notice).text());
|
NoticeReplySet(nickname.text(), $($('.notice_id', notice)[0]).text());
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -80,9 +80,9 @@ class AttachmentList extends Widget
|
||||||
|
|
||||||
function show()
|
function show()
|
||||||
{
|
{
|
||||||
// $this->out->elementStart('div', array('id' =>'attachments_primary'));
|
$this->out->elementStart('dl', array('id' =>'attachment'));
|
||||||
$this->out->elementStart('div', array('id' =>'content'));
|
$this->out->element('dt', null, _('Attachments'));
|
||||||
$this->out->element('h2', null, _('Attachments'));
|
$this->out->elementStart('dd');
|
||||||
$this->out->elementStart('ul', array('class' => 'attachments'));
|
$this->out->elementStart('ul', array('class' => 'attachments'));
|
||||||
|
|
||||||
$atts = new File;
|
$atts = new File;
|
||||||
|
@ -92,8 +92,9 @@ class AttachmentList extends Widget
|
||||||
$item->show();
|
$item->show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->out->elementEnd('dd');
|
||||||
$this->out->elementEnd('ul');
|
$this->out->elementEnd('ul');
|
||||||
$this->out->elementEnd('div');
|
$this->out->elementEnd('dl');
|
||||||
|
|
||||||
return count($att);
|
return count($att);
|
||||||
}
|
}
|
||||||
|
@ -171,7 +172,7 @@ class AttachmentListItem extends Widget
|
||||||
}
|
}
|
||||||
|
|
||||||
function linkTitle() {
|
function linkTitle() {
|
||||||
return 'Our page for ' . $this->title();
|
return $this->title();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -191,34 +192,25 @@ class AttachmentListItem extends Widget
|
||||||
}
|
}
|
||||||
|
|
||||||
function linkAttr() {
|
function linkAttr() {
|
||||||
return array('class' => 'attachment', 'href' => common_local_url('attachment', array('attachment' => $this->attachment->id)));
|
return array('class' => 'attachment', 'href' => $this->attachment->url, 'id' => 'attachment-' . $this->attachment->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
function showLink() {
|
function showLink() {
|
||||||
$attr = $this->linkAttr();
|
$this->out->elementStart('a', $this->linkAttr());
|
||||||
$text = $this->linkTitle();
|
$this->out->element('span', null, $this->linkTitle());
|
||||||
$this->out->elementStart('h4');
|
$this->showRepresentation();
|
||||||
$this->out->element('a', $attr, $text);
|
$this->out->elementEnd('a');
|
||||||
|
|
||||||
if ($this->attachment->url !== $this->title())
|
|
||||||
$this->out->element('span', null, " ({$this->attachment->url})");
|
|
||||||
|
|
||||||
|
|
||||||
$this->out->elementEnd('h4');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function showNoticeAttachment()
|
function showNoticeAttachment()
|
||||||
{
|
{
|
||||||
$this->showLink();
|
$this->showLink();
|
||||||
$this->showRepresentation();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function showRepresentation() {
|
function showRepresentation() {
|
||||||
$thumbnail = File_thumbnail::staticGet('file_id', $this->attachment->id);
|
$thumbnail = File_thumbnail::staticGet('file_id', $this->attachment->id);
|
||||||
if (!empty($thumbnail)) {
|
if (!empty($thumbnail)) {
|
||||||
$this->out->elementStart('a', $this->linkAttr()/*'href' => $this->linkTo()*/);
|
|
||||||
$this->out->element('img', array('alt' => 'nothing to say', 'src' => $thumbnail->url, 'width' => $thumbnail->width, 'height' => $thumbnail->height));
|
$this->out->element('img', array('alt' => 'nothing to say', 'src' => $thumbnail->url, 'width' => $thumbnail->width, 'height' => $thumbnail->height));
|
||||||
$this->out->elementEnd('a');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -260,7 +252,7 @@ class Attachment extends AttachmentListItem
|
||||||
}
|
}
|
||||||
|
|
||||||
function linkTitle() {
|
function linkTitle() {
|
||||||
return 'Direct link to ' . $this->title();
|
return $this->attachment->url;
|
||||||
}
|
}
|
||||||
|
|
||||||
function showRepresentation() {
|
function showRepresentation() {
|
||||||
|
|
|
@ -1,80 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* Laconica, the distributed open-source microblogging tool
|
|
||||||
*
|
|
||||||
* Base class for sections showing lists of attachments
|
|
||||||
*
|
|
||||||
* PHP version 5
|
|
||||||
*
|
|
||||||
* LICENCE: This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU Affero General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*
|
|
||||||
* @category Widget
|
|
||||||
* @package Laconica
|
|
||||||
* @author Evan Prodromou <evan@controlyourself.ca>
|
|
||||||
* @copyright 2009 Control Yourself, Inc.
|
|
||||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
|
||||||
* @link http://laconi.ca/
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (!defined('LACONICA')) {
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
define('ATTACHMENTS_PER_SECTION', 6);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Base class for sections showing lists of attachments
|
|
||||||
*
|
|
||||||
* These are the widgets that show interesting data about a person
|
|
||||||
* group, or site.
|
|
||||||
*
|
|
||||||
* @category Widget
|
|
||||||
* @package Laconica
|
|
||||||
* @author Evan Prodromou <evan@controlyourself.ca>
|
|
||||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
|
||||||
* @link http://laconi.ca/
|
|
||||||
*/
|
|
||||||
|
|
||||||
class AttachmentSection extends Section
|
|
||||||
{
|
|
||||||
function showContent()
|
|
||||||
{
|
|
||||||
$attachments = $this->getAttachments();
|
|
||||||
|
|
||||||
$cnt = 0;
|
|
||||||
|
|
||||||
$this->out->elementStart('ul', 'attachments');
|
|
||||||
|
|
||||||
while ($attachments->fetch() && ++$cnt <= ATTACHMENTS_PER_SECTION) {
|
|
||||||
$this->showAttachment($attachments);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->out->elementEnd('ul');
|
|
||||||
|
|
||||||
return ($cnt > ATTACHMENTS_PER_SECTION);
|
|
||||||
}
|
|
||||||
|
|
||||||
function getAttachments()
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
function showAttachment($attachment)
|
|
||||||
{
|
|
||||||
$this->out->elementStart('li');
|
|
||||||
$this->out->element('a', array('class' => 'attachment', 'href' => common_local_url('attachment', array('attachment' => $attachment->file_id))), "Attachment tagged {$attachment->c} times");
|
|
||||||
$this->out->elementEnd('li');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -97,11 +97,11 @@ class FacebookAction extends Action
|
||||||
{
|
{
|
||||||
// Add a timestamp to the file so Facebook cache wont ignore our changes
|
// Add a timestamp to the file so Facebook cache wont ignore our changes
|
||||||
$ts = filemtime(INSTALLDIR.'/theme/base/css/display.css');
|
$ts = filemtime(INSTALLDIR.'/theme/base/css/display.css');
|
||||||
|
|
||||||
|
$this->element('link', array('rel' => 'stylesheet',
|
||||||
|
'type' => 'text/css',
|
||||||
|
'href' => theme_path('css/display.css', 'base') . '?ts=' . $ts));
|
||||||
|
|
||||||
$this->element('link', array('rel' => 'stylesheet',
|
|
||||||
'type' => 'text/css',
|
|
||||||
'href' => theme_path('css/display.css', 'base') . '?ts=' . $ts));
|
|
||||||
|
|
||||||
$theme = common_config('site', 'theme');
|
$theme = common_config('site', 'theme');
|
||||||
|
|
||||||
$ts = filemtime(INSTALLDIR. '/theme/' . $theme .'/css/display.css');
|
$ts = filemtime(INSTALLDIR. '/theme/' . $theme .'/css/display.css');
|
||||||
|
|
|
@ -1,66 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* Laconica, the distributed open-source microblogging tool
|
|
||||||
*
|
|
||||||
* FIXME
|
|
||||||
*
|
|
||||||
* PHP version 5
|
|
||||||
*
|
|
||||||
* LICENCE: This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU Affero General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*
|
|
||||||
* @category Widget
|
|
||||||
* @package Laconica
|
|
||||||
* @author Evan Prodromou <evan@controlyourself.ca>
|
|
||||||
* @copyright 2009 Control Yourself, Inc.
|
|
||||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
|
||||||
* @link http://laconi.ca/
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (!defined('LACONICA')) {
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* FIXME
|
|
||||||
*
|
|
||||||
* These are the widgets that show interesting data about a person
|
|
||||||
* group, or site.
|
|
||||||
*
|
|
||||||
* @category Widget
|
|
||||||
* @package Laconica
|
|
||||||
* @author Evan Prodromou <evan@controlyourself.ca>
|
|
||||||
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
|
|
||||||
* @link http://laconi.ca/
|
|
||||||
*/
|
|
||||||
|
|
||||||
class FrequentAttachmentSection extends AttachmentSection
|
|
||||||
{
|
|
||||||
function getAttachments() {
|
|
||||||
$notice_tag = new Notice_tag;
|
|
||||||
$query = 'select file_id, count(file_id) as c from notice_tag join file_to_post on post_id = notice_id where tag="' . $notice_tag->escape($this->out->tag) . '" group by file_id order by c desc';
|
|
||||||
$notice_tag->query($query);
|
|
||||||
return $notice_tag;
|
|
||||||
}
|
|
||||||
|
|
||||||
function title()
|
|
||||||
{
|
|
||||||
return sprintf(_('Attachments frequently tagged with %s'), $this->out->tag);
|
|
||||||
}
|
|
||||||
|
|
||||||
function divId()
|
|
||||||
{
|
|
||||||
return 'frequent_attachments';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -34,6 +34,7 @@ if (!defined('LACONICA')) {
|
||||||
|
|
||||||
require_once INSTALLDIR.'/lib/favorform.php';
|
require_once INSTALLDIR.'/lib/favorform.php';
|
||||||
require_once INSTALLDIR.'/lib/disfavorform.php';
|
require_once INSTALLDIR.'/lib/disfavorform.php';
|
||||||
|
require_once INSTALLDIR.'/lib/attachmentlist.php';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* widget for displaying a list of notices
|
* widget for displaying a list of notices
|
||||||
|
@ -193,46 +194,24 @@ class NoticeListItem extends Widget
|
||||||
$this->out->elementEnd('div');
|
$this->out->elementEnd('div');
|
||||||
}
|
}
|
||||||
|
|
||||||
function showNoticeAttachments()
|
function showNoticeAttachments() {
|
||||||
{
|
if ($this->isUsedInList()) {
|
||||||
$f2p = new File_to_post;
|
return;
|
||||||
$f2p->post_id = $this->notice->id;
|
|
||||||
$file = new File;
|
|
||||||
$file->joinAdd($f2p);
|
|
||||||
$file->selectAdd();
|
|
||||||
$file->selectAdd('file.id as id');
|
|
||||||
$count = $file->find(true);
|
|
||||||
if (!$count) return;
|
|
||||||
if (1 === $count) {
|
|
||||||
$href = common_local_url('attachment', array('attachment' => $file->id));
|
|
||||||
$att_class = 'attachment';
|
|
||||||
} else {
|
|
||||||
$href = common_local_url('attachments', array('notice' => $this->notice->id));
|
|
||||||
$att_class = 'attachments';
|
|
||||||
}
|
}
|
||||||
|
$al = new AttachmentList($this->notice, $this->out);
|
||||||
|
$al->show();
|
||||||
|
}
|
||||||
|
|
||||||
$clip = theme_path('images/icons/clip', 'base');
|
function isUsedInList() {
|
||||||
if ('shownotice' === $this->out->args['action']) {
|
return 'shownotice' !== $this->out->args['action'];
|
||||||
$height = '96px';
|
}
|
||||||
$width = '83%';
|
|
||||||
$width_att = '15%';
|
|
||||||
$clip .= '-big.png';
|
|
||||||
$top = '70px';
|
|
||||||
} else {
|
|
||||||
$height = '48px';
|
|
||||||
$width = '90%';
|
|
||||||
$width_att = '8%';
|
|
||||||
$clip .= '.png';
|
|
||||||
$top = '20px';
|
|
||||||
}
|
|
||||||
if(0)
|
|
||||||
$this->out->elementStart('div', 'entry-attachments');
|
|
||||||
else
|
|
||||||
$this->out->elementStart('p', array('class' => 'entry-attachments', 'style' => "float: right; width: $width_att; background: url($clip) no-repeat; text-align: right; height: $height;"));
|
|
||||||
$this->out->element('a', array('class' => $att_class, 'style' => "text-decoration: none; padding-top: $top; display: block; height: $height;", 'href' => $href, 'title' => "# of attachments: $count"), $count === 1 ? '' : $count);
|
|
||||||
|
|
||||||
|
function attachmentCount($discriminant = true) {
|
||||||
$this->out->elementEnd('p');
|
$file_oembed = new File_oembed;
|
||||||
|
$query = "select count(*) as c from file_oembed join file_to_post on file_oembed.file_id = file_to_post.file_id where post_id=" . $this->notice->id;
|
||||||
|
$file_oembed->query($query);
|
||||||
|
$file_oembed->fetch();
|
||||||
|
return intval($file_oembed->c);
|
||||||
}
|
}
|
||||||
|
|
||||||
function showNoticeInfo()
|
function showNoticeInfo()
|
||||||
|
|
|
@ -153,24 +153,17 @@ class Router
|
||||||
|
|
||||||
$m->connect('attachment/:attachment/ajax',
|
$m->connect('attachment/:attachment/ajax',
|
||||||
array('action' => 'attachment_ajax'),
|
array('action' => 'attachment_ajax'),
|
||||||
array('notice' => '[0-9]+'));
|
array('attachment' => '[0-9]+'));
|
||||||
|
|
||||||
$m->connect('attachment/:attachment',
|
$m->connect('attachment/:attachment/thumbnail',
|
||||||
array('action' => 'attachment'),
|
array('action' => 'attachment_thumbnail'),
|
||||||
array('notice' => '[0-9]+'));
|
array('attachment' => '[0-9]+'));
|
||||||
|
|
||||||
// notice
|
|
||||||
|
|
||||||
$m->connect('notice/new', array('action' => 'newnotice'));
|
$m->connect('notice/new', array('action' => 'newnotice'));
|
||||||
$m->connect('notice/new?replyto=:replyto',
|
$m->connect('notice/new?replyto=:replyto',
|
||||||
array('action' => 'newnotice'),
|
array('action' => 'newnotice'),
|
||||||
array('replyto' => '[A-Za-z0-9_-]+'));
|
array('replyto' => '[A-Za-z0-9_-]+'));
|
||||||
$m->connect('notice/:notice/attachments/ajax',
|
|
||||||
array('action' => 'attachments_ajax'),
|
|
||||||
array('notice' => '[0-9]+'));
|
|
||||||
$m->connect('notice/:notice/attachments',
|
|
||||||
array('action' => 'attachments'),
|
|
||||||
array('notice' => '[0-9]+'));
|
|
||||||
$m->connect('notice/:notice',
|
$m->connect('notice/:notice',
|
||||||
array('action' => 'shownotice'),
|
array('action' => 'shownotice'),
|
||||||
array('notice' => '[0-9]+'));
|
array('notice' => '[0-9]+'));
|
||||||
|
|
21
lib/util.php
21
lib/util.php
|
@ -496,6 +496,27 @@ function common_linkify($url) {
|
||||||
}
|
}
|
||||||
|
|
||||||
$attrs = array('href' => $longurl, 'rel' => 'external');
|
$attrs = array('href' => $longurl, 'rel' => 'external');
|
||||||
|
|
||||||
|
// if this URL is an attachment, then we set class='attachment' and id='attahcment-ID'
|
||||||
|
// where ID is the id of the attachment for the given URL.
|
||||||
|
$query = "select file_oembed.file_id as file_id from file join file_oembed on file.id = file_oembed.file_id where file.url='$longurl'";
|
||||||
|
$file = new File;
|
||||||
|
$file->query($query);
|
||||||
|
$file->fetch();
|
||||||
|
|
||||||
|
if (!empty($file->file_id)) {
|
||||||
|
$query = "select file_thumbnail.file_id as file_id from file join file_thumbnail on file.id = file_thumbnail.file_id where file.url='$longurl'";
|
||||||
|
$file2 = new File;
|
||||||
|
$file2->query($query);
|
||||||
|
$file2->fetch();
|
||||||
|
|
||||||
|
if (empty($file2->file_id)) {
|
||||||
|
$attrs['class'] = 'attachment';
|
||||||
|
} else {
|
||||||
|
$attrs['class'] = 'attachment thumbnail';
|
||||||
|
}
|
||||||
|
$attrs['id'] = "attachment-{$file->file_id}";
|
||||||
|
}
|
||||||
return XMLStringer::estring('a', $attrs, $display);
|
return XMLStringer::estring('a', $attrs, $display);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -742,15 +742,10 @@ border-top-style:dotted;
|
||||||
.notices li {
|
.notices li {
|
||||||
list-style-type:none;
|
list-style-type:none;
|
||||||
}
|
}
|
||||||
.notices li.hover {
|
|
||||||
border-radius:4px;
|
|
||||||
-moz-border-radius:4px;
|
|
||||||
-webkit-border-radius:4px;
|
|
||||||
}
|
|
||||||
.notices .notices {
|
.notices .notices {
|
||||||
margin-top:7px;
|
margin-top:7px;
|
||||||
margin-left:3%;
|
margin-left:5%;
|
||||||
width:97%;
|
width:95%;
|
||||||
float:left;
|
float:left;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -803,6 +798,9 @@ float:left;
|
||||||
width:100%;
|
width:100%;
|
||||||
overflow:hidden;
|
overflow:hidden;
|
||||||
}
|
}
|
||||||
|
.notice .entry-title.ov {
|
||||||
|
overflow:visible;
|
||||||
|
}
|
||||||
#shownotice .notice .entry-title {
|
#shownotice .notice .entry-title {
|
||||||
font-size:2.2em;
|
font-size:2.2em;
|
||||||
}
|
}
|
||||||
|
@ -827,7 +825,7 @@ clear:left;
|
||||||
float:left;
|
float:left;
|
||||||
font-size:0.95em;
|
font-size:0.95em;
|
||||||
margin-left:59px;
|
margin-left:59px;
|
||||||
width:65%;
|
width:60%;
|
||||||
}
|
}
|
||||||
#showstream .notice div.entry-content,
|
#showstream .notice div.entry-content,
|
||||||
#shownotice .notice div.entry-content {
|
#shownotice .notice div.entry-content {
|
||||||
|
@ -857,15 +855,26 @@ display:inline-block;
|
||||||
text-transform:lowercase;
|
text-transform:lowercase;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.notice .attachment {
|
||||||
|
position:relative;
|
||||||
|
}
|
||||||
|
.notice .attachment img {
|
||||||
|
position:absolute;
|
||||||
|
top:18px;
|
||||||
|
left:0;
|
||||||
|
z-index:99;
|
||||||
|
}
|
||||||
|
#shownotice .notice .attachment img {
|
||||||
|
position:static;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
.notice-options {
|
.notice-options {
|
||||||
padding-left:2%;
|
|
||||||
float:left;
|
|
||||||
width:50%;
|
|
||||||
position:relative;
|
position:relative;
|
||||||
font-size:0.95em;
|
font-size:0.95em;
|
||||||
width:12.5%;
|
width:90px;
|
||||||
float:right;
|
float:right;
|
||||||
|
margin-right:11px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.notice-options a {
|
.notice-options a {
|
||||||
|
@ -1049,8 +1058,6 @@ margin-left:18px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* TOP_POSTERS */
|
/* TOP_POSTERS */
|
||||||
.section tbody td {
|
.section tbody td {
|
||||||
padding-right:18px;
|
padding-right:18px;
|
||||||
|
|
|
@ -1,6 +1,3 @@
|
||||||
@import url("display.css");
|
|
||||||
@import url("../../identica/css/display.css");
|
|
||||||
|
|
||||||
* {
|
* {
|
||||||
font-size:14px;
|
font-size:14px;
|
||||||
font-family:"Lucida Sans Unicode", "Lucida Grande", sans-serif;
|
font-family:"Lucida Sans Unicode", "Lucida Grande", sans-serif;
|
||||||
|
|
BIN
theme/base/images/icons/clip-inline.png
Normal file
BIN
theme/base/images/icons/clip-inline.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
|
@ -193,7 +193,9 @@ background:transparent url(../../base/images/icons/twotone/green/trash.gif) no-r
|
||||||
}
|
}
|
||||||
|
|
||||||
.notices div.entry-content,
|
.notices div.entry-content,
|
||||||
.notices div.notice-options {
|
.notices div.notice-options,
|
||||||
|
.notices li.hover .notices div.entry-content,
|
||||||
|
.notices li.hover .notices div.notice-options {
|
||||||
opacity:0.4;
|
opacity:0.4;
|
||||||
}
|
}
|
||||||
.notices li.hover div.entry-content,
|
.notices li.hover div.entry-content,
|
||||||
|
@ -212,16 +214,16 @@ background-color:#fcfcfc;
|
||||||
}
|
}
|
||||||
|
|
||||||
.notices .notices {
|
.notices .notices {
|
||||||
background-color:rgba(200, 200, 200, 0.025);
|
|
||||||
}
|
|
||||||
.notices .notices .notices {
|
|
||||||
background-color:rgba(200, 200, 200, 0.050);
|
background-color:rgba(200, 200, 200, 0.050);
|
||||||
}
|
}
|
||||||
|
.notices .notices .notices {
|
||||||
|
background-color:rgba(200, 200, 200, 0.100);
|
||||||
|
}
|
||||||
.notices .notices .notices .notices {
|
.notices .notices .notices .notices {
|
||||||
background-color:rgba(200, 200, 200, 0.075);
|
background-color:rgba(200, 200, 200, 0.150);
|
||||||
}
|
}
|
||||||
.notices .notices .notices .notices .notices {
|
.notices .notices .notices .notices .notices {
|
||||||
background-color:rgba(200, 200, 200, 0.100);
|
background-color:rgba(200, 200, 200, 0.300);
|
||||||
}
|
}
|
||||||
/*END: NOTICES */
|
/*END: NOTICES */
|
||||||
|
|
||||||
|
|
|
@ -193,7 +193,9 @@ background:transparent url(../../base/images/icons/twotone/green/trash.gif) no-r
|
||||||
}
|
}
|
||||||
|
|
||||||
.notices div.entry-content,
|
.notices div.entry-content,
|
||||||
.notices div.notice-options {
|
.notices div.notice-options,
|
||||||
|
.notices li.hover .notices div.entry-content,
|
||||||
|
.notices li.hover .notices div.notice-options {
|
||||||
opacity:0.4;
|
opacity:0.4;
|
||||||
}
|
}
|
||||||
.notices li.hover div.entry-content,
|
.notices li.hover div.entry-content,
|
||||||
|
@ -212,16 +214,16 @@ background-color:#fcfcfc;
|
||||||
}
|
}
|
||||||
|
|
||||||
.notices .notices {
|
.notices .notices {
|
||||||
background-color:rgba(200, 200, 200, 0.025);
|
|
||||||
}
|
|
||||||
.notices .notices .notices {
|
|
||||||
background-color:rgba(200, 200, 200, 0.050);
|
background-color:rgba(200, 200, 200, 0.050);
|
||||||
}
|
}
|
||||||
|
.notices .notices .notices {
|
||||||
|
background-color:rgba(200, 200, 200, 0.100);
|
||||||
|
}
|
||||||
.notices .notices .notices .notices {
|
.notices .notices .notices .notices {
|
||||||
background-color:rgba(200, 200, 200, 0.075);
|
background-color:rgba(200, 200, 200, 0.150);
|
||||||
}
|
}
|
||||||
.notices .notices .notices .notices .notices {
|
.notices .notices .notices .notices .notices {
|
||||||
background-color:rgba(200, 200, 200, 0.100);
|
background-color:rgba(200, 200, 200, 0.300);
|
||||||
}
|
}
|
||||||
/*END: NOTICES */
|
/*END: NOTICES */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user