GithubHelp home page GithubHelp logo

akngs / ecogwiki Goto Github PK

View Code? Open in Web Editor NEW
78.0 78.0 21.0 4.99 MB

Wiki engine for Google App Engine written in Python

Home Page: http://www.ecogwiki.com

License: Other

Python 56.09% CSS 4.06% JavaScript 39.86%

ecogwiki's Introduction

Hi there ๐Ÿ‘‹

ecogwiki's People

Contributors

0hoo avatar gerald-kim avatar jangxyz avatar nabugoon avatar yong27 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ecogwiki's Issues

wiki-like image embed syntax

๊ตฌ๊ธ€ ๋“œ๋ผ์ด๋ธŒ๋‚˜ ๋“œ๋ž๋ฐ•์Šค์—์„œ ์ง€์ •ํ•œ ํด๋”์— ๋Œ€ํ•ด ์ด๋ฏธ์ง€๋ฅผ embedํ•˜๊ธฐ ์‰ฌ์› ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด

![image](db:image.jpg) //Dropbox
![image](gd:image.jpg) //Google drive

ํ˜น์€ ๋‘˜ ์ค‘์— ํ•˜๋‚˜๋งŒ ์ง€์ •ํ•œ ํ›„

![image](file:image.jpg) //Mediawiki-like

user who has write access cannot read page

A non-admin user who has write access to a page could not read the page unless he is declared in read acl.

Consider the following acl configuration:

.write [email protected]
.read [email protected]

some content here

and user [email protected] reaches the page. He can read the page, so it's meaningless to be declared as a writer!

Of course, generally a user might write the name in both .write and .read, but even if he doesn't, the system should understand that he who has write access could also read the content.

It seems like the current models.py calls can_read inside can_write for short-circuit logic, meaning,

"he who cannot read are not able to write"

but I think it should be the other way around:

"he who can write can read"

Is there some specific policy on this?

_๊ฐ€ ๋“ค์–ด๊ฐ„ URL์„ ํŒŒ์‹ฑํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

์—๋””ํ„ฐ์—์„œ http://blogs.msdn.com/b/david_gristwood/archive/2004/06/24/164849.aspx ๋งํฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ _์ดํ›„์˜ ํ…์ŠคํŠธ๊ฐ€ italic์œผ๋กœ ํ‘œ์‹œ๋˜๊ณ  ์ด ํ…์ŠคํŠธ๊ฐ€ ์žˆ๋Š” ํŽ˜์ด์ง€๋ฅผ Saveํ•˜๋ ค๊ณ  ํ•˜๋ฉด

Cannot accept the data for following reasons:
Duplicate paths not allowed

๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜์˜ค๋ฉด์„œ save๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Delete page with hierarchical path

Deleting page with hierarchical path doesn't work well.

  1. Create a page something like "A/B"
  2. Delete "A/B"
  3. Goto "A"
  4. The page says there's incoming link from "A/B".

Page alias / redirect support

๋Œ€๋ถ€๋ถ„์˜ ์œ„ํ‚ค์—”์ง„์€ redirection์„ ํ†ตํ•ด ํ•œ ํŽ˜์ด์ง€๋ฅผ ์—ฌ๋Ÿฌ ์ด๋ฆ„์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š”๋ฐ, ๊ฐœ์ธ์ ์œผ๋กœ๋Š” ๋ชจ๋‹ˆ์œ„ํ‚ค์˜ ๋ฐฉ์‹์ด ๋” ์ข‹์•„ ๋ณด์ž…๋‹ˆ๋‹ค.

Pagination

Following pages/features need pagination or something similar:

  • sp.changes
  • sp.posts
  • sp.search
  • sp.index?
  • Wikiquery results

@๊ฐ€ ๋“ค์–ด๊ฐ„ ๋งํฌ์˜ ๋ณ€ํ™˜

ํ˜„์žฌ๋Š” URL ์ฃผ์†Œ์— @๊ฐ€ ๋“ค์–ด๊ฐ€๋ฉด ๋งํฌ๊ฐ€ ์•„๋‹ˆ๋ผ email๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

