diff --git a/public/index.html b/public/index.html index 0e46258..01dcf92 100644 --- a/public/index.html +++ b/public/index.html @@ -23,10 +23,10 @@ window.ar = ar; window.en = en; - const ratio = (lang == "en" || lang == "ar") ? (1 / 15000) : 1 - window.tr = (price) => Math.round(ratio * price * 100) / 100 + window.ratio = (lang == "en" || lang == "ar") ? (1 / 15000) : 1 + window.tr = (price) => Math.round(window.ratio * price * 100) / 100 function t(val) { - const lang_ = window[lang]; + const lang_ = window[window.lang]; if (!lang_) return val; if (!lang_[val]) console.error(val); return lang_[val] || "*" + val; diff --git a/src/App.js b/src/App.js index db96b54..270f262 100644 --- a/src/App.js +++ b/src/App.js @@ -7,10 +7,16 @@ import "bootstrap/dist/css/bootstrap.min.css"; import "react-toastify/dist/ReactToastify.css"; class App extends Component { + state = { lang: window.lang }; + componentDidMount() { + window.forceUpdate = () => { + this.setState({ lang: window.lang }); + }; + } render() { return ( - + {status && status.status === 0 ? ( - + ) : afterLogin ? ( <> ) : ( - + )} ); return (
{home} + + + - + - + - + - + - + - + - + - + - + - + {/* */} - + {mobile ? ( status ? ( - + ) : ( {mobile ? ( status ? ( - + ) : ( - + - + - + {proxy.status() ? ( @@ -182,11 +187,11 @@ class AppRouter extends Component { }} /> ) : ( - + )} - + {/* {mobile ? ( status ? ( @@ -202,13 +207,13 @@ class AppRouter extends Component { )} */} - + - + - + {proxy.status() ? ( @@ -218,16 +223,16 @@ class AppRouter extends Component { }} /> ) : ( - + )} - {status ? : null} + {status ? : null} {mobile ? ( status ? ( - + ) : ( ) ) : status ? ( - + ) : ( {mobile ? ( status ? ( - + ) : ( ) ) : status ? ( - + ) : ( {mobile ? ( status ? ( - + ) : ( ) ) : status ? ( - + ) : ( - + {/* {status ? ( ) : ( @@ -301,7 +306,7 @@ class AppRouter extends Component { {status ? ( - + ) : ( {mobile ? ( status ? ( - + ) : ( ) ) : status ? ( - + ) : ( {mobile ? ( status ? ( - + ) : ( ) ) : status ? ( - + ) : ( {window.innerWidth > 1000 ?
: null} diff --git a/src/Redux/actions/public.js b/src/Redux/actions/public.js index 9878325..67b5cbf 100644 --- a/src/Redux/actions/public.js +++ b/src/Redux/actions/public.js @@ -24,6 +24,10 @@ const publicApi = { await proxy.get("public/province", data, { history, dispatch }), getCity: (data, history) => async (dispatch) => await proxy.get("public/city", data, { history, dispatch }), + changeLanguage: + (data = {}) => + async (dispatch) => + await dispatch({ type: "public/changeLanguage", data }), }; export default publicApi; diff --git a/src/Redux/proxy.js b/src/Redux/proxy.js index aff76d1..0e65b34 100644 --- a/src/Redux/proxy.js +++ b/src/Redux/proxy.js @@ -5,13 +5,23 @@ let { baseUrl } = ApiConfig; window.baseURL = baseUrl; baseUrl = baseUrl + "/"; -const Axios = axios.create({ +let Axios = axios.create({ withCredentials: true, validateStatus: null, baseURL: baseUrl, - headers: { lang: window.lang }, }); +window.reLang = (lang) => { + window.lang = lang; + window.ratio = lang == "en" || lang == "ar" ? 1 / 15000 : 1; + Axios = axios.create({ + withCredentials: true, + validateStatus: null, + baseURL: baseUrl, + headers: { lang: window.lang }, + }); + window.forceUpdate(); +}; class Proxy { get = async (url, params, opt = {}, data) => await this.check( @@ -71,7 +81,7 @@ class Proxy { refresh = async () => { let refresh = localStorage.getItem("refresh"); - if (!refresh) window.location.href = "/"; + if (!refresh) window.location.reload(); let login = await this.login( "user/login", {}, diff --git a/src/Redux/reducers/book.js b/src/Redux/reducers/book.js index 6e48838..508e311 100644 --- a/src/Redux/reducers/book.js +++ b/src/Redux/reducers/book.js @@ -16,22 +16,22 @@ const initialState = { ], }; -const grades = [ - window.t("پیش دبستان"), - window.t("اول"), - window.t("دوم"), - window.t("سوم"), - window.t("چهارم"), - window.t("پنجم"), - window.t("ششم"), - window.t("هفتم"), - window.t("هشتم"), - window.t("نهم"), - window.t("دهم"), - window.t("یازدهم"), - window.t("دوازدهم"), -]; export default function book(state = initialState, action) { + const grades = [ + window.t("پیش دبستان"), + window.t("اول"), + window.t("دوم"), + window.t("سوم"), + window.t("چهارم"), + window.t("پنجم"), + window.t("ششم"), + window.t("هفتم"), + window.t("هشتم"), + window.t("نهم"), + window.t("دهم"), + window.t("یازدهم"), + window.t("دوازدهم"), + ]; let { type, data } = action; switch (type) { case "book/list": @@ -125,6 +125,21 @@ export default function book(state = initialState, action) { case "book/error": toast.error(data.message); return { ...state, loading: false, error: data.message }; + case "public/changeLanguage": + return { + ...state, + sortFilters: [ + window.t("مرتب سازی"), + window.t("محبوب ترین"), + window.t("جدیدترین"), + ], + info: null, + searchResult: [], + filterResult: [], + subjects: [], + levels: [], + list: [], + }; default: return state; } diff --git a/src/Redux/reducers/public.js b/src/Redux/reducers/public.js index 3b317e6..0e82ff4 100644 --- a/src/Redux/reducers/public.js +++ b/src/Redux/reducers/public.js @@ -18,22 +18,22 @@ const initialState = { }, }; -const grades = [ - window.t("پیش دبستان"), - window.t("اول"), - window.t("دوم"), - window.t("سوم"), - window.t("چهارم"), - window.t("پنجم"), - window.t("ششم"), - window.t("هفتم"), - window.t("هشتم"), - window.t("نهم"), - window.t("دهم"), - window.t("یازدهم"), - window.t("دوازدهم"), -]; export default function publicApi(state = initialState, action) { + const grades = [ + window.t("پیش دبستان"), + window.t("اول"), + window.t("دوم"), + window.t("سوم"), + window.t("چهارم"), + window.t("پنجم"), + window.t("ششم"), + window.t("هفتم"), + window.t("هشتم"), + window.t("نهم"), + window.t("دهم"), + window.t("یازدهم"), + window.t("دوازدهم"), + ]; let { type, data } = action; switch (type) { case "public/direction": @@ -185,7 +185,8 @@ export default function publicApi(state = initialState, action) { case "public/error": toast.error(data.message); return { ...state, loading: false, error: data.message }; - + case "public/changeLanguage": + return { ...state, lang: window.lang, contactData: null, faqList: [] }; default: return state; } diff --git a/src/Redux/reducers/userFactor.js b/src/Redux/reducers/userFactor.js index 0c73b37..19ee96a 100644 --- a/src/Redux/reducers/userFactor.js +++ b/src/Redux/reducers/userFactor.js @@ -33,7 +33,13 @@ export default function userFactor(state = initialState, action) { return { ...state, loading: true }; case "userFactor/error": toast.error(data.message); + return { ...state, loading: false, error: data.message }; + case "public/changeLanguage": + return { + ...state, + info: null, + }; default: return state; } diff --git a/src/views/About/index.js b/src/views/About/index.js index 0554dc2..b9f0920 100644 --- a/src/views/About/index.js +++ b/src/views/About/index.js @@ -26,61 +26,61 @@ const fontSize = { }; export default class About extends Component { - state = { - first: { - title: window.t("درباره ما"), - text: window.t( - "ما در دانوین با هدف ایجاد زیرساخت تعاملی و آموزشی با تولید محتوایی جذاب بصورت کتاب با کمک پلتفرم دانوین، قصد تغییراتی بنیادین در نظام آموزش و پرورش کشور داریم. دانوین پلتفرمی شامل کتاب، محتوای الکترونیکی، رویه های آموزشی، پشتیبانی علمی و نرم افزار ارائه خدمات با رویکرد مخاطب محور است." - ), - }, - fury: { - title: window.t("ماموریت ما در دانوین چیست ؟"), - text: window.t( - "ارتقای سطح کیفیت و جذابیت آموزش در مدارس بصورت سازگار با نظام رسمی و کنونی آ.پ در راستای نیل به اهداف سند تحول" - ), - }, - - keywords: { - title: window.t("کیفیت آموزش را بالا میبریم"), - list: [ - window.t( - "شایستگی در ایجاد فهم علمی در موضوع هدف و در موضوعات وابسته به آن" - ), - window.t( - "شایستگی در ایجاد زمینه ی معرفتی- ارزشی موثر برای محتواهای آموزشی" - ), - ], - }, - keywords2: { - title: window.t("جذابیت کلید بهبود یادگیری"), - list: [ - window.t( - "بکارگیری عوامل متنوع سازگار با ارزشها برای علاقمندی دانش آموز و معلم به استفاده از محتوای دانوین" - ), - window.t( - "سازگار با نظام آ.پ : بطوریکه بتواند در مدارس فعلی مورد استفاده قرار گرفته و با نظام رسمی فعلی در تضاد نباشد" - ), - window.t( - "در راستای نیل به سند تحول : تلاش برای نزدیکی گام به گام به آرمانها و اهداف سند تحول" + render() { + const state = { + first: { + title: window.t("درباره ما"), + text: window.t( + "ما در دانوین با هدف ایجاد زیرساخت تعاملی و آموزشی با تولید محتوایی جذاب بصورت کتاب با کمک پلتفرم دانوین، قصد تغییراتی بنیادین در نظام آموزش و پرورش کشور داریم. دانوین پلتفرمی شامل کتاب، محتوای الکترونیکی، رویه های آموزشی، پشتیبانی علمی و نرم افزار ارائه خدمات با رویکرد مخاطب محور است." ), - ], - }, - advantages: { - title: window.t("مزیت رقابتی دانوین"), - list: [ - window.t( - "بکارگیری بروز ترین تکنولوژی های تولید و مدیریت محتوای آموزشی-تربیتی (مانند واقعیت افزوده)" + }, + fury: { + title: window.t("ماموریت ما در دانوین چیست ؟"), + text: window.t( + "ارتقای سطح کیفیت و جذابیت آموزش در مدارس بصورت سازگار با نظام رسمی و کنونی آ.پ در راستای نیل به اهداف سند تحول" ), - window.t("دارای رویکرد آموزش سرگرم کننده"), - window.t("بستر تعاملی و اشتراک گذاری فیلم و محتوای آموزشی"), - window.t("رویکرد معرفتی-ارزشی"), - window.t("ویدئو های منحصر بفرد"), - window.t("متن گفتگو محور ، روایی ، قابل فهم ،جذاب و سرگرم کننده"), - ], - }, - }; - render() { - const { fury, advantages, keywords, keywords2, first } = this.state; + }, + + keywords: { + title: window.t("کیفیت آموزش را بالا میبریم"), + list: [ + window.t( + "شایستگی در ایجاد فهم علمی در موضوع هدف و در موضوعات وابسته به آن" + ), + window.t( + "شایستگی در ایجاد زمینه ی معرفتی- ارزشی موثر برای محتواهای آموزشی" + ), + ], + }, + keywords2: { + title: window.t("جذابیت کلید بهبود یادگیری"), + list: [ + window.t( + "بکارگیری عوامل متنوع سازگار با ارزشها برای علاقمندی دانش آموز و معلم به استفاده از محتوای دانوین" + ), + window.t( + "سازگار با نظام آ.پ : بطوریکه بتواند در مدارس فعلی مورد استفاده قرار گرفته و با نظام رسمی فعلی در تضاد نباشد" + ), + window.t( + "در راستای نیل به سند تحول : تلاش برای نزدیکی گام به گام به آرمانها و اهداف سند تحول" + ), + ], + }, + advantages: { + title: window.t("مزیت رقابتی دانوین"), + list: [ + window.t( + "بکارگیری بروز ترین تکنولوژی های تولید و مدیریت محتوای آموزشی-تربیتی (مانند واقعیت افزوده)" + ), + window.t("دارای رویکرد آموزش سرگرم کننده"), + window.t("بستر تعاملی و اشتراک گذاری فیلم و محتوای آموزشی"), + window.t("رویکرد معرفتی-ارزشی"), + window.t("ویدئو های منحصر بفرد"), + window.t("متن گفتگو محور ، روایی ، قابل فهم ،جذاب و سرگرم کننده"), + ], + }, + }; + const { fury, advantages, keywords, keywords2, first } = state; return ( <> {window.innerWidth > 1000 ? ( diff --git a/src/views/Auth/Login/Code/index.js b/src/views/Auth/Login/Code/index.js index 896e630..c49877d 100644 --- a/src/views/Auth/Login/Code/index.js +++ b/src/views/Auth/Login/Code/index.js @@ -96,7 +96,7 @@ export default class Code extends Component { style={{ width: "48%", height: "100%" }} className="d-flex flex-column justify-content-center align-items-center p-5" > - {window.test("دانوین")} + {window.t("دانوین")}