PageSourceSearch

https://oma.org.ar/news/news_maker.js

js oma.org.ar collected 2026-10-02 11:43:47 UTC 6,548 bytes, 209 lines download raw bytes

1var next_news;
2var news_loaded = false;
3
4const white_letter_headers = [
5    "oma",
6    "internacional",
7    "nandu",
8    "mateclubes",
9    "literatura",
10    "otros_nac",
11    "otros_inter",
12    "otros"
13];
14const news_category_aliases = {
15    OMA: "oma",
16    oma: "oma",
17    nandu: "nandu",
18    mateclubes: "mateclubes",
19    internacional: "internacional",
20    selectivo: "selectivo",
21    literatura: "literatura",
22    otros: "otros",
23    otros_nac: "otros_nac",
24    otros_inter: "otros_inter"
25};
26
27function normalize_news_category(category){
28    if (!category){
29        return "otros";
30    }
31    if (news_category_aliases[category]){
32        return news_category_aliases[category];
33    }
34    const normalized = String(category).toLowerCase();
35    return news_category_aliases[normalized] || normalized;
36}
37
38function normalize_news_item(news_info){
39    var normalized = Object.assign({}, news_info);
40    normalized.categoria = normalize_news_category(news_info.categoria);
41    return normalized;
42}
43
44function save_and_show_news(filters){
45    return function(news_info) {
46        next_news = news_info.map(normalize_news_item);
47        if (!filters.show_hidden){
48            next_news = next_news.filter(item => item.show === true);
49        }
50        if (filters.fill_all){
51            agregar_news(next_news.length);
52        } else {
53            agregar_news(5);
54        }
55        news_loaded = true;
56    };
57}
58
59function get_news(year, callback){
60    var url = "/contents/news/" + year + ".json";
61    fetch(url, {"cache": "no-store"})
62        .then(function(response){
63            if (!response.ok){
64                return [];
65            }
66            return response.json();
67        })
68        .then(callback);
69}
70
71function fill_news(year, filters){
72    get_news(year, save_and_show_news(filters || {}));
73}
74
75function get_header_classes(tag){
76    var normalizedTag = normalize_news_category(tag);
77    if (white_letter_headers.indexOf(normalizedTag) !== -1){
78        return "card-header text-white card-header-" + normalizedTag;
79    }
80    return "card-header card-header-" + normalizedTag;
81}
82
83function create_news(news_info){
84    var normalizedNews = normalize_news_item(news_info);
85    var card_div = document.createElement("div");
86    card_div.className = "card news-card";
87    card_div.setAttribute("news_id", normalizedNews.id);
88    card_div.setAttribute("show_news", normalizedNews.show);
89
90    var card_header = document.createElement("div");
91    card_header.className = get_header_classes(normalizedNews.categoria);
92    card_header.innerHTML = normalizedNews.title;
93    card_div.appendChild(card_header);
94
95    var card_body = document.createElement("div");
96    card_body.className = "card-body";
97    card_body.innerHTML = normalizedNews.body;
98    card_div.appendChild(card_body);
99
100    if (normalizedNews.footer){
101        var card_footer = document.createElement("div");
102        card_footer.className = "card-footer text-end text-muted";
103        var small_footer = document.createElement("small");
104        small_footer.innerHTML = normalizedNews.footer;
105        card_footer.appendChild(small_footer);
106        card_div.appendChild(card_footer);
107    }
108    return card_div;
109}
110
111function agregar_news(n){
112    var listed_news = document.getElementById("listed-news");
113    for (var i = 0; i < n; i++) {
114        if (next_news.length) {
115            var news_info = next_news.shift();
116            listed_news.appendChild(create_news(news_info));
117        }
118    }
119}
120
121function ensure_news_category_option(category){
122    var normalizedCategory = normalize_news_category(category);
123    var categorySelect = document.getElementById("categoria");
124    for (var i = 0; i < categorySelect.options.length; i++) {
125        if (categorySelect.options[i].value === normalizedCategory) {
126            return normalizedCategory;
127        }
128    }
129    var option = document.createElement("option");
130    option.value = normalizedCategory;
131    option.text = normalizedCategory;
132    categorySelect.appendChild(option);
133    return normalizedCategory;
134}
135
136function set_body_editor_content(body){
137    var normalizedBody = body || "";
138    document.getElementById("body").value = normalizedBody;
139
140    var retries = 0;
141    function setEditorContent(){
142        var editor = tinymce.get("body");
143        if (editor){
144            editor.setContent(normalizedBody);
145            return;
146        }
147        if (retries < 20){
148            retries += 1;
149            window.setTimeout(setEditorContent, 100);
150        }
151    }
152
153    setEditorContent();
154}
155
156function build_news_option_label(news_info){
157    var label = "Id " + news_info.id + " - " + news_info.title;
158    if (news_info.show === false){
159        label += " (oculta)";
160    }
161    return label;
162}
163
164function populate_news_select(year, select, selectedNewsId){
165    select.innerHTML = "";
166    get_news(year, function(news_list){
167        var placeholder = document.createElement("option");
168        placeholder.value = "";
169        placeholder.text = news_list.length ? "Elegir noticia" : "No hay noticias para este año";
170        select.appendChild(placeholder);
171
172        news_list.forEach(function(news_info){
173            var normalizedNews = normalize_news_item(news_info);
174            var option = document.createElement("option");
175            option.value = normalizedNews.id;
176            option.text = build_news_option_label(normalizedNews);
177            select.appendChild(option);
178        });
179
180        if (selectedNewsId){
181            select.value = String(selectedNewsId);
182        }
183    });
184}
185
186function load_news(year, news_id, callback){
187    function fill_news_by_id(news_list){
188        var correct_news;
189        for (var i = 0; i < news_list.length; i++) {
190            if (news_list[i].id == news_id) {
191                correct_news = normalize_news_item(news_list[i]);
192            }
193        }
194        if (correct_news){
195            document.getElementById("news-id").value = correct_news.id;
196            document.getElementById("title").value = correct_news.title;
197            document.getElementById("categoria").value = ensure_news_category_option(correct_news.categoria);
198            document.getElementById("footer").value = correct_news.footer || "";
199            document.getElementById("news-show").checked = correct_news.show;
200            set_body_editor_content(correct_news.body);
201            if (callback){
202                callback(correct_news);
203            }
204        } else {
205            show_modal("Error", "No existe noticia con id " + news_id + " para el año " + year);
206        }
207    }
208    get_news(year, fill_news_by_id);
209}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.