@๊ฐ€ URL์— ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ์ด ์ ํ•ฉํ•˜๋ƒ๋Š” ๋…ผ์˜๊ฐ€ ์žˆ๊ธฐ๋Š” ํ•œ๊ฑฐ ๊ฐ™๊ธด ํ•ฉ๋‹ˆ๋‹ค๋งŒ..
ํ˜น์‹œ ์ด๋ฅผ ์ง€์›ํ•  ์ƒ๊ฐ์ด ์žˆ์œผ์‹ ๊ฐ€์š”?

์ด์œ ๋Š” ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ๊ธ€๋งต์ด ์ด๋ ‡๊ฒŒ ์“ฐ๊ณ  ์žˆ์–ด์š”:

[๊ตฌ๊ธ€๋งต](https://www.google.com/maps/dir/%EC%97%90%EC%BD%B0%EB%8F%84%EB%A5%B4+%EA%B0%88%EB%9D%BC%ED%8C%8C%EA%B3%A0%EC%8A%A4/%EC%B9%B4%EB%B3%B4%EB%B2%A0%EB%A5%B4%EB%8D%B0/@18.8144822,-53.4862847,4z/data=!4m13!4m12!1m5!1m1!1s0x9aaa92ee319f2cbf:0x95bebc63839846f2!2m2!1d-90.9820668!2d-0.8292784!1m5!1m1!1s0x9358f2159115131:0x6b1af236f918ea1f!2m2!1d-23.6050817!2d15.1217288)

github์€ ์ œ๋Œ€๋กœ ๋‚˜์˜ค๋Š”๊ฑธ ๋ณด๋‹ˆ, ์ง€์›ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค :)

(ํ˜‘๋ฐ•: ์•ˆ๋œ๋‹ค๊ณ  ํ•˜๋ฉด, "๊ตฌ๊ธ€๋งต ์ง€์›" ์ด์Šˆ๋ฅผ ๋”ฐ๋กœ ๋„ฃ์„ ์ƒ๊ฐ)

Maybe it's more natural to have 'cancel' button in the edit view?

