Tema devşiriliyor

master
Özcan Oğuz 4 years ago
parent 693a7dec00
commit a8f06855b5
Signed by: ooguz
GPG Key ID: 2D33E2BD3D975818
  1. 6
      AUTHORS
  2. 6
      README.md
  3. 124
      mediagoblin-oyd/__init__.py
  4. 42
      mediagoblin-oyd/templates/libreplanet/banner.html
  5. 49
      mediagoblin-oyd/templates/libreplanet/join.html
  6. 32
      mediagoblin-oyd/templates/libreplanet/listing.html
  7. 87
      mediagoblin-oyd/templates/libreplanet/root.html
  8. 62
      mediagoblin-oyd/views.py
  9. 2
      setup.py

@ -1 +1,7 @@
## mediagoblin-oyd authors
Özcan Oğuz <ozcan@oyd.org.tr>
## Original authors
David Thompson <davet@gnu.org>

@ -1,4 +1,4 @@
MediaGoblin for LibrePlanet
===========================
MediaGoblin for ÖYD
===================
A simple plugin for https://media.libreplanet.org
A simple plugin for https://medya.oyd.org.tr derived from LibrePlanet

@ -0,0 +1,124 @@
# MediaGoblin for ÖYD
# Copyright (C) 2015 David Thompson <davet@gnu.org>
# Copyright (C) 2020 Özcan Oğuz <ozcan@oyd.org.tr>
#
# 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/>.
import logging
import os
from mediagoblin import mg_globals
from mediagoblin.tools.pluginapi import get_config, register_template_path, register_routes, register_template_hooks
from mediagoblin.db.models import MediaEntry
from mediagoblin.db.util import media_entries_for_tag_slug
from mediagoblin.tools.pagination import Pagination
from mediagoblin.tools.response import render_to_response
from mediagoblin.tools.licenses import SORTED_LICENSES, SUPPORTED_LICENSES, License
from mediagoblin.decorators import uses_pagination, user_not_banned
# Add GNU FDL 1.3
gfdl_1_3 = License("GFDL 1.3",
"GNU Free Documentation License 1.3",
"https://www.gnu.org/licenses/fdl-1.3.en.html")
SORTED_LICENSES.insert(4, gfdl_1_3)
SUPPORTED_LICENSES[gfdl_1_3.uri] = gfdl_1_3
PLUGIN_DIR = os.path.dirname(__file__)
MAX_HOME_ITEMS_DEFAULT = 10
MAX_HOME_ALL_VIDEO_ITEMS = 10
MAX_HOME_ALL_PHOTO_ITEMS = 20
MAX_HOME_FEATURED_ITEMS = 10
MAX_HOME_LP_ITEMS = 10
# make tags lowercase and use dashes in place of spaces.
# uppercase tags will be included by the lowercase form.
FEATURED_TAG = "yıldızlı"
_log = logging.getLogger(__name__)
# This is the function that gets called when the setup
# hook fires.
def setup_plugin():
_log.info("Setting up medya.oyd.org.tr...")
# Register the template path.
register_template_path(os.path.join(PLUGIN_DIR, 'templates'))
def lp_media_for_type(db, type, tag=None, max_items=MAX_HOME_ITEMS_DEFAULT):
if (tag == None):
cursor = MediaEntry.query
else:
cursor = media_entries_for_tag_slug(db, tag)
return cursor.\
filter((MediaEntry.media_type == type)
& (MediaEntry.state == u'processed')).\
order_by(MediaEntry.created.desc()).\
limit(max_items)
@user_not_banned
def frontpage_view(request):
images = lp_media_for_type(request.db, u'mediagoblin.media_types.image', None, MAX_HOME_ALL_PHOTO_ITEMS)
videos = lp_media_for_type(request.db, u'mediagoblin.media_types.video', None, MAX_HOME_ALL_VIDEO_ITEMS)
ozgurkon_video = lp_media_for_type(request.db, u'mediagoblin.media_types.video', "libreplanet-2017-keynote", MAX_HOME_LP_ITEMS)
ozgurkon_slayt = lp_media_for_type(request.db, u'mediagoblin.media_types.video', "libreplanet-2017-video", MAX_HOME_LP_ITEMS)
logolar = lp_media_for_type(request.db, u'mediagoblin.media_types.image', "logo", MAX_HOME_LP_ITEMS)
bultenler = lp_media_for_type(request.db, u'mediagoblin.media_types.pdf', "bulten", MAX_HOME_LP_ITEMS)
yayinlar = lp_media_for_type(request.db, u'mediagoblin.media_types.pdf', "yayin", MAX_HOME_LP_ITEMS)
featured_images = lp_media_for_type(request.db, u'mediagoblin.media_types.image', FEATURED_TAG, MAX_HOME_FEATURED_ITEMS)
featured_videos = lp_media_for_type(request.db, u'mediagoblin.media_types.video', FEATURED_TAG, MAX_HOME_FEATURED_ITEMS)
return render_to_response(
request, 'libreplanet/root.html',
{'images': images,
'videos': videos,
'logolar': logolar,
'bultenler': bultenler,
'yayinlar': yayinlar,
'featured_images': featured_images,
'featured_videos': featured_videos,
'allow_registration': mg_globals.app_config["allow_registration"]})
def frontpage_view_hook():
return frontpage_view
register_routes([('all-videos', '/videos',
'mediagoblin.plugins.libreplanet.views:video_listing'),
('all-photos', '/photos',
'mediagoblin.plugins.libreplanet.views:image_listing'),
('featured-videos', '/videos/featured',
'mediagoblin.plugins.libreplanet.views:featured_video_listing'),
('featured-photos', '/photos/featured',
'mediagoblin.plugins.libreplanet.views:featured_image_listing')
])
# This is a dict that specifies which hooks this plugin uses.
# This one only uses one hook: setup.
hooks = {
'setup': setup_plugin,
'frontpage_view': frontpage_view_hook
}
register_template_hooks(
{'header_left': "libreplanet/banner.html",
'header_extra': "libreplanet/join.html"}
)

