자금 및 지원을 포함한 자발적 기여(접수는 교육훈련부의 지시에 따라 이루어져야 함); 개인 보험(자발적 기여금이며, 학부모는 보험 유형을 선택할 권리가 있음); 학교에서 수집하지 않음; 학생은 학교 내 보험 사업체에서 개인 보험을 구입할 필요가 없음.
호치민 공산주의 청년 연합 기금, 호치민 청년 선구자 기금 등 학교에서 대규모 조직 모금이 허용되었습니다.
학부모 대표 위원회 기금과 관련하여, 광응아이성 교육훈련부는 학급 학부모 대표 위원회의 운영 비용은 학부모의 자발적인 지원과 학급 학부모 대표 위원회를 위한 기타 합법적인 자금원이라고 명확히 밝혔습니다.
학교 학부모 대표 위원회의 운영 예산은 학년 초에 열리는 학급 학부모 대표 위원회 위원장 정기 회의의 추천에 따라 학급 학부모 대표 위원회의 운영 예산에서 충당됩니다. 학교 학생 대표 위원회의 기타 합법적인 자금원도 여기에 포함됩니다.
학부모 대표 위원회가 기금을 모으고 지출할 때는 투명성과 민주성의 원칙을 보장해야 합니다. 지출 후 재정 결산은 학부모 전체 회의와 학부모 대표 위원회의 학교 전체 회의에서 공개적으로 보고해야 합니다. 학부모 지원금의 평균 수준에 대한 규정은 없습니다.
2024-2025학년도 합의된 수입 중 하나인 기숙사 식사비. 사진: CX
합의된 수입에는 학교가 학생 양육 및 교육이라는 업무에서 학부모를 대신하여 수행하는 일부 업무에 대한 수입이 포함됩니다. 여기에는 기숙사 서비스 수수료, 식수 요금, 좌석(1학년 학생용), 시험지, 연습지(일반 시험용)가 포함됩니다.
교육훈련부는 이러한 내용(합의된 수입)에 대해 다음과 같이 구현 절차를 밝혔다. 각 학년 초에 학교는 각 수입 항목과 각 업무 내용에 대한 수입 및 지출 추산을 개발하고, 동시에 당 세포, 이사회, 학교 협의회에서 수입 수준, 지출 내용, 수입 및 수혜 대상, 기부금을 동원하기 위한 조직 형태에 대해 합의한다.
학부모 대표 위원회와 회의를 조직한 후, 학교 전체 학부모 회의를 조직하고, 학부모(각 학급)의 의견을 수렴하고, 각 수집 항목과 수집 수준에 대해 합의하고 기록을 작성합니다.
학교는 학부모의 합의에 따라 수업료를 징수할 수 있으며, 징수하기 전에 규정에 따라 학교 협의회와 학부모에게 승인된 징수 수준에 따른 수업료 및 각 수업료의 징수 수준을 공고해야 합니다.
기숙사 서비스 수입의 경우, 학교는 학년 초부터 지난 학년의 기숙사 장비 목록을 작성하고, 기숙사 조직 계획에 따라 사용 요구 사항과 구매 견적을 작성하며, 학부모와 협의하여 적절한 기여 수준을 설정합니다.
꽝응아이성 교육훈련부. 사진: CX
교복, 배지, 명찰, 로고의 경우, 학교는 학부모에게 제품 모델, 사양 등을 알려드립니다. 따라서 학부모는 직접 구매하거나 학교에 중앙에서 구매를 요청할 수 있으며, 이윤을 남기지 않고 비용을 충당할 수 있는 금액만 징수하는 원칙을 따릅니다.
`); }else { if (window.confirm("로그아웃하시겠습니까?")) { var el = $("#top-link-account"); // //el.find("a.first").html(" ") // // .removeAttr("스타일"); el.find(".첫 번째").show(); el.find("a.두 번째").html(""); el.find("a.두 번째").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(".첫 번째").show(); el.find("a.두 번째").html(""); el.find("a.두 번째").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-계정-헤더 .close").click(); return; } window._isShowingInfo = false; if (로그인 데이터) { $("#cmt-계정-헤더 [데이터-대상]").hide(); $("#cmt-계정-헤더 [데이터-대상].로그인").show().first().click(); $("#cmt-계정-헤더 [데이터-정보-이름]").html(로그인데이터.name || "당신"); $("#cmt-계정-헤더 [데이터-정보-이메일]").html(로그인데이터.이메일 || "<알 수 없음>"); } else { $("#cmt-계정-헤더 [데이터-대상]").hide(); $("#cmt-계정-헤더 [데이터-대상].로그인 안 함").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(); //Facebook 로그인 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) { // 무시 } }, Facebook 로그인: function(cb) { var me = this; Facebook 재로그인 함수(콜백) { FB.api('/me', { 필드: '아이디, 이름, 이메일' }, function(profile) { //console.debug(profile); 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 신문이 귀하의 Google 계정에 액세스하는 것을 허용하지 않았습니다." ); } ); } } } otherLogin.init(); });