Angus' Events Plugin ๐Ÿ“…

์ด ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

3๊ฐœ์˜ ์ข‹์•„์š”

์บ˜๋ฆฐ๋” ํŽ˜์ด์ง€๊ฐ€ ๋กœ๋“œ๋œ ํ›„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ธ๊ฐ€์š”?


์ˆ˜์ •: ์ œ ์ƒํ™ฉ์„ ์„ค๋ช…๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.
๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹ค์ƒ‰ ์ด๋ฒคํŠธ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ์š”์ฒญ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค:

ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ํฌํฌ๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์ง€ ์•Š์•„์„œ, ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ผ๋ถ€ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ƒ‰์ƒ์€ ์ด๋ฒคํŠธ ํƒœ๊ทธ์™€ ๊ด€๋ จ๋˜์–ด ์žˆ์œผ๋ฉฐ ๊ธฐ๋ณธ ์นดํ…Œ๊ณ ๋ฆฌ ์ƒ‰์ƒ์„ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฒคํŠธ HTML์— ํƒœ๊ทธ ๋ชฉ๋ก์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค: data-tags="{{event.topic.tags}}"

<script type="text/x-handlebars" data-template-name="javascripts/components/events-calendar-event">
<div class="{{event.classes}}" data-tags="{{event.topic.tags}}" {{action 'selectEvent' event.topic.url}} style="{{event.listStyle}}">
  {{#unless event.allDay}}
    <span style='{{event.dotStyle}}'>{{d-icon 'circle'}}</span>
  {{/unless}}
  {{#if event.time}}
    <span class="time">{{event.time}}</span>
  {{/if}}
  {{#if event.title}}
    <span class="title" style="{{event.titleStyle}}">{{replace-emoji event.title}}</span>
  {{/if}}
</div>

{{#if showEventCard}}
  {{events-calendar-card topic=event.topic selectEvent="selectEvent"}}
{{/if}}
</script>

์ŠคํŠธ๋ผ์ดํ”„ ํŒจํ„ด์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค:

<script type="text/discourse-plugin" version="0.8.23">
api.onPageChange((url, title) => {
    // tags colors
    let colors = {muni: "#91D0B5", road: "#8ABBE2", freestyle: "#CFB3D3"};

    let events = document.getElementsByClassName("event");
    for (var i = 0; i < events.length; i++) {
        let event = events[i];
        let gradient = "";
        let tags = event.getAttribute("data-tags").split(",");
        for (j = 1; j <= tags.length; j++) {
            gradient +=
                ", " +
                colors[tags[j - 1]] +
                " " +
                j * 8 +
                "px, " +
                colors[tags[j - 1]] +
                " " +
                (j * 8 + 8) +
                "px";
        }
        event.style.background = "repeating-linear-gradient(-45deg" + gradient + ")";
    }
});
</script>

๊ทธ๋ฆฌ๊ณ  CSS๋ฅผ ์กฐ๊ธˆ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ:
ํƒœ๊ทธ 2๊ฐœ์ธ ์ด๋ฒคํŠธ:

ํƒœ๊ทธ 3๊ฐœ์ธ ์ด๋ฒคํŠธ:

์ œ๊ฐ€ ๊ฒช๋Š” ๋ฌธ์ œ๋Š” ์ œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํŽ˜์ด์ง€ ๋ณ€๊ฒฝ ์‹œ ์‹คํ–‰๋˜๋Š”๋ฐ, ์บ˜๋ฆฐ๋”๊ฐ€ ๋™์ ์œผ๋กœ ์ฝ˜ํ…์ธ ๋ฅผ ๋กœ๋“œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด์ „/๋‹ค์Œ ๋‹ฌ์˜ ์ด๋ฒคํŠธ์—๋Š” ์ŠคํŠธ๋ผ์ดํ”„ ์ƒ‰์ƒ์ด ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

10์›”์— ์žˆ์œผ๋ฉด์„œ "๋‹ค์Œ"์„ ๋‘ ๋ฒˆ ํด๋ฆญํ•˜์—ฌ 12์›”๋กœ ์ด๋™ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค:

์ด ๋•Œ๋ฌธ์— ์บ˜๋ฆฐ๋” ์ฝ˜ํ…์ธ ๊ฐ€ ๋กœ๋“œ๋˜์—ˆ์„ ๋•Œ ์ œ JS๊ฐ€ ์‹คํ–‰๋˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

3๊ฐœ์˜ ์ข‹์•„์š”

๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์‹œ๋„ํ•˜์—ฌ /assets/javascripts/discourse/lib/date-utilities.js.es6 ํŒŒ์ผ์˜ eventsForDay ํ•จ์ˆ˜๋ฅผ ์ˆ˜์ •ํ•จ์œผ๋กœ์จ ์ค„๋ฌด๋Šฌ ํšจ๊ณผ๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค:

๋‹ค์Œ ์ค„์„:

let tStyle = `width:calc((100%*${daysInRow}) - ${buffer}px);background-color:#${topic.category.color};`;

์•„๋ž˜ ๋‚ด์šฉ์œผ๋กœ ๊ต์ฒดํ–ˆ์Šต๋‹ˆ๋‹ค:

let tStyle = `width:calc((100%*${daysInRow}) - ${buffer}px);`;

๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค:

if (topic.tags.length > 0) {
  let colors = {muni: "#91D0B5", road: "#8ABBE2", freestyle: "#CFB3D3"};
  let gradient = "";
  for (let i = 1; i <= topic.tags.length; i++) {
    gradient +=
      ", " +
      colors[topic.tags[i - 1]] +
      " " +
      i * 8 +
      "px, " +
      colors[topic.tags[i - 1]] +
      " " +
      (i * 8 + 8) +
      "px";
  }
   attrs['listStyle'] += `background:repeating-linear-gradient(-45deg ${gradient});`;
}

์ด ๋ฐฉ์‹์€ ์ œ๊ฐ€ ์›ํ•˜๋Š” ํšจ๊ณผ๋ฅผ ํ›จ์”ฌ ๋” ๊น”๋”ํ•˜๊ฒŒ ๊ตฌํ˜„ํ•ด ์ค๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ํฌํฌ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€ ์—†์ด ์ด ํ•จ์ˆ˜๋‚˜ ํŒŒ์ผ์„ ์˜ค๋ฒ„๋ผ์ด๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹คโ€ฆ

2๊ฐœ์˜ ์ข‹์•„์š”

ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ตœ์‹  Discourse ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์žฌ๋นŒ๋“œ ๋กœ๊ทธ ํŒŒ์ผ ๋‚ด์šฉ:

1: from /var/www/discourse/lib/plugin/instance.rb:417:in block in notify_after_initialize' /var/www/discourse/plugins/discourse-events/plugin.rb:190:in block in activate!': uninitialized constant #Class:0x0000562a2a10fa90::SCOPES
Did you mean? Sprockets (NameError)

** ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ **

/var/www/discourse/plugins/discourse-events์— ์žˆ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ์˜ค๋ฅ˜๋กœ ์ธํ•ด Discourse ๋นŒ๋“œ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๋‹น ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ œ๊ฑฐํ•œ ํ›„ ๋‹ค์‹œ ๋นŒ๋“œํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค!

4๊ฐœ์˜ ์ข‹์•„์š”

Discourse์˜ ๋ฌธ์ œ์˜€์œผ๋ฉฐ ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๋ฌธ์ œ๋Š” ์•„๋‹Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์ตœ์‹  Discourse ๋ฒ ํƒ€ ๋ฒ„์ „์—์„œ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋‹ค์‹œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

2๊ฐœ์˜ ์ข‹์•„์š”

ํ˜„์žฌ ์ตœ์‹  ์•ˆ์ •ํŒ Discourse๋ฅผ ์ตœ์‹  events ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ํ•จ๊ป˜ ๋‹ค์‹œ ๋นŒ๋“œํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. :worried:

๋ถˆํ–‰ํžˆ๋„ tests-passed๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ์œ ํ˜•์˜ ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์ •ํ™•ํžˆ stable ๋ธŒ๋žœ์น˜๋ฅผ ์„ ํƒํ•œ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ์กฐ์‚ฌํ•˜๊ณ  ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์žˆ์„๊นŒ์š”?

v2.5.2(์ด์ „์— ์ž‘๋™ํ•˜๋˜ ๋ฒ„์ „)๋กœ ๋‹ค์‹œ ๋นŒ๋“œํ•ด ๋ณด์•˜์ง€๋งŒ ๋™์ผํ•œ ์˜ค๋ฅ˜๋กœ ์‹คํŒจํ•˜๋ฏ€๋กœ, ๋ฌธ์ œ๊ฐ€ ์–ด๋””์— ์žˆ๋Š”์ง€ ์ •ํ™•ํžˆ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์žˆ๋Š” ํŠน์ • ์ปค๋ฐ‹(ํ”Œ๋Ÿฌ๊ทธ์ธ ๋˜๋Š” stable Discourse์˜)์ด ์žˆ์„๊นŒ์š”?

2๊ฐœ์˜ ์ข‹์•„์š”

๋‹น์‚ฌ์˜ ์ง€์› ์ •์ฑ…์€ discourse_docker์˜ ๊ธฐ๋ณธ ์„ค์ •์ด ํ•ด๋‹น ๋ฒ„์ „์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ตœ์‹  tests-passed ๋ฒ„์ „์˜ discourse์™€์˜ ํ˜ธํ™˜์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค๋งŒ, Pavilion ๊ณ„์—ด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž ์ค‘ discourse์˜ stable ๋ธŒ๋žœ์น˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋˜๋Š”์ง€ ํŒŒ์•…ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ, ๊ฐ€๊นŒ์šด ์‹œ์ผ ๋‚ด์— ์ด๋ฒคํŠธ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋น„์ถ”์ฒœ(deprecate)ํ•˜๊ณ , ๋Œ€์‹  discourse ํŒ€์˜ ์ด๋ฒคํŠธ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

3๊ฐœ์˜ ์ข‹์•„์š”

๊ฐœ๋ฐœ์ž๋“ค์ด Discourse์˜ ๋ฏธ๋ž˜๋ฅผ ์œ„ํ•ด ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์€ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฑด ๋‹น์—ฐํ•œ ์ผ์ด์ง€์š”. ํ•˜์ง€๋งŒ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์•ˆ์ •์ ์ธ ๋ธŒ๋žœ์น˜๊ฐ€ ์—†๋‹ค๋ฉด, ์‚ฌ์šฉ์ž๊ฐ€ ์•ˆ์ •์ ์ธ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๋ ค๊ณ  ํ•  ๋•Œ, ์ž์‹ ๋“ค์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฒ ํƒ€ ๋ฒ„์ „ ๋•Œ๋ฌธ์— ์„ค์ •์ด ๊นจ์ง€๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

ํ˜ธํ™˜์„ฑ์„ ๊นจ๋œจ๋ฆฐ ์ปค๋ฐ‹์— ๋Œ€ํ•ด ํŒ์ด ์žˆ์„๊นŒ์š”? ํ•ด๋‹น ์ปค๋ฐ‹์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์—…ํ•ด ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ, ์–ด๋–ค ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ์ผ์œผ์ผฐ๋Š”์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ถ”๊ฐ€๋กœ: ์ด ๋ฌธ์ œ๋กœ ์–ด๋ ค์›€์„ ๊ฒช๊ณ  ์ž„์‹œ ํ•ด๊ฒฐ์ฑ…์ด ํ•„์š”ํ•œ ๋ถ„๋“ค์„ ์œ„ํ•ด, ์ด ์ปค๋ฐ‹์ด ์›์ธ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

3๊ฐœ์˜ ์ข‹์•„์š”

Webcal API ํ‚ค ๊ด€๋ จ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์œผ๋‚˜, ํ˜„์žฌ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฆฌํฌํŠธํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @md-misko

4๊ฐœ์˜ ์ข‹์•„์š”

๋‹ค์‹œ ํ•œ๋ฒˆ ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ตœ์‹  discourse ๋ฆด๋ฆฌ์Šค 2.6.0.beta5 ( 2bb7676ba4 )์™€ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.
์ด๋ฒˆ์—๋Š” ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•˜๋ฉด ๋‹จ์ˆœํžˆ ๋นˆ ํŽ˜์ด์ง€๋งŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ง€๋‚œ๋ฒˆ๊ณผ ๋‹ฌ๋ฆฌ admin/upgrade๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์˜ค๋ฅ˜๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์žฌ๋นŒ๋“œํ•œ ํ›„ Discourse๋Š” ๋‹ค์‹œ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

4๊ฐœ์˜ ์ข‹์•„์š”

์•ˆ๋…•ํ•˜์„ธ์š”, ์ด Events ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ด ํŽ˜์ด์ง€์ฒ˜๋Ÿผ ๊ฒŒ์‹œ๊ธ€ ์ƒ๋‹จ์— โ€œ์บ˜๋ฆฐ๋”์— ์ถ”๊ฐ€โ€ ๋งํฌ๋ฅผ ์ƒ์„ฑํ•˜๋‚˜์š”?

https://community.namati.org/t/asia-pacific-justice-for-all-webinar-series/78084

๋˜ํ•œ, 2021๋…„ ํ˜„์žฌ ์ด Pavilion Events ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ๊ณต์‹ Calendar ํ”Œ๋Ÿฌ๊ทธ์ธ ์ค‘ ์–ด๋–ค ๊ฒƒ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ๋ถ„์˜ ์˜๊ฒฌ์€ ์–ด๋–ค๊ฐ€์š”?

์ฃผ์š” ๊ด€์‹ฌ์‚ฌ๋Š” ์บ˜๋ฆฐ๋”์—์„œ ์ฃผ์ œ๋ณ„ ๋ทฐ๋ฅผ ์‰ฝ๊ฒŒ ์ง‘๊ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š” ๊ฒƒ์ด๋ฉฐ, ๋˜ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐœ๋ณ„ ์ด๋ฒคํŠธ๋ฅผ ์ž์‹ ์˜ Google / .ics ์บ˜๋ฆฐ๋”์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ๋„ ๊ฐ–์ถ”๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

1๊ฐœ์˜ ์ข‹์•„์š”

์•ˆ๋…•ํ•˜์„ธ์š”,

OP(์›๋ฌธ)์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด

Discourse ํŒ€์ด ๋งŒ๋“  ์ƒˆ๋กœ์šด Discourse Calendar ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ด๋ฒคํŠธ ๊ธฐ๋Šฅ์ด ์‚ฌ์šฉ์ž์—๊ฒŒ ์ ํ•ฉํ•œ์ง€ ์ž ์‹œ ๊ณ ๋ คํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ํ•„์š”์— ๋ถ€ํ•ฉํ•œ๋‹ค๋ฉด ํ•ด๋‹น ํ”Œ๋Ÿฌ๊ทธ์ธ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์ด๋ฏธ Discourse Calendar๋ฅผ ๋จผ์ € ๊ณ ๋ คํ•ด ๋ณธ ๊ฒฝ์šฐ์—๋งŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด Discourse Calendar ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜์‹œ๊ธฐ๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ•ด๋‹น ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ์ถฉ์กฑ๋˜์ง€ ์•Š๋Š” ํŠน์ • ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•ด์„œ๋งŒ ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋‹คํ–‰ํžˆ๋„ Calendar ํ”Œ๋Ÿฌ๊ทธ์ธ์—๋Š” ์–ธ๊ธ‰ํ•˜์‹  ๋‘ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์ด ๋ชจ๋‘ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋„ค, ๋งž์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ aforementioned ๋Œ€๋กœ, Discourse Calendar์— ์ ํ•ฉํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฏ€๋กœ, ํ•ด๋‹น ํ”Œ๋Ÿฌ๊ทธ์ธ ์‚ฌ์šฉ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๋ถ€์ ์œผ๋กœ๋„ ์šฐ๋ฆฌ๋Š” ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ ๋Œ€์‹  Discourse Calendar ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉค๋ฒ„๋“ค์˜ ์ด๋ฒคํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์œ„ํ•œ ํŠน์ • ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•ด์„œ๋Š” ์ง€์›์„ ์ œ๊ณตํ•˜๋ฉฐ, ํ˜น์‹œ ํŠน์ • ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ์œผ์‹œ๋ฉด ๋ง์”€ํ•ด ์ฃผ์‹œ๋ฉด ์ข‹์ง€๋งŒ, ๊ทธ ์™ธ์—๋Š” ์—†์Šต๋‹ˆ๋‹ค.

3๊ฐœ์˜ ์ข‹์•„์š”

Angus๋‹˜, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์กฐ์–ธ์„ ๋ชจ๋‘ ์ฝ์—ˆ๊ณ , ํ•ด๋‹น Legal Empowerment Network ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐ ์ง์ ‘ ๊ด€์—ฌํ•˜์‹  ๊ฒƒ ๊ฐ™์•„์„œ ํŠน๋ณ„ํžˆ ์—ฌ์ญค๋ณธ ๊ฑฐ์˜ˆ์š”. ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์ž˜ ์šด์˜๋˜๊ณ  ์žˆ์–ด์„œ ์ข‹์•˜๊ฑฐ๋“ ์š”. ํ•˜์ง€๋งŒ ๊ณต์‹ ์บ˜๋ฆฐ๋” ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ถ”์ฒœํ•ด ์ฃผ์‹ ๋‹ค๋‹ˆ ๊ธฐ์ฉ๋‹ˆ๋‹ค. ๊ทธ์ชฝ์„ ํ•œ๋ฒˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

3๊ฐœ์˜ ์ข‹์•„์š”

๊ณต์‹ Discourse ์บ˜๋ฆฐ๋” ํ”Œ๋Ÿฌ๊ทธ์ธ์—๋Š” ์ฃผ์ œ ๋ชฉ๋ก์— ์žˆ๋Š” โ€œAgendaโ€ ํ•„ํ„ฐ์™€ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์ด ์—†๋‹ค๋Š” ๋‚ด ์ดํ•ด๊ฐ€ ๋งž๋‚˜์š”? ์ฃผ์ œ ๋‚ด ์ด๋ฒคํŠธ ๋‚ ์งœ ๊ธฐ์ค€์œผ๋กœ ์ฃผ์ œ ๋ชฉ๋ก์„ ์ •๋ ฌํ•˜๋Š” ๊ธฐ๋Šฅ์€ ์ œ๊ฐ€ ๊ฐ€์žฅ ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๋Š” ์ฃผ์š” ์‚ฌ์šฉ ์‚ฌ๋ก€ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ ๊ด€๋ฆฌ๋ณด๋‹ค๋Š” ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ(์ฃผ์ œ๋ฅผ ์ž‘์—…์œผ๋กœ ์ทจ๊ธ‰ํ•˜๊ณ  ๊ทธ์— ๋”ฐ๋ผ ์ผ์ •ํ‘œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ์‹)์— ๋” ์ค‘์ ์„ ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

4๊ฐœ์˜ ์ข‹์•„์š”

์ด๋Ÿฐ ๊ฒƒ๋„ ์ถ”๊ฐ€ํ•ด ๋ณด๋Š” ๊ฑธ ๊ณ ๋ คํ•˜๊ณ  ์žˆ์–ด์š”. ํ˜น์‹œ ํ•ด๊ฒฐ์ฑ…์„ ์ƒ๊ฐํ•ด ๋ณด์…จ๋‚˜์š”?

์ œ ์ƒ๊ฐ์€ ์ด๋ ‡์Šต๋‹ˆ๋‹ค: ๊ฐ ์ด๋ฒคํŠธ๋Š” ํ† ํ”ฝ์„ ๊ณ ์ •ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ๆ„ไน‰ไธŠ็š„ '๋‹ต๊ธ€โ€™๋กœ ์ทจ๊ธ‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. โ€˜์ด๋ฒคํŠธ ์ถ”๊ฐ€โ€™ ๋ฒ„ํŠผ์€ ํ•ด๋‹น ํ† ํ”ฝ์˜ ๋ชจ๋“  ์ด๋ฒคํŠธ๋ฅผ ๋‚˜์—ดํ•˜๋Š” ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

2๊ฐœ์˜ ์ข‹์•„์š”

ํ™•์ธํ•ด์„œ ๋‹ค์‹œ ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

1๊ฐœ์˜ ์ข‹์•„์š”

์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. discourse-calendar ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๊ณต์‹ ์ด๋ฒคํŠธ(Official Events) ๊ธฐ๋Šฅ์„ ๋Œ€์‹  ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ด ๊ธฐ๋Šฅ์„ ๋น„ํ™œ์„ฑํ™”(deprecated)ํ–ˆ์Šต๋‹ˆ๋‹ค.

2๊ฐœ์˜ ์ข‹์•„์š”

๊ณต์‹ ํ”Œ๋Ÿฌ๊ทธ์ธ์—๋Š” ์•„์ง ์–ด์  ๋‹ค ์Šคํƒ€์ผ์˜ ์ฃผ์ œ ๋ชฉ๋ก์ด ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1๊ฐœ์˜ ์ข‹์•„์š”

Pavilion ์— ์žˆ๋˜ ๋‚ด์šฉ์ด ์ด์ „๋œ ์ƒˆ ๋งํฌ๊ฐ€ ์žˆ๋Š”์ง€ ์•„์‹œ๋Š” ๋ถ„ ๊ณ„์‹ ๊ฐ€์š”?

์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ œํ•œ๋œ ์นดํ…Œ๊ณ ๋ฆฌ์—์„œ ์‹คํ–‰๋  ๋•Œ ๋‹ค์Œ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค:

โ€ฆ ํ•˜์ง€๋งŒ ๋ฌธ์„œ ๋งํฌ๊ฐ€ ๊นจ์ ธ ์žˆ์–ด 404 ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ์‚ฌ์ดํŠธ์™€ ์ด ์‚ฌ์ดํŠธ์—์„œ๋„ ์ฐพ์•„๋ณด์•˜์ง€๋งŒ, ์ด ์‚ฌ์šฉ์ž ์•ˆ๋‚ด๊ฐ€ ๋‹ค๋ฅธ ๊ณณ์— ์žˆ๋Š”์ง€ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค.

2๊ฐœ์˜ ์ข‹์•„์š”

์–ด๋–ค ์ด์œ ๋กœ๋“  ํ•ด๋‹น ์ฃผ์ œ๋ฅผ ํ์‡„๋œ ์นดํ…Œ๊ณ ๋ฆฌ๋กœ ์˜ฎ๊ธด ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ๊ณต๊ฐœ ์นดํ…Œ๊ณ ๋ฆฌ๋กœ ๋˜๋Œ๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋…ผ์˜ํ•œ ํ›„ ๊ณง ์•Œ๋ ค๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

p.s.
ํŽ˜์ด์ง€๊ฐ€ ์ด์ œ ๋ณต๊ตฌ๋˜์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

3๊ฐœ์˜ ์ข‹์•„์š”