-
Notifications
You must be signed in to change notification settings - Fork 0
/
html_fa.py
147 lines (130 loc) · 5.61 KB
/
html_fa.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#! /usr/bin/python
# -*- coding: utf-8 -*-
"""HTML skeleton of the application and its predefined responses."""
from string import Template
from datetime import date
import commons
class Respose(commons.BaseResponse):
"""Create the responce object used by the main application."""
def __init__(self, sfnt, ctnt='', reft='', error='100'):
self.sfnt = sfnt
self.ctnt = ctnt
self.error = error
def response_to_template(response):
"""Insert the response into the template and return response_body."""
return template % (
response.sfnt,
response.ctnt,
response.reft,
response.error
)
template = Template("""<!DOCTYPE html>
<html dir="rtl">
<head>
<title>یادفا</title>
<style type="text/css">
textarea,
input {
transition: background-color 5s ease-in;
background-color: rgb(255, 255, 255);
border: 1px solid rgb(204, 204, 204);
padding: 2px 2px;
margin-bottom: 10px;
font-size: 14px;
line-height: 16px;
color: rgb(85, 85, 85);
vertical-align: middle;
border-radius: 5px 5px 5px 5px;
}
textarea {
display: block;
margin-left: auto;
margin-right: auto;
width: 100%;
word-break: break-all;
}
body {
font-family: tahoma;
font-size: 0.8em
}
input[type=text] {
width: 50%;
}
input[type=submit] {
float: left;
}
#info {
font-size: 90%;
color: #666666;
}
input[type=submit]:hover {
transition: background-color 1s ease-in;
background-color: #33CC33;
}
</style>
</head>
<body>
<div style="margin-left:auto; margin-right:auto; width:62%;">
<form method="get" action="yadkard.fcgi">
<p>
نشانی وب/شابک/شناسهٔ برنمود رقمی:
<br>
<input type="text" name="user_input">
<input type="submit" value="ثبت درخواست">
</p>
</form>
<p>
<a href="https://fa.wikipedia.org/wiki/%D8%A7%D9%84%DA%AF%D9%88:%D9%BE%D8%A7%D9%86%D9%88%DB%8C%D8%B3_%DA%A9%D9%88%D8%AA%D8%A7%D9%87%E2%80%8C%D8%B4%D8%AF%D9%87">پانویس کوتاهشده</a> و یادکرد:
<br>
<textarea id="shortened" rows="8">$s\n\n$s</textarea>
<a href="https://fa.wikipedia.org/wiki/%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7:%D9%BE%D8%A7%D9%86%D9%88%DB%8C%D8%B3%E2%80%8C%D9%87%D8%A7">برچسب ارجاع درونخطی</a>:
<br>
<textarea id="named_ref" rows="5">$s</textarea>
</p>
<p>
<!-- There may be error in language detection. $s % -->
</p>
<div id="info">
<p>
<i>یادفا</i> ابزاریست برای ساخت الگوهای یادکرد ویکیپدیای فارسی. این ابزار کمک میکند برچسب ارجاع (تگ <ref>) و/یا پانویس کوتاهشده و یادکرد مورد استفاده در ویکیپدیای فارسی را برای خود بسازید. ابزار موارد زیر را به عنوان ورودی میپذیرد:</p>
<p>
نشانی وب <a href="http://books.google.com/">کتابهای گوگل</a>، <a href="https://fa.wikipedia.org/wiki/%D9%86%D8%B4%D8%A7%D9%86%DA%AF%D8%B1_%D8%AF%DB%8C%D8%AC%DB%8C%D8%AA%D8%A7%D9%84%DB%8C_%D8%B4%DB%8C%D8%A1">شناسانۀ برنمود رقمی</a>، یا <a href="https://fa.wikipedia.org/wiki/%D8%B4%D8%A7%D8%A8%DA%A9">شابک</a> (حتی برای بسیاری از کتابهای فارسی).</p>
<p>
افزون بر اینها میتوانید نشانی وب بسیاری از خبرگزاریها را نیز در آن آزمایش کنید. توجه داشته باشید که همواره احتمال خطا در خروجی ابزار وجود دارد و خروجی آن نیازمند بازبینی خواهد بود. <b>با مسئولیت خودتان از آن استفاده کنید.</b></p>
<p>برای استفادهٔ راحتتر میتوانید از این <a href="javascript:void(window.open('http://tools.wmflabs.org/yadfa/yadkard.fcgi?user_input='+encodeURIComponent(location.href)))">بوکمارکلت</a> استفاده کنید.</p>
</div>
</div>
</body>
</html>"""
)
# Predefined responses
default_response = Respose(
'یادکرد ساختهشده اینجا نمایان خواهد شد...',
'',
'',
'??'
)
undefined_url_response = Respose(
'ورودی شناخته نشد.',
'خطا در سیاههٔ خطاها ثبت شد.'
)
httperror_response = Respose(
'خطای اچتیتیپی:',
'یک یا چند مورد از منابع اینترنتی مورد ' +
'نیاز برای ساخت این یادکرد در این لحظه ' +
'در دسترس نیستند. (و یا ورودی نامعتبر است)'
)
other_exception_response = Respose(
'خطای ناشناختهای رخ داد..',
'اطلاعات خطا در سیاهه ثبت شد.'
)
today = date.today()
template = template.safe_substitute(
{
'Ymd': today.strftime('%Y-%m-%d'),
'BdY': today.strftime('%B %d, %Y'),
'bdY': today.strftime('%b %d, %Y'),
'dBY': today.strftime('%d %B %Y'),
'dbY': today.strftime('%d %b %Y'),
}
).replace('%', '%%').replace('$', '%')