자금 및 지원을 포함한 자발적인 기부(접수는 교육훈련부의 지시에 따라 이루어져야 함); 개인 보험(자발적인 기부이며, 학부모는 보험 유형을 선택할 권리가 있음); 학교에서 수집하지 않음; 학생은 학교 내 보험 사업체에서 개인 보험을 구매할 필요가 없음.
호치민 공산주의 청년 연합 기금, 호치민 청년 선구자 기금 등 학교에서 대규모 조직 모금이 허용되었습니다.
학부모 대표위원회 기금과 관련하여, 광응아이성 교육훈련부는 학급 학부모 대표위원회의 운영 비용은 학부모의 자발적인 지원과 학급 학부모 대표위원회를 위한 기타 합법적인 자금원이라고 명확히 밝혔습니다.
학교 학부모 대표 위원회의 운영 예산은 학년 초에 열리는 학급 학부모 대표 위원회 위원장 전체 회의의 추천에 따라 학급 학부모 대표 위원회의 운영 예산에서 충당됩니다. 학교 학생 대표 위원회의 기타 합법적인 자금원도 여기에 포함됩니다.
학부모 대표 위원회가 기금을 모으고 지출할 때는 공개성과 민주성의 원칙을 보장해야 합니다. 지출 후 재정 결산은 학급 전체 학부모-교사 회의와 학교 전체 학부모 대표 위원회 회의에서 공개적으로 보고해야 합니다. 학부모에게 제공되는 평균 재정 지원 수준에 대한 규정은 없습니다.
2024-2025학년도 합의된 수입 중 하나인 기숙사 식사비. 사진: CX
합의된 수입에는 학교가 일부 업무를 수행하고, 학생을 양육하고 교육하는 데 드는 수입이 포함됩니다. 여기에는 기숙사 서비스 수수료, 식수 비용, 좌석(1학년 학생용), 시험지, 연습지(일반 시험용) 등이 포함됩니다.
교육훈련부는 이 내용(합의된 수입)에 관해 다음과 같이 실행 절차를 밝혔다. 각 학년 초에 학교는 각 수입 항목과 각 사업 내용에 대한 수입 및 지출 추산을 개발하고, 동시에 당조직, 이사회, 학교협의회 내에서 수입 수준, 지출 내용, 수입 대상 및 수혜자, 기부금 동원을 위한 조직 형태에 대해 합의한다.
학부모 대표 위원회와 회의를 조직한 후, 학교 전체 학부모 회의를 조직하고, 학부모(각 학급)의 의견을 수렴하고, 각 수집 항목과 수집 수준에 대해 합의하고 기록을 작성합니다.
학교는 학부모의 합의에 따라 수업료를 징수할 수 있으며, 징수하기 전에 규정에 따라 학교 협의회와 학부모에게 승인된 징수 수준에 따른 수업료 및 각 수업료의 징수 수준을 공고해야 합니다.
기숙사 서비스 수입과 관련하여, 학교는 학년 초부터 지난 학년의 기숙사 장비에 대한 재고를 조사한 후, 기숙사 조직 계획에 따라 사용 요구 사항과 구매 견적을 작성하고 학부모와 협의하여 적절한 기여 수준을 제안합니다.
꽝응아이성 교육훈련부. 사진: CX
교복, 배지, 명찰, 로고의 경우, 학교는 학부모에게 제품 모델, 사양 등을 알려드립니다. 따라서 학부모는 직접 구매하거나 학교에 중앙에서 구매를 요청할 수 있으며, 이윤을 남기지 않고 비용을 충당할 수 있는 금액만 징수하는 원칙을 따릅니다.
`); }else { if (window.confirm("로그아웃하시겠습니까?")) { var el = $("#top-link-account"); // //el.find("a.first").html(" ") // // .removeAttr("스타일"); el.find(".first").show(); el.find("a.second").html(""); el.find("a.second").removeAttr("데이터-아웃"); $('.comment-account').html(`
로그인등록하다
`); deleteCookie('my_dv'); $("#_btn_logout").click(); } } } function logout(){ if (window.confirm("로그아웃하시겠습니까?")) { var el = $("#top-link-account"); // //el.find("a.first").html(" ") // // .removeAttr("스타일"); el.find(".first").show(); el.find("a.second").html(""); el.find("a.second").attr("데이터 출력", "0"); $('.comment-account').html(`
로그인등록하다
`); deleteCookie('my_dv'); $("#_btn_logout").click(); } } function login(){ $("#_btn_logout").click(); $("#cmt_alert").html("댓글을 게시하려면 로그인하거나 회원가입을 해주세요"); } function register(){ $("#_btn_logout").click(); $('[data-target="signup"]').click(); fnCaptcha(); } var aspCookie = null; (runinit = window.runinit || []).push(function() { if(lgGetCookie('my_dv')){ var user = JSON.parse(lgGetCookie('my_dv')); if(user.name){ authLogin(user.name, true); } } $('.btn-refresh').click(function() { fnCaptcha(); }); $('.iconew-eye').click(function() { $(this).toggleClass('closed'); var x = $(this).siblings('input')[0]; if (x.type === "password") { x.type = "text"; } else { x.type = "password"; } }); stripHtml(html) 함수 { var temporalDivElement = document.createElement("div"); temporalDivElement.innerHTML = html; return temporalDivElement.textContent || temporalDivElement.innerText || ""; } // --------------------- 사용자 계정 // 1. 로그인/로그아웃 버튼 숨기기 -> API를 사용할 수 없는 경우 로그인/로그아웃이 표시되지 않음 + OAuth_v2 초기화 //$("#top-link-account").hide(); if (typeof gapi != "undefined") { //window._cnnd.oauth.init(); console.log("login not available"); } // 2. 과도한 로그인/등록 양식 제거 -> 사용 가능한 양식이 1개만 있음 // 필요 없음 // 3. 콜백 함수 var fnPopupAction = function(id, alert, loginData) { id = id.toLowerCase(); if (id == "close") { $("#cmt-account-header .close").click(); return; } if (id == "info" && !window._isShowingInfo) { $("#cmt-account-header .close").click(); return; } window._isShowingInfo = false; if (loginData) { $("#cmt-account-header [데이터-대상]").hide(); $("#cmt-account-header [데이터-대상].로그인").show().first().click(); $("#cmt-account-header [데이터-정보-이름]").html(loginData.name || "당신"); $("#cmt-account-header [데이터-정보-이메일]").html(loginData.email || "<알 수 없음>"); } else { $("#cmt-account-header [데이터-대상]").hide(); $("#cmt-account-header [데이터-대상].로그인 안 함").show().first().click(); $("#cmt-account-social").show(); $("#cmt-account-header > .wrapper").css("animation", "none"); }, 200); $("#cmt-account-header").show(); $("#cmt-account-header input[type="password"]").val(""); $("#cmt-account-header [data-target="" + id + ""]").click(); $("body").css("overflow", "hidden"); $("#nav").removeClass("active"); $("#cmt_alert").html(alert || "댓글을 게시하려면 로그인하거나 등록하세요"); }; var accountMessageProcess = function(data) { if (data.isLogged) { fnPopupAction("info", "댓글을 게시하려면 로그인하거나 등록하세요.", { name: data.name, email: data.email }); } else { fnPopupAction(data.act, data.alert || "로그인하거나 등록하세요."); if (data.act == "close" && data.raw.Data && data.raw.Data.Approved) { //window.alert("로그인 성공"); fnPopupAction("info", "로그인 성공", { name: data.raw.Data.Name, email: $("#_login_email").val() || $("#_sign_email").val() }); } } }; // 5. 액션 함수 -> 폼 요소에 이벤트 바인딩 var fnPopupBindAction = function() { // 탭 $("#cmt-account-header [data-target]").on('click', function() { $("#cmt-account-header [data-target], #cmt-account-header [data-tab]").removeClass( "active"); $(this).addClass("active"); var tab = $("#cmt-account-header [data-tab='" + $(this).attr("data-target") + "']"); tab.addClass("active") .find("input[type="text"], input[type="email"]").first().focus(); tab.find("input").keyup(function(event) { if (event.keyCode === 13) { tab.find(".btn.clickable").click(); } }); fnCaptcha(); $("#cmt_alert").html("댓글을 게시하려면 로그인하거나 회원가입을 해주세요"); }); $("#cmt-account-header .close").on('click', function() { $("#cmt-account-header").hide(); $("#cmt-account-header > .wrap").removeAttr("style"); $("body").css("overflow", "unset"); fnCaptcha(); $("#cmt_alert").html("댓글을 게시하려면 로그인하거나 회원가입을 해주세요"); }); // Captcha 다시 로드 // $("#_reload_captcha").on('click', function () { // fnCaptcha(); // }); // 버튼 로그인 $("#comment-frame").on('click','#btn_login', function () { $("#top-link-account .first").click(); }); $("#comment-frame").on('click','#btn_signup', function () { $("#top-link-account .first").click(); $('[data-target="signup"]').click(); }); $("#_btn_login").on('click', function() { $("#cmt_alert").html("댓글을 작성하려면 로그인하거나 회원가입을 해주세요"); var email, password; email = $("#_login_email").val(); password = $("#_login_password").val(); if (!/^[a-z0-9-_\.]+[@][0-9a-z-]+(\.[0-9a-z-]+)+$/ig.test(email) || password .length \/?]/g; if (!/^[a-z0-9-_\.]+[@][0-9a-z-]+(\.[0-9a-z-]+)+$/ig.test(email)) { $("#cmt_alert").html("잘못된 이메일입니다"); return; } //if (name.length 20) { // $("#cmt_alert").html("성함은 20자를 초과할 수 없습니다(별명을 사용할 수 있습니다)!"); // return; //} //if (format.test(name)) { // $("#cmt_alert").html("이름에 특수 문자가 포함될 수 없습니다!"); // return; //} if (password.length ") // .removeAttr("style"); el.find("a.first").show(); el.find("a.second").html(""); $("#cmt-account-social").show(); }); // 헤더 로그인/계정_정보 // 헤더 로그인/계정_정보 $("#top-link-account .first").on('click', function() { if ($("#top-link-account .second").attr("data-out")) { $("#top-link-account .second").toggleClass("show"); } else { fnPopupAction("로그인"); } }); // 버튼 등록/로그아웃 $("#top-link-account .second").on('click', function() { if ($("#top-link-account .second").attr("data-out")) { //$("#_btn_logout").click(); authLogin('my_dv',false); } else { fnPopupAction('가입'); } //var el = $("#top-link-account"); //el.find("a.first").html(" ") // .removeAttr("style"); //el.find("a.second").html(""); }); }; fnPopupBindAction(); //페이스북 로그인 var otherLogin = { init: function() { var me = this; //gapi.load('auth2', function () { // gapi.auth2.init({ // client_id: '678720187862-08lendtdt5h3nr4j2he534p15b13aieg.apps.googleusercontent.com', // scope: 'email profile', // fetch_basic_profile: true // }); //}); $("#cmt-account-social button[data-type]").on('click', function() { me[$(this).attr("data-type")](function(response) { $("#cmt-account-header .tabs .close, #cmt-account .tabs .close") .click(); }); }); try { fbClient.appId = '1304555827613749'; //'211029740744825'; fbClient.version = "v14.0"; fbClient.init(); setTimeout(FB.AppEvents.logPageView, 5000); } catch (e) { // 무시 } }, loginFacebook: function(cb) { var me = this; function reloginFacebook(콜백) { FB.api('/me', { 필드: '아이디, 이름, 이메일' }, function(profile) { //console.debug(profile); if (typeof callback === "function") callback(profile); }); }; FB.login(function(response) { if (response.authResponse) { reloginFacebook(function(info) { console.log(info); info.social = "facebook"; info.accessToken = response.authResponse.accessToken; var user = { email: info.email, name: info.name, } let now = new Date(); lgSetCookie('my_dv',JSON.stringify(user), new Date(now.getTime() + (30 * 12 * 60000))); authLogin(user.name, true); }); } else { $("#cmt_alert").html( "Facebook 계정에 대한 액세스 권한을 거부했습니다."); } }, { scope: 'public_profile,email' }); }, loginGoogle: function(callback) { var me = this; function callSocialApi(data, cb) { data.social = "google"; var user = { email: data.email, name: data.name, } let now = new Date(); lgSetCookie('my_dv',JSON.stringify(user), new Date(now.getTime() + (30 * 12 * 60000))); authLogin(user.name, true); } // Google 로그인을 위한 API 호출 if (gapi.auth2.getAuthInstance().isSignedIn.get()) { //console.debug('[VCC] GAPI 프로세스'); var profile = gapi.auth2.getAuthInstance().currentUser.get().getBasicProfile(); //var id_token = gapi.auth2.getAuthInstance().currentUser.get().getAuthResponse().id_token; var access_token = gapi.auth2.getAuthInstance().currentUser.get().getAuthResponse() .access_token; var params = { id: profile.getId(), 이름: profile.getName(), 이메일: profile.getEmail(), 액세스 토큰: access_token } //console.log('매개변수: ', 매개변수); callSocialApi(매개변수, 콜백); } else { //console.debug('[VCC] GAPI 로그인'); gapi.auth2.getAuthInstance().signIn().then( function(success) { var profile = gapi.auth2.getAuthInstance().currentUser.get() .getBasicProfile(); //var id_token = gapi.auth2.getAuthInstance().currentUser.get().getAuthResponse().id_token; var access_token = gapi.auth2.getAuthInstance().currentUser.get() .getAuthResponse().access_token; var 매개변수 = { id: profile.getId(), 이름: profile.getName(), 이메일: profile.getEmail(), accessToken: access_token } //console.log('params: ', params); callSocialApi(params, callback); }, function(error) { $("#cmt_alert").html( "Dan Viet Newspaper가 귀하의 Google 계정에 액세스하는 것을 거부했습니다." ); } ); } } } otherLogin.init(); });