Merge pull request #2 from flarum/master

Update
This commit is contained in:
Albert 2016-01-12 22:04:03 +01:00
commit 17da649d0a
9 changed files with 66 additions and 24 deletions

View File

@ -174,8 +174,12 @@ export default class DiscussionListItem extends Component {
const discussion = this.props.discussion; const discussion = this.props.discussion;
if (discussion.isUnread()) { if (discussion.isUnread()) {
discussion.save({readNumber: discussion.lastPostNumber()}); const confirmation = confirm(app.translator.trans('core.forum.discussion_list.mark_all_as_read_confirmation'));
m.redraw();
if (confirmation) {
discussion.save({readNumber: discussion.lastPostNumber()});
m.redraw();
}
} }
} }

View File

@ -358,6 +358,10 @@ export default class IndexPage extends Page {
* @return void * @return void
*/ */
markAllAsRead() { markAllAsRead() {
app.session.user.save({readTime: new Date()}); const confirmation = confirm(app.translator.trans('core.forum.index.mark_all_as_read_confirmation'));
if (confirmation) {
app.session.user.save({readTime: new Date()});
}
} }
} }

View File

@ -55,7 +55,9 @@ class PostStream extends Component {
return this.goToLast().then(() => { return this.goToLast().then(() => {
$('html,body').stop(true).animate({ $('html,body').stop(true).animate({
scrollTop: $(document).height() - $(window).height() scrollTop: $(document).height() - $(window).height()
}, 'fast'); }, 'fast', () => {
this.flashItem(this.$('.PostStream-item:last-child'));
});
}); });
} }

View File

@ -17,7 +17,7 @@ Object.assign(User.prototype, {
avatarUrl: Model.attribute('avatarUrl'), avatarUrl: Model.attribute('avatarUrl'),
bio: Model.attribute('bio'), bio: Model.attribute('bio'),
bioHtml: computed('bio', bio => bio ? '<p>' + $('<div/>').text(bio).html().replace(/\n/g, '<br>').autoLink() + '</p>' : ''), bioHtml: computed('bio', bio => bio ? '<p>' + $('<div/>').text(bio).html().replace(/\n/g, '<br>').autoLink({rel: 'nofollow'}) + '</p>' : ''),
preferences: Model.attribute('preferences'), preferences: Model.attribute('preferences'),
groups: Model.hasMany('groups'), groups: Model.hasMany('groups'),

View File

@ -1,5 +1,3 @@
@import url(//fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700,600);
@import "font-awesome.less"; @import "font-awesome.less";
@fa-font-path: "../../assets/fonts"; @fa-font-path: "../../assets/fonts";

View File

@ -110,13 +110,6 @@ class ApiServiceProvider extends AbstractServiceProvider
$toController('Flarum\Api\Controller\ShowForumController') $toController('Flarum\Api\Controller\ShowForumController')
); );
// Save forum information
$routes->patch(
'/forum',
'forum.update',
$toController('Flarum\Api\Controller\UpdateForumController')
);
// Retrieve authentication token // Retrieve authentication token
$routes->post( $routes->post(
'/token', '/token',

View File

@ -10,7 +10,9 @@
namespace Flarum\Event; namespace Flarum\Event;
use DirectoryIterator;
use Flarum\Locale\LocaleManager; use Flarum\Locale\LocaleManager;
use RuntimeException;
class ConfigureLocales class ConfigureLocales
{ {
@ -26,4 +28,45 @@ class ConfigureLocales
{ {
$this->locales = $locales; $this->locales = $locales;
} }
/**
* Load language pack resources from the given directory.
*
* @param $directory
*/
public function loadLanguagePackFrom($directory)
{
$name = $title = basename($directory);
if (file_exists($manifest = $directory.'/composer.json')) {
$json = json_decode(file_get_contents($manifest), true);
if (empty($json)) {
throw new RuntimeException("Error parsing composer.json in $name: ".json_last_error_msg());
}
$locale = array_get($json, 'extra.flarum-locale.code');
$title = array_get($json, 'extra.flarum-locale.title', $title);
}
if (! isset($locale)) {
throw new RuntimeException("Language pack $name must define \"extra.flarum-locale.code\" in composer.json.");
}
$this->locales->addLocale($locale, $title);
if (! is_dir($localeDir = $directory.'/locale')) {
throw new RuntimeException("Language pack $name must have a \"locale\" subdirectory.");
}
if (file_exists($file = $localeDir.'/config.js')) {
$this->locales->addJsFile($locale, $file);
}
foreach (new DirectoryIterator($localeDir) as $file) {
if ($file->isFile() && in_array($file->getExtension(), ['yml', 'yaml'])) {
$this->locales->addTranslations($locale, $file->getPathname());
}
}
}
} }

View File

@ -78,14 +78,6 @@ abstract class AbstractServer
*/ */
protected function getApp() protected function getApp()
{ {
// franzliedke/studio currently doesn't autoload files (see issue
// below), so we will need to load them manually if we're using studio.
// https://github.com/franzliedke/studio/issues/29
if (file_exists($corePath = $this->path.'/core')) {
require $corePath.'/src/helpers.php';
require $corePath.'/vendor/swiftmailer/swiftmailer/lib/swift_required.php';
}
date_default_timezone_set('UTC'); date_default_timezone_set('UTC');
$app = new Application($this->path); $app = new Application($this->path);

View File

@ -127,6 +127,8 @@ class ClientView implements Renderable
$this->assets = $assets; $this->assets = $assets;
$this->layout = $layout; $this->layout = $layout;
$this->localeJs = $localeJs; $this->localeJs = $localeJs;
$this->addHeadString('<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700,600">', 'font');
} }
/** /**
@ -164,9 +166,13 @@ class ClientView implements Renderable
* *
* @param string $string * @param string $string
*/ */
public function addHeadString($string) public function addHeadString($string, $name = null)
{ {
$this->headStrings[] = $string; if ($name) {
$this->headStrings[$name] = $string;
} else {
$this->headStrings[] = $string;
}
} }
/** /**