If you want to cancel your edit and go back to the page, the only way is browser back button, which you need to use several times if you clicked the editor taps. (view=edit#plain -> view=edit#struct -> view=edit => original page)

I think it may be better to have a cancel button that brings you back to the page.

< > ๋ฅผ ํŽธ์ง‘๊ธฐ๊ฐ€ ๋ณ€ํ™˜ํ•ด๋ฒ„๋ฆฝ๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ HTML ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ž๋™์œผ๋กœ ๋ณ€ํ™˜ํ•ด์„œ ๋ณด์—ฌ์ฃผ๊ณ , ์ €์žฅํ•  ๋•Œ ๋ณ€ํ™˜๋œ ์ฑ„๋กœ ์ €์žฅํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.


์žฌํ˜„ ์‹œ๋‚˜๋ฆฌ์˜ค

ํŽ˜์ด์ง€์— &lt;refspec&gt; ์ด๋ผ๊ณ  ์ ๊ณ  ์ €์žฅ์„ ํ•˜๋ฉด, ํŽธ์ง‘ ์‹œ <refspec> ์œผ๋กœ ๋‚˜์˜ต๋‹ˆ๋‹ค.
(์ด ๋•Œ๊นŒ์ง€๋Š” _type=txt๋ฅผ ๋ณด๋ฉด ์—ฌ์ „ํžˆ &lt;refspec&gt;๋กœ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค)

์—ฌ๊ธฐ์—์„œ ๋ฐ”๋กœ ์ €์žฅ์„ ๋ˆ„๋ฅด๋ฉด ๋ณ€ํ™˜๋˜์–ด์„œ ์ €์žฅ์ด ๋ฉ๋‹ˆ๋‹ค. ์ด์ œ๋Š” txt ํ˜•์‹์œผ๋กœ ๋ด๋„ <refspec>์œผ๋กœ ๋‚˜์˜ต๋‹ˆ๋‹ค. ํ™”๋ฉด์— ๋ Œ๋”๋ง๋  ๋•Œ๋Š” ํƒœ๊ทธ๋กœ ์ธ์‹ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ž๊ธฐํ•œํ…Œ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธํ•˜๋Š” ํŽ˜์ด์ง€์˜ ์ˆ˜์ • ๋ถˆ๊ฐ€ ๋ฌธ์ œ

์‹ค์ˆ˜๋กœ ์–ด๋Š ํŽ˜์ด์ง€์— redirect๋ฅผ ์ž๊ธฐ ์ž์‹ ์œผ๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ์—, ์ด๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€๋ น, self-redirect ํญํƒ„์ด๋ผ๋Š” ํŽ˜์ด์ง€์—

.redirect self-redirect ํญํƒ„

์ด๋ผ๊ณ  ์ ์—ˆ๋‹ค๋ฉด, ์ด ํŽ˜์ด์ง€๋ฅผ ๋ฐฉ๋ฌธํ•˜๋ฉด ๋ฌดํ•œ ์ž๊ธฐ ์ˆœํ™˜์— ๋น ์ง€๊ฒŒ ๋˜๊ฒ ์ฃ . ํฌ๋กฌ์˜ ๊ฒฝ์šฐ ์ด๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ  ์•Œ๋ ค์ค๋‹ˆ๋‹ค:

redirect-loop-error

์ด๋Š” ์˜ˆ์ƒ๋œ ํ–‰๋™์ž…๋‹ˆ๋‹ค. (๋ฌผ๋ก  ํŽ˜์ด์ง€์—์„œ ๋ฏธ๋ฆฌ ์•Œ๋ ค์ฃผ๋ฉด ์ข‹๊ฒ ์ฃ )

๊ทธ๋Ÿฐ๋ฐ ๋ฌธ์ œ๋Š”, ์ด๋ฅผ ๊ณ ์น˜๊ธฐ ์œ„ํ•ด์„œ ์ˆ˜๋™์œผ๋กœ self-redirect ํญํƒ„?view=edit ์œผ๋กœ ์ ‘์†ํ•ด๋„ ํŽธ์ง‘ ํ™”๋ฉด์ด ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๊ณ  ๊ณ„์†ํ•ด์„œ ์ˆœํ™˜ ์˜ค๋ฅ˜ ํŽ˜์ด์ง€๊ฐ€ ๋‚˜ํƒ€๋‚œ๋‹ค๋Š” ๊ฒ๋‹ˆ๋‹ค. ์ด๋Š” ์ž˜๋ชป๋œ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค

self-redirect ํญํƒ„?_type=txt๋กœ ์ ‘๊ทผํ•˜๋ฉด ์ œ๋Œ€๋กœ ํ™”๋ฉด์— rawbody๋ฅผ ๋‚˜ํƒ€๋‚ด์ค๋‹ˆ๋‹ค. ์ด๋ฅผ ์ด์šฉํ•ด self-redirect ํญํƒ„?_type=txt&view=edit ์‹์œผ๋กœ ์ ‘๊ทผํ•˜๋ฉด ํŽธ์ง‘ํ™”๋ฉด์ด ๋‚˜ํƒ€๋‚˜๊ธด ํ•ฉ๋‹ˆ๋‹ค๋งŒ.. ํ•ด๊ฒฐ๋˜์—ˆ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค.


๋‹ค์Œ์€ ์˜ˆ์ œ ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค. (์–ธ์ œ ์ˆ˜์ •๋˜๊ฑฐ๋‚˜ ์—†์–ด์งˆ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ณ ์น˜๋Š” ๋‹น์‹œ์—๋งŒ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”)

Site name and logo image to top-bar

There are many ecogwikis, these have same look and feel. It would be better it display site name and logo image at top-bar. If user did not have logo image, default image (ecogwiki logo) can be displayed.

I suggest {{ logo_image }} {{ site_name }} --------- {{ preferences }} {{ logout }} {{ search }}

page rename ์ œ์•ˆ

์‚ฌ์šฉ์ž๋Š” ์œ„ํ‚ค ํŽ˜์ด์ง€์˜ ์ œ๋ชฉ์„ ๋ฐ”๊พธ๊ณ  ์‹ถ์–ด์„œ rename์„ ํ•˜๊ณ  ์‹ถ์–ดํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ์œ„ํ‚ค์—์„œ ํŽ˜์ด์ง€ ์ œ๋ชฉ์ด ๊ณง id์ด๋ผ ๊ฐ„๋‹จํ•˜์ง€ ์•Š์€๋ฐ,
๊ทธ๋ž˜์„œ ์‚ฌ์šฉํŽธ์˜์„ฑ์„ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ œ๋ชฉ๋ณ€๊ฒฝ ๊ธฐ๋Šฅ์€ ์–ด๋–จ๊นŒ, ์ œ์•ˆํ•ด๋ด…๋‹ˆ๋‹ค.

์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋œ ํŽ˜์ด์ง€๋กœ ๊ฐ€๊ธฐ

  1. ์‚ฌ์šฉ์ž๋Š” <์ด์ „ ํŽ˜์ด์ง€>์˜ ํŽธ์ง‘ ํ™”๋ฉด์—์„œ [์ด๋ฆ„ ๋ณ€๊ฒฝ] ๋งํฌ๋ฅผ ์ด์šฉํ•ด ์ œ๋ชฉ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ์ œ๋ชฉ์„ <์ƒˆ ํŽ˜์ด์ง€>๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ๋‚˜๋ฉด, <์ƒˆ ํŽ˜์ด์ง€>์—์„œ ๋‚ด์šฉ์„ ๊ทธ๋Œ€๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  3. <์ƒˆ ํŽ˜์ด์ง€>์˜ ๋ฆฌ๋น„์ „์„ ๋ณด๋ฉด, ์ฒซ ๋ฆฌ๋น„์ „ comment์—๋Š” "<์ด์ „ ํŽ˜์ด์ง€?rev=5>์—์„œ ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค"๋ผ๊ณ  ๋‚˜์˜จ๋‹ค.
  4. <์ด์ „ ํŽ˜์ด์ง€?rev=5>๋กœ ๊ฐ€๋Š” ๋งํฌ๊ฐ€ ํ•จ๊ป˜ ์žˆ์–ด์„œ, ํด๋ฆญํ•˜๋ฉด ์ด์ „ ํŽ˜์ด์ง€์˜ ํ•ด๋‹น ๋ฆฌ๋น„์ „๊นŒ์ง€๋งŒ ๋‚˜์˜ค๋Š” ํŽ˜์ด์ง€๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

ํ—Œ ํŽ˜์ด์ง€๋Š” ๋ฆฌ๋น„์ „๋งŒ

  1. ํ•œํŽธ, <์ด์ „ ํŽ˜์ด์ง€>์—๋Š” ๋‚ด์šฉ์ด ์ง€์›Œ์ ธ ์žˆ๊ณ , ๋ฆฌ๋น„์ „์—๋งŒ ๋‚จ์•„ ์žˆ๋‹ค.
  2. ๊ทธ ๋’ค์— ์ž‘์„ฑ๋˜๋Š” ๋‚ด์šฉ์€ ๋‹ค์Œ ๋ฆฌ๋น„์ „๋ถ€ํ„ฐ ๊ณ„์† ์Œ“์ด๊ฒŒ ๋œ๋‹ค.

์ด๋ฆ„ ๋ณ€๊ฒฝ์ด ์•ˆ ๋˜๋Š” ๊ฒฝ์šฐ

  • <์ƒˆ ํŽ˜์ด์ง€>์— ์ด๋ฏธ ๋‚ด์šฉ์ด ์žˆ์œผ๋ฉด, ์ œ๋ชฉ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค.

๋ฆฌ๋น„์ „ ๋Œ“๊ธ€์— '์ด์ „ ํŽ˜์ด์ง€์˜ ํ•ด๋‹น ๋ฆฌ๋น„์ „๊นŒ์ง€' ๋ณด๋Ÿฌ ๊ฐ€๋Š” ๋งํฌ๋ฅผ ๋‹ค๋Š” ๊ฒƒ์ด ํ˜„์žฌ๋กœ์„  ๊ฐ„๋‹จํ•˜์ง€๊ฐ€ ์•Š๋„ค์š”.

์–ด๋–จ๊นŒ์š”?

๋‹ค์ค‘์†์„ฑ์„ ๊ฐ€์ง„ schema property์˜ json ์ธ์ฝ”๋”ฉ ๋ฌธ์ œ

์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ฐ’์„ ๊ฐ€์ง€๋Š” schema property๋ฅผ ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๊ฒƒ์ด json ์ธ์ฝ”๋”ฉ ์‹œ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ต๋‹ˆ๋‹ค.

์˜ˆ:

author: ["๊ฐ•๊ทœ์˜", "๊น€์žฅํ™˜"]

๋กœ๊ทธ๋ฅผ ๋ณด๋ฉด schema.ThingProperty์„ JSON์ด serialize ์‹œํ‚ค๋ ค๋‹ค ์‹คํŒจํ•œ๋‹ค๊ณ  ๋‚˜์˜ต๋‹ˆ๋‹ค.

ERROR    2014-02-08 07:45:49,961 webapp2.py:1528] <schema.ThingProperty object at 0x10709c750> is not JSON serializable