@ -0,0 +1,42 @@
{#
# MediaGoblin for LibrePlanet
# Copyright (C) 2017 Andrew Engelbrecht <andrew@fsf.org>
#
# 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/>.
#}
{# banner
<style>
.logo img { margin-top: 80px; }
.header_left { position: relative; margin-bottom: -64px; }
</style>
<div style="position: absolute; margin-left: -30px; top: 0; width: 1000px;">
<iframe src="//static.fsf.org/nosvn/banners/libreplanet/libreplanet-banner.html" width="100%" height="64px" frameborder="0" scrolling="no"></iframe>
</div>
#}
{# style for no banner #}
<style>
.logo img { margin-top: 16px; }
</style>
{# for spacing below the banner
also update the join.html template file when adding/removing/changing
the spacing of this div.
-- sudoman 2017-03-09
<div style="margin-top: 64px;"></div>
#}

@ -0,0 +1,49 @@
{#
# MediaGoblin for LibrePlanet
# Copyright (C) 2017 Andrew Engelbrecht <andrew@fsf.org>
#
# 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/>.
#}
<style>
.noselect {
-webkit-touch-callout: none; /* iOS Safari */
-webkit-user-select: none; /* Safari */
-khtml-user-select: none; /* Konqueror HTML */
-moz-user-select: none; /* Firefox */
-ms-user-select: none; /* Internet Explorer/Edge */
user-select: none; /* Non-prefixed version, currently
supported by Chrome and Opera */
}
.campaign_donate {
text-decoration: none;
background-color: #4C2447;
color: #cacaca;
border-radius: 3px;
padding: 8px 12px;
margin-left: 10px;
}
</style>
{# for spacing below the banner; see banner.html template. -- sudoman 2017-03-09 #}
{#
<div style="margin-top: 64px;"></div>
#}
<div class="noselect" style="display: inline; margin-right: 40px;">
<div style="display: inline; margin-right: 40px;"><a href="https://www.oyd.org.tr" target="_blank">ÖYD</a></div>
<a class="campaign_donate" href="https://bagis.oyd.org.tr" target="_blank">
{% trans %}Bağış{% endtrans %}
</a>
</div>

@ -0,0 +1,32 @@
{#
# MediaGoblin for LibrePlanet
# Copyright (C) 2011, 2012 MediaGoblin contributors
# Copyright (C) 2015 David Thompson <davet@gnu.org>
#
# 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/>.
#}
{% extends "mediagoblin/base.html" %}
{% from "mediagoblin/utils/object_gallery.html" import object_gallery %}
{% block title %}
{{ title }} &mdash; {{ super() }}
{% endblock %}
{% block mediagoblin_content -%}
<h1>{{ title }}</h1>
{{ object_gallery(request, media_entries, pagination) }}
{% endblock %}

@ -0,0 +1,87 @@
{#
# MediaGoblin for LibrePlanet
# Copyright (C) 2011, 2012 MediaGoblin contributors
# Copyright (C) 2015 David Thompson <davet@gnu.org>
#
# 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/>.
#}
{% extends "mediagoblin/base.html" %}
{% from "mediagoblin/utils/object_gallery.html" import media_grid %}
{% set feed_url = request.urlgen('mediagoblin.listings.atom_feed') %}
{% block mediagoblin_head -%}
{% set feed_url = request.urlgen('mediagoblin.listings.atom_feed') -%}
<link rel="alternate" type="application/atom+xml" href="{{ feed_url }}">
{%- endblock mediagoblin_head %}
{% block mediagoblin_content %}
<h1>{% trans %}Özgür Yazılım Derneği'nin medya sunucusuna hoş geldiniz!{% endtrans %}</h1>
<img class="right_align" src="//oyd.org.tr/media.png" />
<p>
{% trans %}Bu web sitesinde, <a href="https://oyd.org.tr" target="_blank">Özgür Yazılım Derneği</a>'nin yaptığı tüm medya çıktıları (belgeler, fotoğraflar, videolar, yayınlar vb.) bulunmaktadır.{% endtrans %}
</p>
<p>{% trans %}Derneğimizin projelerinin ve diğer çıktılarının kaynak kodlarına ulaşmak için, <a href="https://git.oyd.org.tr" target="_blank">Git sunucumuzu</a> ziyaret edebilirsiniz.{% endtrans %}</p>
<p>{% trans %} Özgür Yazılım Derneği, özgür yazılım hareketini ve hali ile tüm insanların modern dünyadaki özgürlüklerini savunan insanların oluşturduğu bir topluluktur. Özgür Yazılım Derneği insanların özgürlüğünü, yazılımların özgürlüğünden başlamak üzere, donanımların, İnternet’in ve hizmetlerin özgürlüğü ile bağlantılı olarak savunur. {% endtrans %}</p>
<div class="clear"></div>
<h2>{% trans %}ÖzgürKon 2020 Oturumlar{% endtrans %}</h2>
{{ media_grid(request, ozgurkon_video) }}
<div class="clear"></div>
<h2>{% trans %}ÖzgürKon 2020 Slaytlar{% endtrans %}</h2>
{{ media_grid(request, ozgurkon_slayt) }}
<div class="clear"></div>
<p>
<a href="/u/oyd/tag/ozgurkon-2020/">Tümünü görüntüle...</a>
</p>
<h2>{% trans %}Bültenler{% endtrans %}</h2>
{{ media_grid(request, bultenler) }}
<div class="clear"></div>
<p>
<a href="/u/oyd/tag/yayinlar/">Tüm yayınlar...</a>
</p>
{# commenting out featured media sections for front page #}
{#
<h2>{% trans %}Öne çıkan videolar{% endtrans %}</h2>
{{ media_grid(request, featured_videos) }}
<div class="clear"></div>
<p>
<a href="/videos/featured">Tümü...</a>
</p>
<h2>{% trans %}Öne çıkan fotoğraflar{% endtrans %}</h2>
{{ media_grid(request, featured_images) }}
<div class="clear"></div>
<p>
<a href="/photos/featured">Tümü...</a>
</p>
#}
<h2>{% trans %}Tüm videolar{% endtrans %}</h2>
{{ media_grid(request, videos) }}
<div class="clear"></div>
<p>
<a href="/videos">Tümü...</a>
</p>
{#- Need to set feed_url within this block so template can use it. -#}
{%- set feed_url = feed_url -%}
{%- include "mediagoblin/utils/feed_link.html" -%}
{% endblock %}

@ -0,0 +1,62 @@
# MediaGoblin for LibrePlanet
# Copyright (C) 2015 David Thompson <davet@gnu.org>
#
# 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/>.
from mediagoblin import mg_globals
from mediagoblin.db.models import MediaEntry
from mediagoblin.db.util import media_entries_for_tag_slug
from mediagoblin.tools.pagination import Pagination
from mediagoblin.tools.response import render_to_response
from mediagoblin.decorators import uses_pagination
def type_listing(media_type, title, request, page, tag=None):
if (tag == None):
cursor = MediaEntry.query
else:
cursor = media_entries_for_tag_slug(request.db, tag)
cursor = cursor.\
filter((MediaEntry.media_type == media_type)
& (MediaEntry.state == u'processed')).\
order_by(MediaEntry.created.desc())
pagination = Pagination(page, cursor)
media_entries = pagination()
return render_to_response(
request,
'libreplanet/listing.html',
{'title': title,
'media_entries': media_entries,
'pagination': pagination})
@uses_pagination
def image_listing(request, page):
return type_listing(u'mediagoblin.media_types.image', 'Photos', request, page)
@uses_pagination
def video_listing(request, page):
return type_listing(u'mediagoblin.media_types.video', 'Videos', request, page)
@uses_pagination
def featured_image_listing(request, page):
return type_listing(u'mediagoblin.media_types.image', 'Featured Photos', request, page, "featured")
@uses_pagination
def featured_video_listing(request, page):
return type_listing(u'mediagoblin.media_types.video', 'Featured Videos', request, page, "featured")

@ -17,7 +17,7 @@
from setuptools import setup, find_packages
setup(
name='mediagoblin_libreplanet',
name='mediagoblin-oyd',
version='0.1',
packages=find_packages(),
include_package_data=True,

Loading…
Cancel
Save