์˜ˆ์‹œ ํŽ˜์ด์ง€์—์„œ ์—๋Ÿฌ๋ฅผ ํ™•์ธํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[์ œ์•ˆ] ์˜์–ด ํŽ˜์ด์ง€ ์ œ๋ชฉ ๋Œ€์†Œ๋ฌธ์ž ์ •์ฑ…

๋Œ€์†Œ๋ฌธ์ž๋‚˜ ๋„์–ด์“ฐ๊ธฐ๋Š” ์œ„ํ‚ค ์šด์˜์ž๋งˆ๋‹ค ๋ฌผ๋ก  ๋‹ค๋ฅธ ์ •์ฑ…์„ ๊ฐ–๋Š” ๊ฒƒ์ด ์ข‹์ง€๋งŒ,
์ด๋ฏธ ๋„์–ด์“ฐ๊ธฐ์— ๋Œ€ํ•ด์„œ "์„œ๋ฒ„๊ฐ€ ์•Œ์•„์„œ ์–ธ๋”์ŠคํŽ˜์ด์Šค(_)๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ๋Š” ๊ฒƒ"๊ณผ ๊ฐ™์ด
์‚ฌ์šฉ์ž ํŽธ์˜๋ฅผ ์œ„ํ•ด ๋Œ€์†Œ๋ฌธ์ž๋„ ๊ทธ๋Ÿฌํ•œ ๊ธฐ๋ณธ ์ •์ฑ…์„ ์ œ์•ˆํ•ด ๋ด…๋‹ˆ๋‹ค.

์ฃผ๋œ ์ด์œ ๋Š”, "์‚ฌ์šฉ์ž๋กœ์„œ ์˜์–ด๋กœ๋œ ํŽ˜์ด์ง€๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ๋งค๋ฒˆ ๊ณ ๋ คํ•˜๊ธฐ ๋ฒˆ๊ฑฐ๋กœ์›Œ์„œ" ์ž…๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์œ„ํ‚ค๋Š” ๋ชจ๋ฅด๊ฒ ๊ณ , Wikipedia๋Š” ํ˜„์žฌ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ํ•ด์ฃผ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • ์ฒซ๊ธ€์ž๋Š” ์„œ๋ฒ„์—์„œ ์ž๋™์œผ๋กœ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค. (์˜ˆ: continental drift)

  • ๋‘๋ฒˆ์งธ ๋‹จ์–ด๋ถ€ํ„ฐ๋Š” ๋ฐ”๊พธ์ง€ ์•Š๋Š”๋‹ค. (์˜ˆ: Continental Drift)

    ์‚ฌ์šฉ์ž๋Š” ํ•„์š”ํ•˜๋ฉด redirect ๋“ฑ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ˜น์‹œ ์ด๋Ÿฐ ์‹์˜ ๋ฐฉ์•ˆ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๊ณ  ์žˆ๋Š”๊ฒŒ ์žˆ๋Š”์ง€, ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

{{url::http://ecogwiki.com/}} ํŒŒ์‹ฑ ์—๋Ÿฌ

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ž์—ด์„ ์ œ๋Œ€๋กœ ํŒŒ์‹ฑํ•ด ๋‚ด์ง€ ๋ชปํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋’ค์— }}๊ฐ€ ๋ถ™๋„ค์š”:

{{url::http://ecogwiki.com/}}

๊ฒฐ๊ณผ:

<a href="...">http://ecogwiki.com}}</a>

์ฝ”๋“œ๋ฅผ ๋ณด๋‹ˆ md_url.py์˜ url_re ๊ฐ€ ๋‚ด๋ถ€์— http:// ๋ฅ˜๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” ๋ชจ๋“  ๋งํฌ๋ฅผ ๋จผ์ € ํŒŒ์‹ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜๋Š” ์—๋Ÿฌ์ธ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋จผ์ € {{url๊ณผ http://ecogwiki.com/}} ์œผ๋กœ ๋Š์–ด์ ธ์„œ, ์ดํ›„์˜ md_itemprop.py์—์„œ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š๊ณ  ์žˆ๋„ค์š”.

schema.org์— ๋”ฐ๋ฅด๋ฉด ๊ธฐ๋ณธ Article๋งŒ ํ•ด๋„ URL์ด ๋“ค์–ด๊ฐ€๋Š” itemprop์ด 7๊ฐ€์ง€๋‚˜ ๋˜๋Š”๋ฐ, ๊ณ ์ณ์•ผ๊ฒ ์ฃ .


markdown.inlinepatterns.Patterns๋ฅผ ์ด์šฉํ•˜๋Š” re pattern์ด ์ฝ๊ธฐ ํž˜๋“ ๋ฐ, ํ˜น์‹œ re.VERBOSE ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์‹ค ์ƒ๊ฐ์€ ์—†๋‚˜์š”?

์ค‘์ฒฉ li ๋„์–ด์“ฐ๊ธฐ

๋ฆฌ์ŠคํŠธ์•„์ดํ…œ(li) ์•ˆ์— ๋˜ ๋ฆฌ์ŠคํŠธ์•„์ดํ…œ(li)์ด ์ค‘์ฒฉ๋  ๋•Œ, multiparagraph๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ์— CSS๊ฐ€ ํ‹€์–ด์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ:

* ์ฒซ๋ฒˆ์งธ ์•„์ดํ…œ

    1. ์ค‘์ฒฉ ์•„์ดํ…œ1
    2. ์ค‘์ฒฉ ์•„์ดํ…œ2

* ๋‘๋ฒˆ์งธ ์•„์ดํ…œ

๋‹ค์Œ์˜ ๋‘ ๊ทธ๋ฆผ์„ ๋น„๊ตํ•ด์ฃผ์„ธ์š” (์™ผ์ชฝ์ด ํ˜„์žฌ, ์˜ค๋ฅธ์ชฝ์ด ์ˆ˜์ •์•ˆ):

css_diff_1

์ด๋Š” margin-top, margin-bottom์ด li > p ์—๋งŒ ์ ์šฉ์ด ๋˜์–ด ์žˆ๊ณ , li > ol, li > ul์—๋Š” ์ ์šฉ์ด ์•ˆ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

css_diff_2

๋”ฐ๋ผ์„œ ์ด์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์œผ๋กœ article .body li ์•„๋ž˜์— ์žˆ๋Š” p, ul, ol ๋ชจ๋‘์—๊ฒŒ margin์„ ์ ์šฉํ•ด์ฃผ๋Š” ๊ฒƒ์ด ๋งž๋‹ค๊ณ  ๋ด…๋‹ˆ๋‹น.

14px์€ ์–ด๋””์„œ ์ •์˜๋œ๊ฑด์ง€ ๋ชจ๋ฅด๊ฒ ๋„ค์š”. ์–ด์ฉŒ๋ฉด 1em์ผ์ง€๋„ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆใ….

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.