Compare commits
No commits in common. "main" and "profile-feature" have entirely different histories.
main
...
profile-fe
|
@ -6,10 +6,4 @@ Server/sessions/
|
||||||
.vscode/settings.json
|
.vscode/settings.json
|
||||||
Server/app/resources/emails/credentials.json
|
Server/app/resources/emails/credentials.json
|
||||||
Server/db/connection.yml
|
Server/db/connection.yml
|
||||||
Server/public/assets/groups.json
|
Server/public/assets/groups.json
|
||||||
Server/public/assets/communes.json
|
|
||||||
Server/public/assets/coops.json
|
|
||||||
Server/public/assets/parties.json
|
|
||||||
Server/public/assets/cooperatives.json
|
|
||||||
Server/public/assets/partners.json
|
|
||||||
Server/public/assets/trade_unions.json
|
|
156
LICENSE
156
LICENSE
|
@ -1,156 +0,0 @@
|
||||||
Creative Commons Attribution 4.0 International
|
|
||||||
|
|
||||||
Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible.
|
|
||||||
|
|
||||||
Using Creative Commons Public Licenses
|
|
||||||
|
|
||||||
Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses.
|
|
||||||
|
|
||||||
Considerations for licensors: Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. More considerations for licensors.
|
|
||||||
|
|
||||||
Considerations for the public: By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. More considerations for the public.
|
|
||||||
|
|
||||||
Creative Commons Attribution 4.0 International Public License
|
|
||||||
|
|
||||||
By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions.
|
|
||||||
|
|
||||||
Section 1 – Definitions.
|
|
||||||
|
|
||||||
a. Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image.
|
|
||||||
|
|
||||||
b. Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License.
|
|
||||||
|
|
||||||
c. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
|
|
||||||
|
|
||||||
d. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements.
|
|
||||||
|
|
||||||
e. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material.
|
|
||||||
|
|
||||||
f. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License.
|
|
||||||
|
|
||||||
g. Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license.
|
|
||||||
|
|
||||||
h. Licensor means the individual(s) or entity(ies) granting rights under this Public License.
|
|
||||||
|
|
||||||
i. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them.
|
|
||||||
|
|
||||||
j. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world.
|
|
||||||
|
|
||||||
k. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning.
|
|
||||||
|
|
||||||
Section 2 – Scope.
|
|
||||||
|
|
||||||
a. License grant.
|
|
||||||
|
|
||||||
1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to:
|
|
||||||
|
|
||||||
A. reproduce and Share the Licensed Material, in whole or in part; and
|
|
||||||
|
|
||||||
B. produce, reproduce, and Share Adapted Material.
|
|
||||||
|
|
||||||
2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions.
|
|
||||||
|
|
||||||
3. Term. The term of this Public License is specified in Section 6(a).
|
|
||||||
|
|
||||||
4. Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material.
|
|
||||||
|
|
||||||
5. Downstream recipients.
|
|
||||||
|
|
||||||
A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License.
|
|
||||||
|
|
||||||
B. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material.
|
|
||||||
|
|
||||||
6. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i).
|
|
||||||
|
|
||||||
b. Other rights.
|
|
||||||
|
|
||||||
1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise.
|
|
||||||
|
|
||||||
2. Patent and trademark rights are not licensed under this Public License.
|
|
||||||
|
|
||||||
3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties.
|
|
||||||
|
|
||||||
Section 3 – License Conditions.
|
|
||||||
|
|
||||||
Your exercise of the Licensed Rights is expressly made subject to the following conditions.
|
|
||||||
|
|
||||||
a. Attribution.
|
|
||||||
|
|
||||||
1. If You Share the Licensed Material (including in modified form), You must:
|
|
||||||
|
|
||||||
A. retain the following if it is supplied by the Licensor with the Licensed Material:
|
|
||||||
|
|
||||||
i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated);
|
|
||||||
|
|
||||||
ii. a copyright notice;
|
|
||||||
|
|
||||||
iii. a notice that refers to this Public License;
|
|
||||||
|
|
||||||
iv. a notice that refers to the disclaimer of warranties;
|
|
||||||
|
|
||||||
v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable;
|
|
||||||
|
|
||||||
B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and
|
|
||||||
|
|
||||||
C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License.
|
|
||||||
|
|
||||||
2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information.
|
|
||||||
|
|
||||||
3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable.
|
|
||||||
|
|
||||||
4. If You Share Adapted Material You produce, the Adapter's License You apply must not prevent recipients of the Adapted Material from complying with this Public License.
|
|
||||||
|
|
||||||
Section 4 – Sui Generis Database Rights.
|
|
||||||
|
|
||||||
Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material:
|
|
||||||
|
|
||||||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database;
|
|
||||||
|
|
||||||
b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and
|
|
||||||
|
|
||||||
c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database.
|
|
||||||
For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights.
|
|
||||||
|
|
||||||
Section 5 – Disclaimer of Warranties and Limitation of Liability.
|
|
||||||
|
|
||||||
a. Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.
|
|
||||||
|
|
||||||
b. To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.
|
|
||||||
|
|
||||||
c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability.
|
|
||||||
|
|
||||||
Section 6 – Term and Termination.
|
|
||||||
|
|
||||||
a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically.
|
|
||||||
|
|
||||||
b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates:
|
|
||||||
|
|
||||||
1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or
|
|
||||||
|
|
||||||
2. upon express reinstatement by the Licensor.
|
|
||||||
|
|
||||||
c. For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License.
|
|
||||||
|
|
||||||
d. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License.
|
|
||||||
|
|
||||||
e. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.
|
|
||||||
|
|
||||||
Section 7 – Other Terms and Conditions.
|
|
||||||
|
|
||||||
a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed.
|
|
||||||
|
|
||||||
b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License.
|
|
||||||
|
|
||||||
Section 8 – Interpretation.
|
|
||||||
|
|
||||||
a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License.
|
|
||||||
|
|
||||||
b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions.
|
|
||||||
|
|
||||||
c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor.
|
|
||||||
|
|
||||||
d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority.
|
|
||||||
|
|
||||||
Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at creativecommons.org/policies, Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses.
|
|
||||||
|
|
||||||
Creative Commons may be contacted at creativecommons.org.
|
|
|
@ -12,10 +12,6 @@
|
||||||
<meta property="og:url" content="">
|
<meta property="og:url" content="">
|
||||||
<link rel="icon" type="image/png" href="/favicon.png"/>
|
<link rel="icon" type="image/png" href="/favicon.png"/>
|
||||||
|
|
||||||
<!--Load fonts-->
|
|
||||||
<link rel="preload" href="/fonts/OpenSans/opensans.woff2" as="font" type="font/woff2" crossorigin>
|
|
||||||
<link rel="preload" href="/fonts/LoraSerif/Lora-Regular.woff2" as="font" type="font/woff2" crossorigin>
|
|
||||||
|
|
||||||
<!--Load libraries-->
|
<!--Load libraries-->
|
||||||
|
|
||||||
<!--Load fonts-->
|
<!--Load fonts-->
|
||||||
|
@ -24,8 +20,6 @@
|
||||||
|
|
||||||
<!--Load components-->
|
<!--Load components-->
|
||||||
|
|
||||||
<!--Preload-->
|
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<!--<loadscreen-component></loadscreen-component>-->
|
<!--<loadscreen-component></loadscreen-component>-->
|
||||||
|
|
|
@ -1,151 +0,0 @@
|
||||||
module AdminController
|
|
||||||
|
|
||||||
using Genie, Genie.Renderer, Genie.Renderer.Html, Genie.Requests, GenieAuthentication, DataFrames, GenieAuthorisation
|
|
||||||
using JSON3
|
|
||||||
using SearchLight,SearchLightPostgreSQL, LibPQ, JSON3
|
|
||||||
using Server.DatabaseSupport, Server.TemplateEditor, Server.Users
|
|
||||||
import Server.DatabaseSupport: select_from_table, insert_into_table, delete_from_table, exist_in_table
|
|
||||||
|
|
||||||
controller = "admin"
|
|
||||||
dict_layouts = Dict(
|
|
||||||
:admin_panel => generate_layout_html("main",controller,"admin_panel"),
|
|
||||||
)
|
|
||||||
|
|
||||||
#---Page info-----------------------------------------------------
|
|
||||||
|
|
||||||
const admin_panel_info = Dict(
|
|
||||||
"en" => Dict(
|
|
||||||
:title => "LibSoc - Admin panel",
|
|
||||||
:description => ""
|
|
||||||
),
|
|
||||||
"ru" => Dict(
|
|
||||||
:title => "",
|
|
||||||
:description => ""
|
|
||||||
),
|
|
||||||
"fr" => Dict(
|
|
||||||
:title => "LibSoc - Admin panel",
|
|
||||||
:description => ""
|
|
||||||
),
|
|
||||||
"ee" => Dict(
|
|
||||||
:title => "LibSoc - Admin panel",
|
|
||||||
:description => ""
|
|
||||||
),
|
|
||||||
)
|
|
||||||
|
|
||||||
function get_locale()
|
|
||||||
data = payload()
|
|
||||||
if :locale in keys(data)
|
|
||||||
return data[:locale]
|
|
||||||
else
|
|
||||||
return "en"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
#---Helpers-----------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
function table_to_json(name,df)
|
|
||||||
ar = []
|
|
||||||
for df_row in eachrow(df)
|
|
||||||
dict = Dict()
|
|
||||||
for id in names(df_row)
|
|
||||||
dict[id] = df_row[id]
|
|
||||||
end
|
|
||||||
push!(ar,dict)
|
|
||||||
end
|
|
||||||
open("public/assets/"*name*".json", "w") do io
|
|
||||||
JSON3.write(io, ar)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function compile(name)
|
|
||||||
df = select_from_table([name => ["*"]])
|
|
||||||
table_to_json(name,df)
|
|
||||||
end
|
|
||||||
|
|
||||||
function move_requests(name)
|
|
||||||
df_requests = select_from_table(["$(name)_requests" => ["*"]], where_data=["verified" => true, "added" => false])
|
|
||||||
df = select_from_table([name => ["*"]])
|
|
||||||
latitudes = df.latitude
|
|
||||||
longitudes = df.longitude
|
|
||||||
for df_row in eachrow(df_requests)
|
|
||||||
ind_id_given = ismissing(df_row.id_given) ? nothing : findfirst(df_row.id_given.==df.id)
|
|
||||||
if (!isnothing(ind_id_given))
|
|
||||||
id = df[ind_id_given,:id]
|
|
||||||
row_found = df[ind_id_given,Not(:id)]
|
|
||||||
dict = Dict(zip(names(row_found),values(row_found)))
|
|
||||||
dict["members"] += 1
|
|
||||||
update_table(name,dict, where_data=["id" => id])
|
|
||||||
else
|
|
||||||
id = df_row.id
|
|
||||||
dict_update = Dict("added" => true)
|
|
||||||
update_table("$(name)_requests",dict_update, where_data=["id" => id])
|
|
||||||
|
|
||||||
df_row_to_add = df_row[Not(:id_given)]
|
|
||||||
df_row_to_add = df_row_to_add[Not(:verified)]
|
|
||||||
df_row_to_add = df_row_to_add[Not(:added)]
|
|
||||||
df_row_to_add = df_row_to_add[Not(:id)]
|
|
||||||
dict = Dict(zip(names(df_row_to_add),values(df_row_to_add)))
|
|
||||||
dict["members"] = 1
|
|
||||||
insert_into_table(name,dict)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
#---Functions---------------------------------------------------------
|
|
||||||
|
|
||||||
current_user() = findone(Users.User, id = get_authentication())
|
|
||||||
|
|
||||||
function admin_panel()
|
|
||||||
if has_permission(current_user(), "verification")
|
|
||||||
locale = get_locale()
|
|
||||||
html(:admin,:admin_panel, layout = dict_layouts[:admin_panel], context = @__MODULE__,
|
|
||||||
title = admin_panel_info[locale][:title],
|
|
||||||
description = admin_panel_info[locale][:description]
|
|
||||||
)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function verify()
|
|
||||||
if has_permission(current_user(), "verification")
|
|
||||||
data = copy(jsonpayload())
|
|
||||||
user_id = data["user_id"]
|
|
||||||
update_table("users",Dict("verified" => true), where_data=["id" => user_id])
|
|
||||||
return nothing
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function get_unverified_users()
|
|
||||||
if has_permission(current_user(), "verification")
|
|
||||||
users = select_from_table("users" => ["id","email"], where_data = ["verified" => false])
|
|
||||||
data = []
|
|
||||||
if size(users,1)!=0
|
|
||||||
for x in eachrow(users)
|
|
||||||
dict = Dict("user_id" => x["id"],"email" => x["email"])
|
|
||||||
push!(data, dict)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return JSON3.write(data)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function add_verified_groups()
|
|
||||||
if has_permission(current_user(), "verification")
|
|
||||||
groups_create_requests_verified = select_from_table("groups_requests" => ["*"], where_data = ["group_id" => nothing, "status" => 1])
|
|
||||||
if size(groups_create_requests_verified,1)!=0
|
|
||||||
data = Dict(zip(names(groups_create_requests_verified),groups_create_requests_verified[end,:]))
|
|
||||||
user_id = data["user_id"]
|
|
||||||
delete!(data,"group_id")
|
|
||||||
delete!(data,"user_id")
|
|
||||||
delete!(data,"id")
|
|
||||||
delete!(data,"status")
|
|
||||||
group_id = insert_into_table("groups",data, "RETURNING id")[1,1]
|
|
||||||
dict_users_groups = Dict("user_id" => user_id, "group_id" => group_id)
|
|
||||||
insert_into_table("users_groups",dict_users_groups)
|
|
||||||
delete_from_table("groups_requests",["user_id" => user_id])
|
|
||||||
end
|
|
||||||
compile("groups")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
|
@ -1 +0,0 @@
|
||||||
<admin-panel></admin-panel>
|
|
|
@ -82,33 +82,6 @@ const auth_info = Dict(
|
||||||
"ru" => Dict(
|
"ru" => Dict(
|
||||||
:title => "LibSoc - Логин/Регистрация",
|
:title => "LibSoc - Логин/Регистрация",
|
||||||
:description => ""
|
:description => ""
|
||||||
),
|
|
||||||
"fr" => Dict(
|
|
||||||
:title => "LibSoc - Connexion/Inscription",
|
|
||||||
:description => ""
|
|
||||||
),
|
|
||||||
"ee" => Dict(
|
|
||||||
:title => "LibSoc - Logi sisse",
|
|
||||||
:description => ""
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
const reset_password_info = Dict(
|
|
||||||
"en" => Dict(
|
|
||||||
:title => "LibSoc - Reset password",
|
|
||||||
:description => ""
|
|
||||||
),
|
|
||||||
"ru" => Dict(
|
|
||||||
:title => "LibSoc - Восстановление пароля",
|
|
||||||
:description => ""
|
|
||||||
),
|
|
||||||
"fr" => Dict(
|
|
||||||
:title => "LibSoc - Réinitialiser le mot de passe",
|
|
||||||
:description => ""
|
|
||||||
),
|
|
||||||
"ee" => Dict(
|
|
||||||
:title => "LibSoc - Parooli lähtestamine",
|
|
||||||
:description => ""
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -120,7 +93,6 @@ const dict_layouts = Dict(
|
||||||
:auth => generate_layout_html("main",controller,"auth",libraries=["GoogleAuth"]),
|
:auth => generate_layout_html("main",controller,"auth",libraries=["GoogleAuth"]),
|
||||||
:profile => generate_layout_html("main",controller,"profile",libraries=["Leaflet"]),
|
:profile => generate_layout_html("main",controller,"profile",libraries=["Leaflet"]),
|
||||||
:email_confirmation => generate_layout_html("main",controller,"email_confirmation"),
|
:email_confirmation => generate_layout_html("main",controller,"email_confirmation"),
|
||||||
:reset_password => generate_layout_html("main",controller,"reset_password")
|
|
||||||
)
|
)
|
||||||
|
|
||||||
function auth()
|
function auth()
|
||||||
|
@ -148,15 +120,6 @@ function email_confirmation()
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
function reset_password()
|
|
||||||
locale = get_locale()
|
|
||||||
set_cookies(params())
|
|
||||||
html(:authentication,:reset_password, layout = dict_layouts[:reset_password], context = @__MODULE__,
|
|
||||||
title = reset_password_info[locale][:title],
|
|
||||||
description = reset_password_info[locale][:description]
|
|
||||||
)
|
|
||||||
end
|
|
||||||
|
|
||||||
function confirm_email()
|
function confirm_email()
|
||||||
code = rawpayload()
|
code = rawpayload()
|
||||||
user = current_user()
|
user = current_user()
|
||||||
|
@ -177,6 +140,7 @@ function register()
|
||||||
password = data["password"] |> Users.hash_password,
|
password = data["password"] |> Users.hash_password,
|
||||||
) |> save!
|
) |> save!
|
||||||
authenticate(user.id, GenieSession.session(params()))
|
authenticate(user.id, GenieSession.session(params()))
|
||||||
|
assign_role(user, findone(Role, name = "free"))
|
||||||
confirmation_code = randstring('0':'9', 5)
|
confirmation_code = randstring('0':'9', 5)
|
||||||
user.confirmation_code = confirmation_code
|
user.confirmation_code = confirmation_code
|
||||||
save(user)
|
save(user)
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
<reset-password-component></reset-password-component>
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ using Server.DatabaseSupport, Server.TemplateEditor
|
||||||
|
|
||||||
controller = "basic"
|
controller = "basic"
|
||||||
dict_layouts = Dict(
|
dict_layouts = Dict(
|
||||||
:landing => generate_layout_html("main",controller,"landing",css=["landing"],libraries=["Leaflet"],preload=[Dict("path"=>"/img/crowd.webp","type"=>"image")]),
|
:landing => generate_layout_html("main",controller,"landing",css=["landing"],libraries=["Leaflet"]),
|
||||||
:manifesto => generate_layout_html("main",controller,"manifesto"),
|
:manifesto => generate_layout_html("main",controller,"manifesto"),
|
||||||
:join_us => generate_layout_html("main",controller,"join_us",libraries=["Leaflet"]),
|
:join_us => generate_layout_html("main",controller,"join_us",libraries=["Leaflet"]),
|
||||||
:compass => generate_layout_html("main",controller,"compass"),
|
:compass => generate_layout_html("main",controller,"compass"),
|
||||||
|
@ -24,14 +24,6 @@ const landing_info = Dict(
|
||||||
:title => "LibSoc - Глобальная сеть либертарных социалистов",
|
:title => "LibSoc - Глобальная сеть либертарных социалистов",
|
||||||
:description => ""
|
:description => ""
|
||||||
),
|
),
|
||||||
"fr" => Dict(
|
|
||||||
:title => "LibSoc - Un réseau mondial de socialistes libertaires",
|
|
||||||
:description => ""
|
|
||||||
),
|
|
||||||
"ee" => Dict(
|
|
||||||
:title => "LibSoc - Libertaarsotsialistide ülemaailmne võrgustik",
|
|
||||||
:description => ""
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const manifesto_info = Dict(
|
const manifesto_info = Dict(
|
||||||
|
@ -42,34 +34,18 @@ const manifesto_info = Dict(
|
||||||
"ru" => Dict(
|
"ru" => Dict(
|
||||||
:title => "LibSoc - Манифест",
|
:title => "LibSoc - Манифест",
|
||||||
:description => ""
|
:description => ""
|
||||||
),
|
|
||||||
"fr" => Dict(
|
|
||||||
:title => "LibSoc - Manifeste",
|
|
||||||
:description => ""
|
|
||||||
),
|
|
||||||
"ee" => Dict(
|
|
||||||
:title => "LibSoc - Manifest",
|
|
||||||
:description => ""
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
const join_us_info = Dict(
|
const join_us_info = Dict(
|
||||||
"en" => Dict(
|
"en" => Dict(
|
||||||
:title => "LibSoc - Join Us",
|
:title => "LibSoc - Manifesto",
|
||||||
:description => ""
|
:description => ""
|
||||||
),
|
),
|
||||||
"ru" => Dict(
|
"ru" => Dict(
|
||||||
:title => "LibSoc - Присоединяйся",
|
:title => "LibSoc - Присоединяйся",
|
||||||
:description => ""
|
:description => ""
|
||||||
),
|
),
|
||||||
"fr" => Dict(
|
|
||||||
:title => "LibSoc - Rejoignez-nous",
|
|
||||||
:description => ""
|
|
||||||
),
|
|
||||||
"ee" => Dict(
|
|
||||||
:title => "LibSoc - Liitu meiega",
|
|
||||||
:description => ""
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const compass_info = Dict(
|
const compass_info = Dict(
|
||||||
|
@ -80,14 +56,6 @@ const compass_info = Dict(
|
||||||
"ru" => Dict(
|
"ru" => Dict(
|
||||||
:title => "LibSoc - Политический компас",
|
:title => "LibSoc - Политический компас",
|
||||||
:description => ""
|
:description => ""
|
||||||
),
|
|
||||||
"fr" => Dict(
|
|
||||||
:title => "LibSoc - Political Compass",
|
|
||||||
:description => ""
|
|
||||||
),
|
|
||||||
"ee" => Dict(
|
|
||||||
:title => "LibSoc - Political Compass",
|
|
||||||
:description => ""
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -21,14 +21,6 @@ const communes_info = Dict(
|
||||||
"ru" => Dict(
|
"ru" => Dict(
|
||||||
:title => "LibSoc - Коммуны",
|
:title => "LibSoc - Коммуны",
|
||||||
:description => ""
|
:description => ""
|
||||||
),
|
|
||||||
"fr" => Dict(
|
|
||||||
:title => "LibSoc - Communes",
|
|
||||||
:description => ""
|
|
||||||
),
|
|
||||||
"ee" => Dict(
|
|
||||||
:title => "LibSoc - Kommuunid",
|
|
||||||
:description => ""
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -21,14 +21,6 @@ const cooperatives_info = Dict(
|
||||||
"ru" => Dict(
|
"ru" => Dict(
|
||||||
:title => "LibSoc - Кооперативы",
|
:title => "LibSoc - Кооперативы",
|
||||||
:description => ""
|
:description => ""
|
||||||
),
|
|
||||||
"fr" => Dict(
|
|
||||||
:title => "LibSoc - Coopératives",
|
|
||||||
:description => ""
|
|
||||||
),
|
|
||||||
"ee" => Dict(
|
|
||||||
:title => "LibSoc - Kooperatiivid",
|
|
||||||
:description => ""
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -22,14 +22,6 @@ const groups_info = Dict(
|
||||||
"ru" => Dict(
|
"ru" => Dict(
|
||||||
:title => "LibSoc - Группы",
|
:title => "LibSoc - Группы",
|
||||||
:description => ""
|
:description => ""
|
||||||
),
|
|
||||||
"fr" => Dict(
|
|
||||||
:title => "LibSoc - Groupes",
|
|
||||||
:description => ""
|
|
||||||
),
|
|
||||||
"ee" => Dict(
|
|
||||||
:title => "LibSoc - Grupid",
|
|
||||||
:description => ""
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -240,7 +232,6 @@ function approve_request()
|
||||||
update_table("groups_requests",Dict("status" => 1), where_data=["group_id" => group_id, "user_id" => data["user_id"]])
|
update_table("groups_requests",Dict("status" => 1), where_data=["group_id" => group_id, "user_id" => data["user_id"]])
|
||||||
dict_users_groups = Dict("user_id" => data["user_id"], "group_id" => group_id)
|
dict_users_groups = Dict("user_id" => data["user_id"], "group_id" => group_id)
|
||||||
insert_into_table("users_groups",dict_users_groups)
|
insert_into_table("users_groups",dict_users_groups)
|
||||||
compile("groups")
|
|
||||||
return nothing
|
return nothing
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -253,35 +244,18 @@ function reject_request()
|
||||||
return nothing
|
return nothing
|
||||||
end
|
end
|
||||||
|
|
||||||
function changeMemberCount()
|
function add_verified_groups()
|
||||||
user_id = get_authentication()
|
groups_create_requests_verified = select_from_table("groups_requests" => ["*"], where_data = ["group_id" => nothing, "status" => 1])
|
||||||
groups_ids = select_from_table("users_groups" => ["group_id"], where_data = ["user_id" => user_id])[:,1]
|
data = Dict(zip(names(groups_create_requests_verified),groups_create_requests_verified[end,:]))
|
||||||
group_id = isempty(groups_ids) ? nothing : groups_ids[1]
|
user_id = data["user_id"]
|
||||||
data = copy(jsonpayload())
|
delete!(data,"group_id")
|
||||||
update_table("groups",data, where_data=["id" => group_id])
|
delete!(data,"user_id")
|
||||||
compile("groups")
|
delete!(data,"id")
|
||||||
|
delete!(data,"status")
|
||||||
|
group_id = insert_into_table("groups",data, "RETURNING id")[1,1]
|
||||||
|
dict_users_groups = Dict("user_id" => user_id, "group_id" => group_id)
|
||||||
|
insert_into_table("users_groups",dict_users_groups)
|
||||||
|
delete_from_table("groups_requests",["user_id" => user_id])
|
||||||
end
|
end
|
||||||
|
|
||||||
function change_group()
|
|
||||||
user_id = get_authentication()
|
|
||||||
groups_ids = select_from_table("users_groups" => ["group_id"], where_data = ["user_id" => user_id])[:,1]
|
|
||||||
group_id = isempty(groups_ids) ? nothing : groups_ids[1]
|
|
||||||
if !isnothing(group_id)
|
|
||||||
data = copy(jsonpayload())
|
|
||||||
data_new = Dict()
|
|
||||||
ks = keys(data)
|
|
||||||
for x in ["members","contact"]
|
|
||||||
if x in ks
|
|
||||||
data_new[x] = data[x]
|
|
||||||
end
|
|
||||||
end
|
|
||||||
if !isempty(data_new)
|
|
||||||
update_table("groups",data_new, where_data=["id" => group_id])
|
|
||||||
compile("groups")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return nothing
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -21,14 +21,6 @@ const parties_info = Dict(
|
||||||
"ru" => Dict(
|
"ru" => Dict(
|
||||||
:title => "LibSoc - Партии",
|
:title => "LibSoc - Партии",
|
||||||
:description => ""
|
:description => ""
|
||||||
),
|
|
||||||
"fr" => Dict(
|
|
||||||
:title => "LibSoc - Partis",
|
|
||||||
:description => ""
|
|
||||||
),
|
|
||||||
"ee" => Dict(
|
|
||||||
:title => "LibSoc - Parteid",
|
|
||||||
:description => ""
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -21,14 +21,6 @@ const partners_info = Dict(
|
||||||
"ru" => Dict(
|
"ru" => Dict(
|
||||||
:title => "LibSoc - Партнеры",
|
:title => "LibSoc - Партнеры",
|
||||||
:description => ""
|
:description => ""
|
||||||
),
|
|
||||||
"fr" => Dict(
|
|
||||||
:title => "LibSoc - Partenaires",
|
|
||||||
:description => ""
|
|
||||||
),
|
|
||||||
"ee" => Dict(
|
|
||||||
:title => "LibSoc - Partners",
|
|
||||||
:description => ""
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -1,287 +0,0 @@
|
||||||
module TradeUnionsController
|
|
||||||
|
|
||||||
using Genie, Genie.Renderer, Genie.Renderer.Html, Genie.Requests, GenieAuthentication, DataFrames
|
|
||||||
using JSON3
|
|
||||||
using SearchLight,SearchLightPostgreSQL, LibPQ, JSON3
|
|
||||||
using Server.DatabaseSupport, Server.TemplateEditor, Server.Users
|
|
||||||
import Server.DatabaseSupport: select_from_table, insert_into_table, delete_from_table, exist_in_table
|
|
||||||
|
|
||||||
controller = "trade_unions"
|
|
||||||
dict_layouts = Dict(
|
|
||||||
:trade_unions => generate_layout_html("main",controller,"trade_unions",libraries=["Leaflet"]),
|
|
||||||
:trade_unions_add => generate_layout_html("main",controller,"trade_unions_add",libraries=["Leaflet"]),
|
|
||||||
)
|
|
||||||
|
|
||||||
#---Page info-----------------------------------------------------
|
|
||||||
|
|
||||||
const trade_unions_info = Dict(
|
|
||||||
"en" => Dict(
|
|
||||||
:title => "LibSoc - Trade Unions",
|
|
||||||
:description => ""
|
|
||||||
),
|
|
||||||
"ru" => Dict(
|
|
||||||
:title => "LibSoc - Профсоюзы",
|
|
||||||
:description => ""
|
|
||||||
),
|
|
||||||
"fr" => Dict(
|
|
||||||
:title => "LibSoc - Syndicats",
|
|
||||||
:description => ""
|
|
||||||
),
|
|
||||||
"ee" => Dict(
|
|
||||||
:title => "LibSoc - Ametiühingud",
|
|
||||||
:description => ""
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
function get_locale()
|
|
||||||
data = payload()
|
|
||||||
if :locale in keys(data)
|
|
||||||
return data[:locale]
|
|
||||||
else
|
|
||||||
return "en"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
#---Helpers-----------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
function table_to_json(name,df)
|
|
||||||
ar = []
|
|
||||||
for df_row in eachrow(df)
|
|
||||||
dict = Dict()
|
|
||||||
for id in names(df_row)
|
|
||||||
dict[id] = df_row[id]
|
|
||||||
end
|
|
||||||
push!(ar,dict)
|
|
||||||
end
|
|
||||||
open("public/assets/"*name*".json", "w") do io
|
|
||||||
JSON3.write(io, ar)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function compile(name)
|
|
||||||
df = select_from_table([name => ["*"]])
|
|
||||||
table_to_json(name,df)
|
|
||||||
end
|
|
||||||
|
|
||||||
function move_requests(name)
|
|
||||||
df_requests = select_from_table(["$(name)_requests" => ["*"]], where_data=["verified" => true, "added" => false])
|
|
||||||
df = select_from_table([name => ["*"]])
|
|
||||||
latitudes = df.latitude
|
|
||||||
longitudes = df.longitude
|
|
||||||
for df_row in eachrow(df_requests)
|
|
||||||
ind_id_given = ismissing(df_row.id_given) ? nothing : findfirst(df_row.id_given.==df.id)
|
|
||||||
if (!isnothing(ind_id_given))
|
|
||||||
id = df[ind_id_given,:id]
|
|
||||||
row_found = df[ind_id_given,Not(:id)]
|
|
||||||
dict = Dict(zip(names(row_found),values(row_found)))
|
|
||||||
dict["members"] += 1
|
|
||||||
update_table(name,dict, where_data=["id" => id])
|
|
||||||
else
|
|
||||||
id = df_row.id
|
|
||||||
dict_update = Dict("added" => true)
|
|
||||||
update_table("$(name)_requests",dict_update, where_data=["id" => id])
|
|
||||||
|
|
||||||
df_row_to_add = df_row[Not(:id_given)]
|
|
||||||
df_row_to_add = df_row_to_add[Not(:verified)]
|
|
||||||
df_row_to_add = df_row_to_add[Not(:added)]
|
|
||||||
df_row_to_add = df_row_to_add[Not(:id)]
|
|
||||||
dict = Dict(zip(names(df_row_to_add),values(df_row_to_add)))
|
|
||||||
dict["members"] = 1
|
|
||||||
insert_into_table(name,dict)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
#---Functions---------------------------------------------------------
|
|
||||||
|
|
||||||
current_user() = findone(Users.User, id = get_authentication())
|
|
||||||
|
|
||||||
function trade_unions()
|
|
||||||
locale = get_locale()
|
|
||||||
html(:trade_unions,:trade_unions, layout = dict_layouts[:trade_unions], context = @__MODULE__,
|
|
||||||
title = trade_unions_info[locale][:title],
|
|
||||||
description = trade_unions_info[locale][:description]
|
|
||||||
)
|
|
||||||
end
|
|
||||||
|
|
||||||
function trade_unions_add()
|
|
||||||
locale = get_locale()
|
|
||||||
html(:trade_unions,:trade_unions_add, layout = dict_layouts[:trade_unions_add], context = @__MODULE__,
|
|
||||||
title = trade_unions_info[locale][:title],
|
|
||||||
description = trade_unions_info[locale][:description]
|
|
||||||
)
|
|
||||||
end
|
|
||||||
|
|
||||||
function trade_unions_add_post()
|
|
||||||
data = copy(jsonpayload())
|
|
||||||
mode = data["mode"]
|
|
||||||
delete!(data,"mode")
|
|
||||||
user = current_user()
|
|
||||||
user_id = user.id
|
|
||||||
if mode==0 # Create
|
|
||||||
if user.verified
|
|
||||||
existing_user_group_data = select_from_table(["users_trade_unions" => ["*"]], where_data=["user_id" => user_id])
|
|
||||||
has_group = !isempty(existing_user_group_data)
|
|
||||||
delete!(data,"group_id")
|
|
||||||
group_id = insert_into_table("trade_unions",data, "RETURNING id")[1,1]
|
|
||||||
if has_group
|
|
||||||
user_trade_unions_id = existing_user_group_data[1,"id"]
|
|
||||||
prev_group_id = existing_user_group_data[1,"group_id"]
|
|
||||||
update_table("users_trade_unions",Dict("group_id" => group_id), where_data=["id" => user_trade_unions_id])
|
|
||||||
members = select_from_table(["trade_unions" => ["members"]], where_data=["id" => prev_group_id])[1,1]
|
|
||||||
if (members==1)
|
|
||||||
delete_from_table("trade_unions",["id" => prev_group_id])
|
|
||||||
else
|
|
||||||
update_table("trade_unions",Dict("members" => members - 1), where_data=["id" => id])
|
|
||||||
end
|
|
||||||
else
|
|
||||||
dict_users_trade_unions = Dict("user_id" => user.id, "group_id" => group_id)
|
|
||||||
insert_into_table("users_trade_unions",dict_users_trade_unions)
|
|
||||||
end
|
|
||||||
compile("trade_unions")
|
|
||||||
else
|
|
||||||
data["status"] = 0
|
|
||||||
data["user_id"] = user_id
|
|
||||||
insert_into_table("trade_unions_requests",data)
|
|
||||||
end
|
|
||||||
elseif mode==1 # Join
|
|
||||||
data["user_id"] = user_id
|
|
||||||
if exist_in_table("users_trade_unions",["group_id" => data["group_id"]])
|
|
||||||
if exist_in_table("trade_unions_requests",["user_id" => user_id])
|
|
||||||
delete_from_table("trade_unions_requests",["user_id" => user_id])
|
|
||||||
end
|
|
||||||
data["status"] = 0
|
|
||||||
insert_into_table("trade_unions_requests",data)
|
|
||||||
else
|
|
||||||
group_id = data["group_id"]
|
|
||||||
members = select_from_table("trade_unions" => ["members"], where_data = ["id" => group_id])[1,1]
|
|
||||||
dict = Dict("members" => members + 1)
|
|
||||||
update_table("trade_unions",dict, where_data=["id" => group_id])
|
|
||||||
dict_users_trade_unions = Dict("user_id" => user_id, "group_id" => group_id)
|
|
||||||
insert_into_table("users_trade_unions",dict_users_trade_unions)
|
|
||||||
end
|
|
||||||
|
|
||||||
elseif mode==2 # Move
|
|
||||||
existing_user_group_data = select_from_table(["users_trade_unions" => ["*"]], where_data=["user_id" => user_id])
|
|
||||||
group_id = existing_user_group_data[1,"group_id"]
|
|
||||||
delete!(data,"group_id")
|
|
||||||
delete!(data,"members")
|
|
||||||
delete!(data,"contact")
|
|
||||||
update_table("trade_unions",data, where_data=["id" => group_id])
|
|
||||||
compile("trade_unions")
|
|
||||||
elseif mode==3 # Leave
|
|
||||||
existing_user_group_data = select_from_table(["users_trade_unions" => ["*"]], where_data=["user_id" => user_id])
|
|
||||||
if size(existing_user_group_data,1)==0
|
|
||||||
if exist_in_table("trade_unions_requests",["user_id" => user_id])
|
|
||||||
delete_from_table("trade_unions_requests",["user_id" => user_id])
|
|
||||||
end
|
|
||||||
else
|
|
||||||
delete_from_table("users_trade_unions",["user_id" => user_id])
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return nothing
|
|
||||||
end
|
|
||||||
|
|
||||||
function get_user_trade_unions()
|
|
||||||
local data_dicts
|
|
||||||
user_id = get_authentication()
|
|
||||||
trade_unions_ids = select_from_table("users_trade_unions" => ["group_id"], where_data = ["user_id" => user_id])[:,1]
|
|
||||||
group_id = isempty(trade_unions_ids) ? nothing : trade_unions_ids[1]
|
|
||||||
data_dicts = []
|
|
||||||
if isnothing(group_id)
|
|
||||||
local data
|
|
||||||
data = select_from_table("trade_unions_requests" => ["*"], where_data = ["user_id" => user_id,"status" => 0])
|
|
||||||
if size(data,1)==0
|
|
||||||
data = select_from_table("trade_unions_requests" => ["*"], where_data = ["user_id" => user_id,"status" => 2])
|
|
||||||
if size(data,1)!=0
|
|
||||||
data = data[[end],:]
|
|
||||||
end
|
|
||||||
end
|
|
||||||
for row in eachrow(data)
|
|
||||||
dict = Dict(zip(names(row),values(row)))
|
|
||||||
if (!ismissing(row["group_id"]))
|
|
||||||
extra_data = select_from_table("trade_unions" => ["*"], where_data = ["id" => row["group_id"]])
|
|
||||||
merge!(dict, Dict(zip(names(extra_data[1,:]),values(extra_data[1,:]))))
|
|
||||||
end
|
|
||||||
push!(data_dicts, dict)
|
|
||||||
end
|
|
||||||
else
|
|
||||||
group_data = select_from_table("trade_unions" => ["*"], where_data = ["id" => group_id])
|
|
||||||
ns = names(group_data)
|
|
||||||
data_dicts = map(x -> Dict(zip(ns,values(x))),eachrow(group_data))
|
|
||||||
end
|
|
||||||
return JSON3.write(data_dicts)
|
|
||||||
end
|
|
||||||
|
|
||||||
function get_group_requests()
|
|
||||||
user_id = get_authentication()
|
|
||||||
trade_unions_ids = select_from_table("users_trade_unions" => ["group_id"], where_data = ["user_id" => user_id])[:,1]
|
|
||||||
group_id = isempty(trade_unions_ids) ? nothing : trade_unions_ids[1]
|
|
||||||
data_dicts = []
|
|
||||||
if !isnothing(group_id)
|
|
||||||
user_ids = select_from_table("trade_unions_requests" => ["user_id"], where_data = ["group_id" => group_id, "status" => 0])[:,1]
|
|
||||||
for user2_id in user_ids
|
|
||||||
email = select_from_table("users" => ["email"], where_data = ["id" => user2_id])[1,1]
|
|
||||||
push!(data_dicts,Dict("email" => email, "user_id" => user2_id))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return JSON3.write(data_dicts)
|
|
||||||
end
|
|
||||||
|
|
||||||
function approve_request()
|
|
||||||
data = copy(jsonpayload())
|
|
||||||
user_id = get_authentication()
|
|
||||||
trade_unions_ids = select_from_table("users_trade_unions" => ["group_id"], where_data = ["user_id" => user_id])[:,1]
|
|
||||||
group_id = isempty(trade_unions_ids) ? nothing : trade_unions_ids[1]
|
|
||||||
members = select_from_table("trade_unions" => ["members"], where_data = ["id" => group_id])[1,1]
|
|
||||||
dict = Dict("members" => members + 1)
|
|
||||||
update_table("trade_unions",dict, where_data=["id" => group_id])
|
|
||||||
update_table("trade_unions_requests",Dict("status" => 1), where_data=["group_id" => group_id, "user_id" => data["user_id"]])
|
|
||||||
dict_users_trade_unions = Dict("user_id" => data["user_id"], "group_id" => group_id)
|
|
||||||
insert_into_table("users_trade_unions",dict_users_trade_unions)
|
|
||||||
compile("trade_unions")
|
|
||||||
return nothing
|
|
||||||
end
|
|
||||||
|
|
||||||
function reject_request()
|
|
||||||
data = copy(jsonpayload())
|
|
||||||
user_id = get_authentication()
|
|
||||||
trade_unions_ids = select_from_table("users_trade_unions" => ["group_id"], where_data = ["user_id" => user_id])[:,1]
|
|
||||||
group_id = isempty(trade_unions_ids) ? nothing : trade_unions_ids[1]
|
|
||||||
update_table("trade_unions_requests",Dict("status" => 2), where_data=["group_id" => group_id, "user_id" => data["user_id"]])
|
|
||||||
return nothing
|
|
||||||
end
|
|
||||||
|
|
||||||
function changeMemberCount()
|
|
||||||
user_id = get_authentication()
|
|
||||||
trade_unions_ids = select_from_table("users_trade_unions" => ["group_id"], where_data = ["user_id" => user_id])[:,1]
|
|
||||||
group_id = isempty(trade_unions_ids) ? nothing : trade_unions_ids[1]
|
|
||||||
data = copy(jsonpayload())
|
|
||||||
update_table("trade_unions",data, where_data=["id" => group_id])
|
|
||||||
compile("trade_unions")
|
|
||||||
end
|
|
||||||
|
|
||||||
function change_group()
|
|
||||||
user_id = get_authentication()
|
|
||||||
trade_unions_ids = select_from_table("users_trade_unions" => ["group_id"], where_data = ["user_id" => user_id])[:,1]
|
|
||||||
group_id = isempty(trade_unions_ids) ? nothing : trade_unions_ids[1]
|
|
||||||
if !isnothing(group_id)
|
|
||||||
data = copy(jsonpayload())
|
|
||||||
data_new = Dict()
|
|
||||||
ks = keys(data)
|
|
||||||
for x in ["members","contact"]
|
|
||||||
if x in ks
|
|
||||||
data_new[x] = data[x]
|
|
||||||
end
|
|
||||||
end
|
|
||||||
if !isempty(data_new)
|
|
||||||
update_table("trade_unions",data_new, where_data=["id" => group_id])
|
|
||||||
compile("trade_unions")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return nothing
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
end
|
|
|
@ -1 +0,0 @@
|
||||||
<trade-unions-component></trade-unions-component>
|
|
|
@ -1 +0,0 @@
|
||||||
<trade-unions-add-component></trade-unions-add-component>
|
|
|
@ -60,11 +60,9 @@ body {
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-display: swap;
|
font-display: swap;
|
||||||
src:
|
src:
|
||||||
url('/fonts/LoraSerif/Lora-Regular.woff2') format('woff'),
|
url('/fonts/LoraSerif/Lora-Regular.ttf') format('ttf'),
|
||||||
url('/fonts/LoraSerif/Lora-Regular.woff') format('woff'),
|
url('/fonts/LoraSerif/Lora-Regular.woff') format('woff'),
|
||||||
url('/fonts/LoraSerif/Lora-Regular.ttf') format('ttf');
|
url('/fonts/LoraSerif/Lora-Regular.woff2') format('woff');
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.serif {
|
.serif {
|
||||||
|
@ -274,11 +272,6 @@ a:focus { text-decoration: none; }
|
||||||
line-height: 140%;
|
line-height: 140%;
|
||||||
}
|
}
|
||||||
|
|
||||||
font {
|
|
||||||
font-size: inherit;
|
|
||||||
font-family: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*---Button/input related--------------------------------------------------------------*/
|
/*---Button/input related--------------------------------------------------------------*/
|
||||||
|
|
||||||
button {
|
button {
|
||||||
|
|
|
@ -214,15 +214,15 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Responsiveness */
|
/* Responsiveness */
|
||||||
@media only screen and (min-width: 1250px) {
|
@media only screen and (min-width: 1200px) {
|
||||||
|
|
||||||
#navbar {
|
#navbar {
|
||||||
position: relative;
|
position: relative;
|
||||||
width: min(100%,116rem);
|
width: min(100%,116rem);
|
||||||
left: 50%;
|
left: 50%;
|
||||||
transform: translateX(-50%);
|
transform: translateX(-50%);
|
||||||
padding-right: 0rem;
|
padding-right: 4rem;
|
||||||
padding-left: 0rem;
|
padding-left: 4rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
#nav {
|
#nav {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
let contactGeneral = "https://discord.gg/Qk8KUk787z"
|
let contactGeneral =["https://discord.gg/4BUau4AZre","DiscordInviteLink"]
|
||||||
|
|
||||||
export function translate(content, x) {
|
export function translate(content, x) {
|
||||||
let out = content[x]
|
let out = content[x]
|
||||||
|
|
|
@ -13,9 +13,9 @@ export function debounce(func, timeout){
|
||||||
}
|
}
|
||||||
|
|
||||||
export function svgFromObject(object) {
|
export function svgFromObject(object) {
|
||||||
var objectDoc = object.contentDocument
|
var objectDoc = object.contentDocument;
|
||||||
var svgItems = objectDoc.querySelectorAll("path")
|
var svgItem = objectDoc.querySelector("path");
|
||||||
return svgItems
|
return svgItem
|
||||||
}
|
}
|
||||||
|
|
||||||
export function rem2px(rem) {
|
export function rem2px(rem) {
|
||||||
|
@ -85,8 +85,8 @@ export function validateAge(event,input,callback) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function validatePosNumber(event,input,max) {
|
export function validatePosNumber(event,input,callback,max) {
|
||||||
event.preventDefault()
|
event.returnValue = false
|
||||||
var key
|
var key
|
||||||
if (event.type === 'paste') {
|
if (event.type === 'paste') {
|
||||||
key = event.clipboardData.getData('text/plain');
|
key = event.clipboardData.getData('text/plain');
|
||||||
|
@ -101,9 +101,12 @@ export function validatePosNumber(event,input,max) {
|
||||||
if (val>max) {
|
if (val>max) {
|
||||||
input.value = max
|
input.value = max
|
||||||
}
|
}
|
||||||
|
if (callback!=undefined) {
|
||||||
|
callback(input.value)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
input.value = ""
|
callback(input.value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -72,10 +72,7 @@ function onlyUnique(value, index, array) {
|
||||||
|
|
||||||
export let locales = {
|
export let locales = {
|
||||||
en: "English",
|
en: "English",
|
||||||
fr: "Français",
|
ru: "Русский"
|
||||||
ee: "Eesti",
|
|
||||||
ru: "Русский",
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function loadLocaleContent(content,componentName,loaded,callback) {
|
export function loadLocaleContent(content,componentName,loaded,callback) {
|
||||||
|
|
|
@ -6,15 +6,7 @@ export function addGroupPinContent(g,content,locale) {
|
||||||
for (let field of ["location","members","contact"]) {
|
for (let field of ["location","members","contact"]) {
|
||||||
let fieldText = content[field] + ": "
|
let fieldText = content[field] + ": "
|
||||||
if (field=="contact") {
|
if (field=="contact") {
|
||||||
if (g.contact.includes("@") && g.contact.trim().split(" ").length==1) {
|
text += fieldText + "<a href='" + g.contact + "' target='_blank' rel=noreferrer>" + g.contact + "</a>"
|
||||||
text += fieldText + "<a href='mailto:" + g.contact + "' target='_blank' rel=noreferrer>" + g.contact + "</a>"
|
|
||||||
}
|
|
||||||
else if (g.contact.includes("http")) {
|
|
||||||
text += fieldText + "<a href='" + g.contact + "' target='_blank' rel=noreferrer>" + g.contact + "</a>"
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
text += fieldText + g.contact + "<br>"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (field=="location") {
|
else if (field=="location") {
|
||||||
let location = [g.country,g.state,g.town].filter(x => x!=null && x!=undefined)
|
let location = [g.country,g.state,g.town].filter(x => x!=null && x!=undefined)
|
||||||
|
@ -183,31 +175,4 @@ export function addPartnersPinContent(g,content,locale) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return {text,coordinates}
|
return {text,coordinates}
|
||||||
}
|
|
||||||
|
|
||||||
export function addTradeUnionPinContent(g,content,locale) {
|
|
||||||
let coordinates
|
|
||||||
let text = "<b>"+content["TradeUnion"]+"</b><br>"
|
|
||||||
for (let field of ["name","location","members","contact"]) {
|
|
||||||
let fieldText = content[field] + ": "
|
|
||||||
if (field=="contact") {
|
|
||||||
text += fieldText + "<a href='" + g.contact + "' target='_blank' rel=noreferrer>" + g.contact + "</a>"
|
|
||||||
}
|
|
||||||
else if (field=="location") {
|
|
||||||
let location = [g.country,g.state,g.town].filter(x => x!=null && x!=undefined)
|
|
||||||
let locationString
|
|
||||||
if (locale=="en") {
|
|
||||||
locationString = location.map(x => x).join(", ")
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
locationString = location.map(x => translate(content, x)).join(", ")
|
|
||||||
}
|
|
||||||
text += fieldText + locationString + "<br>"
|
|
||||||
coordinates = [g.latitude,g.longitude]
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
text += fieldText + g[field] + "<br>"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return {text,coordinates}
|
|
||||||
}
|
}
|
|
@ -1,15 +0,0 @@
|
||||||
{
|
|
||||||
"communes": "Kommuunid",
|
|
||||||
"p1": "Me loome libertaarsotsialistlikke kommuune ostes maad, elamispinda ja tootmisvahendeid, mida kommuunide liikmed omama hakkavad. Nendes kommuunides puudub eraomand ja seega ka sellega kaasnev ärakasutamine ning kannatused. Otsused langetatakse demokraatlikult ja konsensuslikkust silmas pidades, mis tagab igale kommuuni liikmele võimaluse end mõjutavates otsustes kaasa rääkida. Kommuunid proovivad oma tegevuse rahastamiseks, püsivuse tagamiseks ja kasvamiseks, luua kooperatiive. Kommuunides proovitakse võimalikult palju kasutada kingimajandust. Iga kommuun on väike sotsialismimajakas pimedas kapitalistlikus maailmas, mis näitab meile, kui ilus elu võib olla, kui me oma eesmärgi saavutame.",
|
|
||||||
"subheading1": "Meie kommuunid",
|
|
||||||
"subheading2": "Euroopa",
|
|
||||||
"location": "Asukoht",
|
|
||||||
"status": "Hetkeolukord",
|
|
||||||
"members": "Liikmed",
|
|
||||||
"contact": "Kontakt",
|
|
||||||
"forming": "loomisel",
|
|
||||||
"WhatsAppInviteLink": "WhatsAppi link",
|
|
||||||
"DiscordInviteLink": "Discordi link",
|
|
||||||
"Commune": "Kommuun",
|
|
||||||
"map-prompt": "Tahad, et sind oleks kaardil näha? Võta meiega ühendust!"
|
|
||||||
}
|
|
|
@ -1,16 +0,0 @@
|
||||||
{
|
|
||||||
"heading": "Kogukonnad",
|
|
||||||
"p1": "Me loome libertaarsotsialistlikke kogukondi ostes maad, elamispinda ja tootmisvahendeid, mida kogukonna liikmed omama hakkavad. Nendes kogukondades puudub eraomand ja seega ka sellega kaasnev ärakasutamine ning kannatused. Otsused langetatakse demokraatlikult ja konsensuslikkust silmas pidades, mis tagab igale kogukonna liikmele võimaluse end mõjutavates otsustes kaasa rääkida. Kogukonnad proovivad oma tegevuse rahastamiseks, püsivuse tagamiseks ja kasvamiseks, luua kooperatiive. Kogukondades proovitakse võimalikult palju kasutada kingimajandust. Iga kogukond on väike sotsialismimajakas pimedas kapitalistlikus maailmas, mis näitab meile, kui ilus elu võib olla, kui me oma eesmärgi saavutame.",
|
|
||||||
"subheading1": "Meie kogukonnad",
|
|
||||||
"subheading2": "Euroopa",
|
|
||||||
"location": "Asukoht",
|
|
||||||
"status": "Hetkeolukord",
|
|
||||||
"members": "Liikmed",
|
|
||||||
"contact": "Kontakt",
|
|
||||||
"EstoniaKohtlaJarve": "Eesti, Kohtla-Järve",
|
|
||||||
"forming": "loomisel",
|
|
||||||
"WhatsAppInviteLink": "WhatsAppi link",
|
|
||||||
"DiscordInviteLink": "Discordi link",
|
|
||||||
"CanadaMontreal": "Kanada, Montreal",
|
|
||||||
"Latvia": "Läti"
|
|
||||||
}
|
|
|
@ -1,120 +0,0 @@
|
||||||
{
|
|
||||||
"heading": "Poliitiline kompass",
|
|
||||||
"qs": [
|
|
||||||
{
|
|
||||||
"q": "Tootmist peaks juhtima ...",
|
|
||||||
"as": [
|
|
||||||
["üksikisikute ettevõtlikkus ja vara",["C"]],
|
|
||||||
["juhtide määratud juhised ja plaanid",["V"]],
|
|
||||||
["ühiselt langetatud otsused ja kokkulepped",["LS"]]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"q": "Õigus langetada töökohas otsuseid peaks olema ...",
|
|
||||||
"as": [
|
|
||||||
["töökoha omanikel, kelle käes on vara ja poliitiline võim",["C"]],
|
|
||||||
["neil, kes seal töötavad",["LS"]]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"q": "Tööjaotus peaks põhinema ...",
|
|
||||||
"as": [
|
|
||||||
["tööturu pakutavatel võimalustel ja varalisel rikkusel",["C"]],
|
|
||||||
["juhtide määratud juhstel ja ülesannetel",["V"]],
|
|
||||||
["ühisel planeerimisel ja õiglasel sotsiaalsetest vajadustest tuleneval jaotusel",["LS"]]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"q": "Tootmisvahendeid peaksid omama ja juhtima ...",
|
|
||||||
"as": [
|
|
||||||
["jõukad isikud",["C"]],
|
|
||||||
["need, kes juhivad riiki",["V"]],
|
|
||||||
["kogukond tervikuna",["LS"]]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"q": "Tootmisel tuleks lähtuda eelkõige ...",
|
|
||||||
"as": [
|
|
||||||
["kulutõhususest",["C"]],
|
|
||||||
["sellest, mida juhid ütlevad",["V"]],
|
|
||||||
["vajadustest ja jätkusuutlikkusest",["LS"]]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"q": "Lõputu tootmise suurendamine viib ...",
|
|
||||||
"as": [
|
|
||||||
["kõigi heade asjadeni",["C","V"]],
|
|
||||||
["meie planeedi hävinguni",["LS"]]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"q": "Toodete jaotamisel tuleks lähtuda ...",
|
|
||||||
"as": [
|
|
||||||
["jõukusest",["C"]],
|
|
||||||
["juhtide otsustest",["V"]],
|
|
||||||
["ühistest kokkulepetest",["LS"]]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"q": "Sotsiaalsed turvavõrgud peaksid olema ...",
|
|
||||||
"as": [
|
|
||||||
["minimeeritud, et õhutada isiklikku vastutust ja toimetulekut",["C"]],
|
|
||||||
["juhtide kontrollitud ja nende poolt määratud",["V"]],
|
|
||||||
["laiaulatuslikud ja kollektiivsel kohustusel põhinevad",["LS"]]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"q": "Ligipääs haridusele peaks ...",
|
|
||||||
"as": [
|
|
||||||
["olenema rahalisest seisust",["C"]],
|
|
||||||
["olema ühiskondlike väärtuste kujundamiseks kontrollitud ja korraldatud juhtide poolt",["V"]],
|
|
||||||
["olema universaalne õigus",["LS"]]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"q": "Suurem osa inimkonnast on ...",
|
|
||||||
"as": [
|
|
||||||
["võimetud langetama häid otsuseid ja neid peab juhtima kui lambaid",["C","V"]],
|
|
||||||
["võimelised vaba ja iseseisvana häid otsuseid langetama",["LS"]]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"q": "Võim rikub ...",
|
|
||||||
"as": [
|
|
||||||
["mõnikord, mistõttu on meil vaja mitut gruppi, kes vahetevahel olenevalt oma oskusest reklaamikampaaniat korraldada omavahel võimu vahetavad",["C"]],
|
|
||||||
["kõiki peale meie armastatud juhtide",["V"]],
|
|
||||||
["kõiki",["LS"]]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"q": "Otsused peaksid põhinema ...",
|
|
||||||
"as": [
|
|
||||||
["sellel, mida võimu olijad ütlevad",["C","V"]],
|
|
||||||
["ühistel kokkulepetel",["LS"]]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"q": "Vägivald on ...",
|
|
||||||
"as": [
|
|
||||||
["õigustatud vahend võimu säilitamiseks",["C","V"]],
|
|
||||||
["lubamatu",["LS"]]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"q": "Teaduslikku ja tehnoloogilist arengut peaksid suunama ...",
|
|
||||||
"as": [
|
|
||||||
["konkurents turul ja isiklikud ajendid",["C"]],
|
|
||||||
["võimul olijate seatud eesmärgid",["V"]],
|
|
||||||
["ühised teadmised ja uuringud",["LS"]]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"q": "Intellektuaalse omandi õigused peaksid kuuluma ...",
|
|
||||||
"as": [
|
|
||||||
["üksikutele leiutajatele või nende töötajatele",["C"]],
|
|
||||||
["Juhtidele, kes intellektuaalset omandit kontrollivad ja jaotavad",["V"]],
|
|
||||||
["kogukonnale ühiseks kasutamiseks",["LS"]]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
|
@ -1,24 +0,0 @@
|
||||||
{
|
|
||||||
"cooperatives": "Kooperatiivid",
|
|
||||||
"p1": "Me loome kooperatiive, kus töötajad omavad ja juhivad äritegevust. Igal töötajal on õigus otsuste tegemisel kaasa rääkida ning kasum jagatakse individuaalse pingutuse alusel. Selline ülesehitus soosib omanikutunnet, motiveeritust ja rahulolu tööga, loob täisväärtuslikuma töökogemuse ja takistab kapitalistlikule struktuurile omast jõukuse koondumist. Töötajate vajadustele keskendudes loovad meie kooperatiivid toetavad ja jätkusuutlikud töökeskkonnad, kus on soositud sotsiaalne sidusus ja kindlustunne. Me keskendume ka kohaliku kogukonna huvidele ja mõtleme tulevikule pikas plaanis.",
|
|
||||||
"subheading1": "Meie kooperatiivid",
|
|
||||||
"subheading2": "Euroopa",
|
|
||||||
"name": "Nimi",
|
|
||||||
"location": "Asukoht",
|
|
||||||
"market": "Tegevusala",
|
|
||||||
"status": "Hetkeolukord",
|
|
||||||
"workers": "Töötajad",
|
|
||||||
"contact": "Kontakt",
|
|
||||||
"description": "Kirjeldus",
|
|
||||||
"website": "Veebilehekülg",
|
|
||||||
"wellnessAndHealth": "heaolu ja tervis",
|
|
||||||
"inDevelopment": "arendamisel",
|
|
||||||
"WhatsAppInviteLink": "WhatsAppi link",
|
|
||||||
"DiscordInviteLink": "Discord link",
|
|
||||||
"descriptionChironHealth": "Chiron Health on terviseprogramm, mis pakub toitumise, liikumise, une ja vaimse tervise alaseid kursuseid ja teenuseid.",
|
|
||||||
"herbalTeas": "taimeteed",
|
|
||||||
"kuuskDescription": "Kuusk on internetipood, mis müüb kohalikest metsikutest taimedest valmistatud taimeteid ja pakub ka veebipõhist koriluskursust.",
|
|
||||||
"Cooperative": "Kooperatiiv",
|
|
||||||
"map-prompt": "Tahad, et sind oleks kaardil näha? Võta meiega ühendust!"
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,5 +0,0 @@
|
||||||
{
|
|
||||||
"contactUs": "Võta meiega ühendust",
|
|
||||||
"inviteLink": "link liitumiseks",
|
|
||||||
"libertarianSocialists": "Libertaarsotsialistid"
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
{
|
|
||||||
"groups": "Grupid",
|
|
||||||
"p1": "Me tahame tõsta teadlikkust praeguste poliitilis-majanduslike süsteemide kajulikkusest kõigi heaolule. Me tegeleme vastastikuse abiga ja korraldame ühiseid aktsioone, et tegeleda vahetult kapitalistlikus süsteemis tekkivate probleemidega. Vastastikuse abi raames toetame me üksteist jagades ressursse, teadmisi ja oskuseid, kasvatame solidaarsust ja vastupidavust. Olgu selleks kogukondlikud peenrad, toidukooperatiivid või toetusvõrgustikud, meie eesmärk on muuta elu kapitalismi keskel talutavamaks ning luua süsteemi sisse vastupanu ja alternatiivsete võimaluste mulle.",
|
|
||||||
"subheading1": "Meie grupid",
|
|
||||||
"subheading2": "Euroopa",
|
|
||||||
"location": "Asukoht",
|
|
||||||
"members": "Liikmed",
|
|
||||||
"contact": "Kontakt",
|
|
||||||
"DiscordInviteLink": "Discordi link",
|
|
||||||
"WhatsAppInviteLink": "WhatsAppi link",
|
|
||||||
"Group": "Grupp",
|
|
||||||
"map-prompt": "Tahad, et sind oleks kaardil näha? Loo kasutaja ja mine oma profiilile!"
|
|
||||||
}
|
|
|
@ -1,35 +0,0 @@
|
||||||
{
|
|
||||||
"heading": "Liitu meiega",
|
|
||||||
"condition1": "Kas oled vastu diktatuurile ja pooldad demokraatiat?",
|
|
||||||
"condition2": "Kas oled vastu inimeste omavahelisele ärakasutamisele?",
|
|
||||||
"condition3": "Kas nõustud, et me peaks töötama üksteisega koos, mitte üksteise vastu?",
|
|
||||||
"conditionsOutcome": "Kui vastus on <b>JAH</b>, siis oled juba libertaarsotsialist. <b>LIITU MEIEGA!</b>",
|
|
||||||
"subheading1": "Mida sa saad?",
|
|
||||||
"valueProposition1": "Kogukonna, mis on valmis sind mistahes murede korral aitama;",
|
|
||||||
"valueProposition2": "Ligipääsu meie kooperatiivide tootmisvahenditele;",
|
|
||||||
"valueProposition3": "Tooteid ja teenuseid omahinnaga või isegi tasuta;",
|
|
||||||
"valueProposition4": "Rahalist ja mitterahalist abi oma kooperatiivi ülesseadmisel;",
|
|
||||||
"valueProposition5": "ja veel palju enamat!",
|
|
||||||
"subheading2": "Leia meid",
|
|
||||||
"findOur": "Leia meie",
|
|
||||||
"group": "grupp",
|
|
||||||
"commune": "kommuun",
|
|
||||||
"party": "partei",
|
|
||||||
"or": "või",
|
|
||||||
"cooperative": "kooperatiiv",
|
|
||||||
"nearYou": "enda lähedal ning aita meie kõigi kujutletud maailm tõeks teha.",
|
|
||||||
"noneNear": "Ükski neist ei asu sinu lähedal? Pole probleemi! Liitu meie",
|
|
||||||
"WhatsAppGroup": "WhatsAppi grupiga",
|
|
||||||
"DiscordServer": "Discordi serveriga",
|
|
||||||
"helpStart": " ja me aitame sul need luua.",
|
|
||||||
"location": "Asukoht",
|
|
||||||
"members": "Liikmed",
|
|
||||||
"contact": "Kontakt",
|
|
||||||
"status": "Hetkeolukord",
|
|
||||||
"name": "Nimi",
|
|
||||||
"market": "tegevusala",
|
|
||||||
"workers": "Töötajad",
|
|
||||||
"description": "Kirjeldus",
|
|
||||||
"website": "Veebilehekülg",
|
|
||||||
"map-prompt": "Tahad, et sind oleks kaardil näha? Loo kasutaja ja mine oma profiilile!"
|
|
||||||
}
|
|
|
@ -1,17 +0,0 @@
|
||||||
{
|
|
||||||
"top": "Meie organisatsioon on vabatahtliku kuuluvuse põhimõtte alusel loodud detsentraliseeritud föderatsioon. See koosneb paljudest inimgruppidest üle maailma, keda liidab tahtmine lammutada ärakasutamist soosivad poliitilis-majanduslikud süsteemid. Me soovime need asendada libertaarsotsialistlike süsteemidega, mille aluseks on detsentraliseeritus, otsedemokraatia ja tootmisvahendite kuulumine töötajatele ning mille eesmärk on õiglase, demokraatliku ja jätkusuutliku maailma loomine ning inimeste ja looduse ärakasutamise lõpetamine.",
|
|
||||||
"groupsTitle": "GRUPID",
|
|
||||||
"groupsText": "Me loome hariduse, teadlikkuse, antifašistliku tegevuse ja vastastikuse abi levitamiseks gruppe. Meie eesmärk on näidata, kuidas praegused poliitilis-majanduslikud süsteemid meie heaolu vähendavad, pakkuda välja alternatiivseid viise ja pakkuda vastastikust abi.",
|
|
||||||
"communesTitle": "KOMMUUNID",
|
|
||||||
"communesText": "Me loome libertaarsotsialistlikel põhimõtetel tegutsevaid kommuune, mille liikmed omavad ühiselt maad, hooneid ja tootmisvahendeid ning langetavad otsedemokraatiat rakendades otsuseid. Me laiendame oma sotsialistlikku maailma, üks kommuun korraga.",
|
|
||||||
"cooperativesTitle": "KOOPERATIIVID",
|
|
||||||
"cooperativesText": "Oma gruppide ja kommuunide finantseerimiseks loome me kooperatiive. Kuna majanduslik võim on tihedalt seotud poliitilise võimuga, peame kooperatiivide loomist väga oluliseks.",
|
|
||||||
"partiesTitle": "PARTEID",
|
|
||||||
"partiesText": "Me loome oma tegevust lihtsustavate reformide toetamiseks, Overtoni akna nihutamiseks ja populaarsuse kogumiseks poliitilisi parteisid. Siiski tunnistame, et libertaarsotsialismi pole võimalik saavutada kasutades meie eesmärkidega vastuolus olevaid institutsioone.",
|
|
||||||
"tradeUnionsTitle": "AMETIÜHINGUD",
|
|
||||||
"tradeUnionsText": "Me toetame ametiühinguid, mis annavad töötajatele võime ühiselt õiglast kohtlemist ja palka ning paremaid töötingimusi nõuda. Töökohtades peetav võitlus on meie libertaarsotsialisimi saavutamise strateegia oluline osa.",
|
|
||||||
"findUs": "Leia meid",
|
|
||||||
"whatNow": "Mis edasi?",
|
|
||||||
"joinUs": "Liitu meiega",
|
|
||||||
"talkWithUs": "Räägi meiega"
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
"tableOfContents": "SISUKORD"
|
|
||||||
}
|
|
|
@ -1,14 +0,0 @@
|
||||||
{
|
|
||||||
"orgName": "Libertaarsotsialistid",
|
|
||||||
"manifesto": "Manifest",
|
|
||||||
"joinUs": "Liitu meiega",
|
|
||||||
"initiatives": "Ettevõtmised",
|
|
||||||
"groups": "Grupid",
|
|
||||||
"communes": "Kommuunid",
|
|
||||||
"cooperatives": "Kooperatiivid",
|
|
||||||
"parties": "Parteid",
|
|
||||||
"tradeUnions": "Ametiühingud",
|
|
||||||
"partners": "Partnerid",
|
|
||||||
"login": "Logi sisse",
|
|
||||||
"profile": "Profiil"
|
|
||||||
}
|
|
|
@ -1,14 +0,0 @@
|
||||||
{
|
|
||||||
"parties": "Parteid",
|
|
||||||
"p1": "Me loome oma tegevust lihtsustavate reformide toetamiseks, Overtoni akna nihutamiseks ja populaarsuse kogumiseks poliitilisi parteisid. Siiski tunnistame, et libertaarsotsialismi pole võimalik saavutada kasutades meie eesmärkidega vastuolus olevaid institutsioone. Sellegipoolest tuleb kõiki strateegilisi võimalusi eduks ära kasutada.",
|
|
||||||
"subheading1": "Meie parteid",
|
|
||||||
"name": "Nimi",
|
|
||||||
"location": "Asukoht",
|
|
||||||
"members": "Liikmed",
|
|
||||||
"website": "Veebilehekülg",
|
|
||||||
"contact": "Kontakt",
|
|
||||||
"description": "Kirjeldus",
|
|
||||||
"descriptionRoots": "Oleme Iirimaal tegutsev vasaklibertaarne organisatsioon. Keskendume riigi taristu, valitsemistunnetuse, elamispindade, põllumajandustööstuse ja noortetegevuse uuestiehitamisele.",
|
|
||||||
"Party": "Partei",
|
|
||||||
"map-prompt": "Tahad, et sind oleks kaardil näha? Võta meiega ühendust!"
|
|
||||||
}
|
|
|
@ -1,15 +0,0 @@
|
||||||
{
|
|
||||||
"heading": "Partnerid",
|
|
||||||
"p1": "Me teeme koostööd oma missiooniga ühilduvate organisatsioonidega. Koos oleme jagatud maailmavaatega jõud, mis saab töötada autoritaarsete ärakasutavate süsteemide vastu ja luua nende asemele õiglust ja demokraatiat.",
|
|
||||||
"subheading1": "Meie partnerid",
|
|
||||||
"subheading2": "Veebis",
|
|
||||||
"name": "Nimi",
|
|
||||||
"location": "Asukoht",
|
|
||||||
"website": "Veebilehekülg",
|
|
||||||
"contact": "Kontakt",
|
|
||||||
"description": "Kirjeldus",
|
|
||||||
"typeGaiasFall": "koht aruteludeks",
|
|
||||||
"descriptionGaiasFall": "Gaia's Fall on 'Solarpunk' ideaale, loodussõbralikkust, anarhismi ja antikapitalismi esindav server. Me julgustame inimesi pidama viisakaid vaidlusi, arutlema teooriate ja võimaluste üle ning looma parema maailma kujundamise eesmärgile pühendatud kommuune.",
|
|
||||||
"map-prompt": "Tahad, et sind oleks kaardil näha? Võta meiega ühendust!"
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
{
|
|
||||||
"tradeUnions": "Ametiühingud",
|
|
||||||
"p1": "Ametiühingud mängivad olulist rolli töötajate õiguste ja heaolu kaitsmisel. Ametiühingud on üks meie organisatsiooni põhilisi komponinte, mis laseb töötajatel ühineda ning õiglase palga, paremate töötingimuste ja õiguste saavutamiseks nõupidamisi pidada. Solidaarsust kasvatades ja ühistele tegudele kutsudes panustavad ametiühingud meie üldisesse eesmärki, milleks on ärakasutavate süsteemide kõrvaldamine ning detsentraliseeritud otsustelangetamise, otsedemokraatia ja töötajate isejuhtimise põhimõtetel toimiva maailma loomine.",
|
|
||||||
"subheading1": "Meie ametiühingud",
|
|
||||||
"location": "Asukoht",
|
|
||||||
"members": "Liikmed",
|
|
||||||
"contact": "Kontakt",
|
|
||||||
"TradeUnion": "Ametiühing",
|
|
||||||
"tradeUnion": "ametiühing",
|
|
||||||
"map-prompt": "Tahad, et sind oleks kaardil näha? Võta meiega ühendust!"
|
|
||||||
}
|
|
|
@ -9,5 +9,5 @@
|
||||||
"DiscordInviteLink": "Discord invite link",
|
"DiscordInviteLink": "Discord invite link",
|
||||||
"WhatsAppInviteLink": "WhatsApp invite link",
|
"WhatsAppInviteLink": "WhatsApp invite link",
|
||||||
"Group": "Group",
|
"Group": "Group",
|
||||||
"map-prompt": "Want to appear on our map? Sign up and go to your profile!"
|
"map-prompt": "Want to appear on our map? Contact us!"
|
||||||
}
|
}
|
|
@ -30,6 +30,5 @@
|
||||||
"market": "Market",
|
"market": "Market",
|
||||||
"workers": "Workers",
|
"workers": "Workers",
|
||||||
"description": "Description",
|
"description": "Description",
|
||||||
"website": "Website",
|
"website": "Website"
|
||||||
"map-prompt": "Want to appear on our map? Sign up and go to your profile!"
|
|
||||||
}
|
}
|
|
@ -1,15 +1,13 @@
|
||||||
{
|
{
|
||||||
"top": "Our organization is a decentralized federation build upon the principle of free association. It consists of many groups of people united around a cause of bringing down exploitative politico-economic systems. We aim to replace them with libertarian socialist systems based on decentralization, direct democracy and worker-ownership of the means of production with the goal of creating an equitable, democratic and sustainable world by stopping exploitation of humans and nature.",
|
"top": "Our organization is a decentralized federation build upon the principle of free association. It consists of many groups of people united around a cause of bringing down exploitative politico-economic systems. We aim to replace them with libertarian socialist systems based on decentralization, direct democracy and worker-ownership of the means of production with the goal of creating an equitable, democratic and sustainable world by stopping exploitation of humans and nature.",
|
||||||
"groupsTitle": "GROUPS",
|
"groupsTitle": "GROUPS",
|
||||||
"groupsText": "We organize groups for the purposes of education, advocacy, anti-fascist action and mutual aid. Our objective is to demonstrate how the current politico-economic systems detrimentally impact our well-being, present alternative approaches, and engage in mutual aid.",
|
"groupsText": "We organize groups for the purposes of education, advocacy, and mutual aid. Our objective is to demonstrate how the current politico-economic systems detrimentally impact our well-being, present alternative approaches, and engage in mutual aid to alleviate the challenges of living under capitalism.",
|
||||||
"communesTitle": "COMMUNES",
|
"communesTitle": "COMMUNES",
|
||||||
"communesText": "We establish communes based on libertarian socialist principles, where commune members have ownership over land, houses, and the means of production as well as make decisions using direct democracy. We are gradually expanding our socialist world, one commune at a time.",
|
"communesText": "We establish communes based on libertarian socialist principles, where commune members have ownership over land, houses, and the means of production as well as make decisions using direct democracy. We are gradually expanding our socialist world, one commune at a time.",
|
||||||
"cooperativesTitle": "COOPERATIVES",
|
"cooperativesTitle": "COOPERATIVES",
|
||||||
"cooperativesText": "We form worker cooperatives to finance the operations of our groups and communes. Recognizing that economic power influences political power, we consider the establishment of cooperatives to be a vital activity.",
|
"cooperativesText": "We form worker cooperatives to finance the operations of our groups and communes. Recognizing that economic power influences political power, we consider the establishment of cooperatives to be one of the initial steps towards achieving socialism.",
|
||||||
"partiesTitle": "PARTIES",
|
"partiesTitle": "PARTIES",
|
||||||
"partiesText": "We create political parties in order to push for reforms allowing us to easier further our goals, to move the Overton window as well as to gain popularity. However, we recognize that we cannot achieve libertarian socialism through institutions which act contrary to our goals.",
|
"partiesText": "We create political parties in order to push for reforms allowing us to easier further our goals, to move the Overton window as well as to gain popularity. However, we recognize that we cannot achieve libertarian socialism through institutions which act contrary to our goals.",
|
||||||
"tradeUnionsTitle": "TRADE UNIONS",
|
|
||||||
"tradeUnionsText": "We promote trade unions, which empower laborers to collectively advocate for fair treatment, just wages, and improved working conditions. Struggle at a place of work is an integral part of our strategy to achieve libertarian socialism.",
|
|
||||||
"findUs": "Find Us",
|
"findUs": "Find Us",
|
||||||
"whatNow": "What Now?",
|
"whatNow": "What Now?",
|
||||||
"joinUs": "Join Us",
|
"joinUs": "Join Us",
|
||||||
|
|
|
@ -7,7 +7,6 @@
|
||||||
"communes": "Communes",
|
"communes": "Communes",
|
||||||
"cooperatives": "Cooperatives",
|
"cooperatives": "Cooperatives",
|
||||||
"parties": "Parties",
|
"parties": "Parties",
|
||||||
"tradeUnions": "Trade Unions",
|
|
||||||
"partners": "Partners",
|
"partners": "Partners",
|
||||||
"login": "Login",
|
"login": "Login",
|
||||||
"profile": "Profile"
|
"profile": "Profile"
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
{
|
|
||||||
"tradeUnions": "Trade Unions",
|
|
||||||
"p1": "Trade unions play a pivotal role in safeguarding the rights and welfare of workers. Trade unions constitute an integral part of our organization, allowing workers to unite and collectively negotiate for fair wages, better working conditions, and improved labour rights. By fostering solidarity and mobilizing for collective action, trade unions contribute to our overarching mission of dismantling exploitative systems and ushering in a world centered on decentralized decision-making, direct democracy, and worker self-management.",
|
|
||||||
"subheading1": "Our Trade Unions",
|
|
||||||
"location": "Location",
|
|
||||||
"members": "Members",
|
|
||||||
"contact": "Contact",
|
|
||||||
"TradeUnion": "Trade union",
|
|
||||||
"tradeUnion": "trade union",
|
|
||||||
"map-prompt": "Want to appear on our map? Contact us!"
|
|
||||||
}
|
|
|
@ -1,15 +0,0 @@
|
||||||
{
|
|
||||||
"communes": "Communes",
|
|
||||||
"p1": "Nous établissons des communes socialistes libertaires en aquérant des terres, des logements et les moyens de production qui sont par la suite détenus par les membres desdites communes. Il n'y a pas de propriété privée au sein des communes et, par conséquent, pas non plus ni l'exploitation ni la souffrance qui viennent avec. Les décisions sont prises au moyen de la démocratie directe avec une emphase sur le consensus, afin de s'assurer que chaque membre de la commune ait prise sur les décisions qui affectent sa vie. Les communes s'efforcent d'établir leurs propres coopératives afin de financer leur développement et de devenir économiquement indépendantes et durables, permettant ainsi leur survie et leur croissance. Au sein des communes, on se doit de recourir à l'économie de don aussi souvent que possible. Chaque commune est une petite lueur d'espoir socialiste qui transperce la pénombre du monde capitaliste et qui nous montre à quel point la vie pourrait être belle si nous parvenions à atteindre notre but.",
|
|
||||||
"subheading1": "Nos Communes",
|
|
||||||
"subheading2": "Europe",
|
|
||||||
"location": "Localisation",
|
|
||||||
"status": "Statut ",
|
|
||||||
"members": "Membres ",
|
|
||||||
"contact": "Contact ",
|
|
||||||
"forming": "en formation",
|
|
||||||
"WhatsAppInviteLink": "Lien d'invitation WhatsApp ",
|
|
||||||
"DiscordInviteLink": "Lien d'invitation Discord ",
|
|
||||||
"Commune": "Commune",
|
|
||||||
"map-prompt": "Vous voulez figurer sur notre carte ? Contactez-nous !"
|
|
||||||
}
|
|
|
@ -1,16 +0,0 @@
|
||||||
{
|
|
||||||
"heading": "Communautés",
|
|
||||||
"p1": "Nous établissons des communautés socialistes libertaires en aquérant des terres, des logements et les moyens de production qui sont par la suite détenus par les membres desdites communautés. Il n'y a pas de propriété privée au sein des communautés et, par conséquent, pas non plus ni l'exploitation ni la souffrance qui viennent avec. Les décisions sont prises au moyen de la démocratie directe avec une emphase sur le consensus, afin de s'assurer que chaque membre de la commune ait prise sur les décisions qui affectent sa vie. Les communautés s'efforcent d'établir leurs propres coopératives afin de financer leur développement et de devenir économiquement indépendantes et durables, permettant ainsi leur survie et leur croissance. Au sein des communautés, on se doit de recourir à l'économie de don aussi souvent que possible. Chaque communauté est une petite lueur d'espoir socialiste qui transperce la pénombre du monde capitaliste et qui nous montre à quel point la vie pourrait être belle si nous parvenions à atteindre notre but.",
|
|
||||||
"subheading1": "Nos Communautés",
|
|
||||||
"subheading2": "Europe",
|
|
||||||
"location": "Localisation ",
|
|
||||||
"status": "Statut ",
|
|
||||||
"members": "Membres ",
|
|
||||||
"contact": "Contact ",
|
|
||||||
"EstoniaKohtlaJarve": "Estonie, Kohtla-Järve",
|
|
||||||
"forming": "en formation",
|
|
||||||
"WhatsAppInviteLink": "Lien d'invitation WhatsApp ",
|
|
||||||
"DiscordInviteLink": "Lien d'invitation Discord ",
|
|
||||||
"CanadaMontreal": "Canada, Montréal",
|
|
||||||
"Latvia": "Lettonie"
|
|
||||||
}
|
|
|
@ -1,120 +0,0 @@
|
||||||
{
|
|
||||||
"heading": "Boussole politique",
|
|
||||||
"qs": [
|
|
||||||
{
|
|
||||||
"q": "La production devrait être régie par... ",
|
|
||||||
"as": [
|
|
||||||
["l'intiative entrepreneuriale et la richesse individuelles",["C"]],
|
|
||||||
["les directives et les planifications décidées par les responsables",["V"]],
|
|
||||||
["la prise de décision et l'adhésion collectives",["LS"]]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"q": "Le pouvoir décisionnel devrait appartenir à...",
|
|
||||||
"as": [
|
|
||||||
["ceux et celles qui possèdent le lieu en raison de leur richesse ou de leur pouvoir politique",["C"]],
|
|
||||||
["ceux et celles qui y travaillent",["LS"]]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"q": "La répartition du travail devrait se faire selon...",
|
|
||||||
"as": [
|
|
||||||
["les opportunités sur le marché de l'emploi et la richesse",["C"]],
|
|
||||||
["les directives et tâches fixées par les responsables",["V"]],
|
|
||||||
["la planification collective et l'allocation équitable en fonction des besoins sociétaux",["LS"]]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"q": "Les moyens de production devraient être détenus et contrôlés par...",
|
|
||||||
"as": [
|
|
||||||
["les personnes aisées",["C"]],
|
|
||||||
["les responsables de l'appareil d'état",["V"]],
|
|
||||||
["la communauté toute entière",["LS"]]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"q": "Les processus de production devraient prioriser...",
|
|
||||||
"as": [
|
|
||||||
["la réduction des coûts",["C"]],
|
|
||||||
["ce que disent les responsables",["V"]],
|
|
||||||
["les besoins et la durabilité",["LS"]]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"q": "La croissance infinie de la production mène à...",
|
|
||||||
"as": [
|
|
||||||
["tout un tas de bonnes choses",["C","V"]],
|
|
||||||
["la destruction de notre planète",["LS"]]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"q": "La distribution devrait être organisée selon...",
|
|
||||||
"as": [
|
|
||||||
["la richesse",["C"]],
|
|
||||||
["ce que disent les responsables",["V"]],
|
|
||||||
["ce sur quoi s'accorde le collectif",["LS"]]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"q": "Les réseaux de sécurité sociale devraient être...",
|
|
||||||
"as": [
|
|
||||||
["minimisés pour encourager la responsabilisation des individus",["C"]],
|
|
||||||
["contrôlées et alloués par les responsables",["V"]],
|
|
||||||
["adaptés et pourvus sur la base de la responsabilité collective",["LS"]]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"q": "L'accès à l'éducation devrait être...",
|
|
||||||
"as": [
|
|
||||||
["conditionné aux moyens financiers",["C"]],
|
|
||||||
["régulé et contrôlé par les responsables de sorte à susciter certaines valeur sociétales",["V"]],
|
|
||||||
["garanti en tant que droit universel",["LS"]]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"q": "La majorité des personnes sont...",
|
|
||||||
"as": [
|
|
||||||
["incapables de prendre de bonnes décisions et doivent être menées tels des moutons",["C","V"]],
|
|
||||||
["capables de prendre de bonnes déicisions pour peu qu'on leur en accorde l'opprtunité et une certaine indépendance",["LS"]]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"q": "Le pouvoir corrompt...",
|
|
||||||
"as": [
|
|
||||||
["parfois, c'est pourquoi il nous faut plusieurs groupes de personnes en charge qui s'échangent le pouvoir entre eux de temps en temps selon qui a réalisé la meilleure campagne électorale",["C"]],
|
|
||||||
["tout le monde sauf nos dictateurs suprêmes bienfaisants",["V"]],
|
|
||||||
["tout le monde",["LS"]]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"q": "Les décisions devraient être prise d'après...",
|
|
||||||
"as": [
|
|
||||||
["ce que disent les responsables",["C","V"]],
|
|
||||||
["l'approbation collective",["LS"]]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"q": "L'usage de la violence est...",
|
|
||||||
"as": [
|
|
||||||
["justifié pour permettre aux responsables de rester au pouvoir",["C","V"]],
|
|
||||||
["inacceptable",["LS"]]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"q": "L'innovation et le développement technologique devraient être motivés par...",
|
|
||||||
"as": [
|
|
||||||
["la compétition du marché et les incitations individuelles",["C"]],
|
|
||||||
["les objectifs instaurés par les responsables",["V"]],
|
|
||||||
["la recherche collective et le partage des connaissances",["LS"]]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"q": "Les droits de propriété intellectuelle devraient appartenir...",
|
|
||||||
"as": [
|
|
||||||
["aux inventeurs individuels ou à leurs employeurs",["C"]],
|
|
||||||
["aux responsables qui réglementent et contrôlent la propriété intellectuelle",["V"]],
|
|
||||||
["à la communauté et au partage des savoirs",["LS"]]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
|
@ -1,24 +0,0 @@
|
||||||
{
|
|
||||||
"cooperatives": "Coopératives",
|
|
||||||
"p1": "Nous établissons des coopératives ouvrières, qui sont un modèle d'entreprise où les travailleurs et les travailleuses détiennent et contrôlent l'entreprise. Chacun et chacune a une voix dans la prise de décision et les profits sont répartis selon les contributions individuelles. Cette structure participative entretient le sentiment de repossession, de motivation et de satisfaction pour son travail, en instituant une expérience de travail plus épanouissante tout en luttant contre la concentration de la richesse dans les entreprises capitalistes traditionnelles. En mettant l'accent sur les besoins des travailleurs et des travailleuses, nos coopératives participent à créer des environnements de travail respectueux et durables qui favorisent la cohésion sociale et la sécurité de l'emploi. Nous priorisons également les intérêts des communautés locales en adoptant une perspective à long-terme.",
|
|
||||||
"subheading1": "Nos Coopératives",
|
|
||||||
"subheading2": "Europe",
|
|
||||||
"name": "Nom ",
|
|
||||||
"location": "Localisation ",
|
|
||||||
"market": "Marché ",
|
|
||||||
"status": "Statut ",
|
|
||||||
"workers": "Travailleurs et Travailleuses ",
|
|
||||||
"contact": "Contact ",
|
|
||||||
"description": "Description ",
|
|
||||||
"website": "Site internet",
|
|
||||||
"wellnessAndHealth": "bien-être et santé",
|
|
||||||
"inDevelopment": "en développement",
|
|
||||||
"WhatsAppInviteLink": "Lien d'invitation WhatsApp ",
|
|
||||||
"DiscordInviteLink": "Lien d'invitation Discord ",
|
|
||||||
"descriptionChironHealth": "Chiron Health est une plateforme de santé proposant des cours et des enseignement sur des sujets comme la nutrition, l'exercice physique, le sommeil et la santé mentale.",
|
|
||||||
"herbalTeas": "tisanes",
|
|
||||||
"kuuskDescription": "Kuusk est un magasin en ligne qui propose des tisanes provenant exclusivement de plantes sauvages locales, ainsi que des cours de cueillette en ligne.",
|
|
||||||
"Cooperative": "Coopérative",
|
|
||||||
"map-prompt": "Vous voulez figurer sur notre carte ? Contactez-nous !"
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,5 +0,0 @@
|
||||||
{
|
|
||||||
"contactUs": "Nous Contacter",
|
|
||||||
"inviteLink": "Lien d'Invitation ",
|
|
||||||
"libertarianSocialists": "Socialistes Libertaires"
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
{
|
|
||||||
"groups": "Groupes",
|
|
||||||
"p1": "Nous cherchons à sensibiliser aux impacts négatifs des systèmes politico-économiques actuels sur notre bien-être. Nous mettons en oeuvre entraide et action collective pour faire face aux défis immédiats que nous impose le capitalisme. Par l'entraide, nous nous soutenons les uns les autres en partageant ressources, savoirs et compétences, favorisant ainsi la solidarité et la résilience. Que ce soit au travers de jardins communautaires, de coopératives alimentaires, ou de réseaux de soutien, notre objectif est de rendre la vie sous le capitalisme plus supportable et de créer des poches de résistance et des alternatives à l'intérieur même de l'ordre en place.",
|
|
||||||
"subheading1": "Nos Groupes",
|
|
||||||
"subheading2": "Europe",
|
|
||||||
"location": "Localisation ",
|
|
||||||
"members": "Membres ",
|
|
||||||
"contact": "Contact ",
|
|
||||||
"DiscordInviteLink": "Lien d'invitation Discord ",
|
|
||||||
"WhatsAppInviteLink": "Lien d'invitation WhatsApp ",
|
|
||||||
"Group": "Groupe ",
|
|
||||||
"map-prompt": "Vous voulez figurer sur notre carte ? Inscrivez-vous et rendez-vous sur votre profil !"
|
|
||||||
}
|
|
|
@ -1,35 +0,0 @@
|
||||||
{
|
|
||||||
"heading": "Nous Rejoindre",
|
|
||||||
"condition1": "Tu t'opposes à la dictature et tu lui préfères la démocratie ?",
|
|
||||||
"condition2": "Tu refuses l'exploitation d'un humain sur un autre ?",
|
|
||||||
"condition3": "Tu reconnais que nous devrions travailler ensemble et non les uns contres les autres ?",
|
|
||||||
"conditionsOutcome": "Si tu as répondu <b>OUI</b>, alors tu es déjà un socialiste libertaire. <b>REJOINS-NOUS !</b>",
|
|
||||||
"subheading1": "Ce Que Tu Obtiendras",
|
|
||||||
"valueProposition1": "Une communauté toujours prête à t'aider avec tous tes ennuis ;",
|
|
||||||
"valueProposition2": "L'accès aux moyens de production de nos coopératives ;",
|
|
||||||
"valueProposition3": "Des produits et des services à prix coûtant voire gratuits ;",
|
|
||||||
"valueProposition4": "Une aide financière et non-fiancière dans le montage de ta propre coopérative ;",
|
|
||||||
"valueProposition5": "et bien plus encore !",
|
|
||||||
"subheading2": "Nous Trouver",
|
|
||||||
"findOur": "Trouve ici nos",
|
|
||||||
"group": "groupes",
|
|
||||||
"commune": "communes",
|
|
||||||
"party": "partis",
|
|
||||||
"or": "ou",
|
|
||||||
"cooperative": "coopératives",
|
|
||||||
"nearYou": "proche de chez toi et rejoins-les pour contribuer à bâtir le monde auquel nous aspirons.",
|
|
||||||
"noneNear": "Il n'y a rien près de chez toi ? Pas de problème ! Rejoins notre",
|
|
||||||
"WhatsAppGroup": "Groupe WhatsApp",
|
|
||||||
"DiscordServer": "Server Discord",
|
|
||||||
"helpStart": " et nous t'aiderons à bâtir les tiens propres.",
|
|
||||||
"location": "Localisation ",
|
|
||||||
"members": "Membres ",
|
|
||||||
"contact": "Contact ",
|
|
||||||
"status": "Statut ",
|
|
||||||
"name": "Nom ",
|
|
||||||
"market": "Marché ",
|
|
||||||
"workers": "Travailleurs et Travailleuses ",
|
|
||||||
"description": "Description ",
|
|
||||||
"website": "Site internet ",
|
|
||||||
"map-prompt": "Vous voulez figurer sur notre carte ? Inscrivez-vous et rendez-vous sur votre profil !"
|
|
||||||
}
|
|
|
@ -1,17 +0,0 @@
|
||||||
{
|
|
||||||
"top": "Notre organisation est une fédération décentralisée fondée sur les principes de la libre association. Elle est composée d'une myriade de groupes d'individus rassemblés autour d'une même cause, celle d'abattre les systèmes politico-économiques d'exploitation. Nous cherchons à les remplacer par des systèmes socialistes libertaires fondés sur la décentralisation la démocratie directe et la propriété ouvrière des moyens de production dans l'optique de créer un monde équitable, démocratique et durable en stoppant l'exploitation des humains et de la nature.",
|
|
||||||
"groupsTitle": "GROUPES",
|
|
||||||
"groupsText": "Nous organisons des groupes afin d'éduquer, de militer ainsi que de mener des actions antifascistes et d'entraide. Notre objectif est de démontrer comment les systèmes politico-économiques actuels nuisent à notre bien-être, à mettre en avant des approches alternatives et à mettre en oeuvre l'entraide que nous prônons.",
|
|
||||||
"communesTitle": "COMMUNES",
|
|
||||||
"communesText": "Nous établissons des communes sur la base des principes socialistes libertaires, où les individus sont propriétaires de leur terre, de leurs maisons, et des moyens de production et où ils et elles peuvent prendre des décisions par le biais de la démocratie directe. Nous propageons graduellement notre monde socialiste, une commune à la fois.",
|
|
||||||
"cooperativesTitle": "COOPERATIVES",
|
|
||||||
"cooperativesText": "Nous formons des coopératives ouvrières pour financer les opérations de nos groupes et de nos communautés. Reconnaissant que le pouvoir économique influence le pouvoir politique, nous considérons l’établissement de coopératives comme une des étapes initiales vers l’avènement du socialisme.",
|
|
||||||
"partiesTitle": "PARTIS",
|
|
||||||
"partiesText": "Nous créons des partis politiques dans l'optique de promouvoir des réformes nous permettant plus facilement de mettre en oeuvre nos objectifs, de déplacer la fenêtre d'Overton ainsi que de gagner en popularité. Cependant, nous avons conscience que nous ne pourrons parvenir au socialisme libertaire par le biais des institutions qui luttent à son encontre.",
|
|
||||||
"tradeUnionsTitle": "SYNDICATS",
|
|
||||||
"tradeUnionsText": "Nous promouvons les syndicats qui émancipent et organisent les travailleurs et les travailleuses en militant pour un traitement et un salaire justes ainsi que pour une amélioration des conditions de travail. La lutte sur le lieu de travail est partie intégrante de notre stratégie dans l'avènement du socialisme libertaire.",
|
|
||||||
"findUs": "Nous Trouver",
|
|
||||||
"whatNow": "Et Maintenant ?",
|
|
||||||
"joinUs": "Nous Rejoindre",
|
|
||||||
"talkWithUs": "Discuter Avec Nous"
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
"tableOfContents": "SOMMAIRE"
|
|
||||||
}
|
|
|
@ -1,145 +0,0 @@
|
||||||
# Du Capitalisme et de l’Étatisme<br>Y a-t-il une meilleure voie ?
|
|
||||||
|
|
||||||
## Le Capitalisme
|
|
||||||
### Ses Principes fondamentaux
|
|
||||||
Le capitalisme est un système politique et économique, vanté comme une boussole de liberté et d’opportunité, qui mène à l’exploitation du grand nombre dans le but d’accroître la richesse et le pouvoir d’une minorité, et ce au prix d’une perte de dignité pour tous et toutes. Si nous prenons le temps d’examiner les principes fondamentaux de ce système, les raisons qui conduisent à cet état de fait nous apparaissent clairement :
|
|
||||||
<b>La Recherche du Profit :</b> Le capitalisme se caractérise par une quête acharnée du profit privé comme principal moteur de l’activité économique. À l’intérieur de ce système, les bénéfices destinés aux propriétaires des entreprises priment sur les considérations de bien-être humain, de besoins sociaux et de durabilité environnementale.
|
|
||||||
La centralité pour l’entreprise de la recherche du profit, couplée à l’impossibilité inhérente des propriétaires de se montrer représentatif/ve/s de leurs travailleur/se/s ainsi qu’à leurs intérêts de classe divergents, mène à des mesures qui font peser les coûts sur les consommateur/rice/s, sur les travailleur/se/s et sur l’environnement, et qui leur extorque leur plus-value. L’asymétrie du pouvoir au sein de ce système conduit à une relation classiste d’exploitation entre les propriétaires et les non-propriétaires, en tant que la représentation des intérêts des individus n’est pas proportionnelle à leur participation et à leur importance dans la société. Non seulement ce système va-t-il à l’encontre des intérêts du gros de la société qui ne constitue pas cette classe possédante, mais il est même moins efficace dans la création de la plus-value que les propriétaires extraient des entreprises. La clé de l’échec de ce système centré sur le profit réside dans le concept même de propriété privée.
|
|
||||||
<b>La Propriété Privée des Moyens de Production :</b> Le principe au centre du capitalisme est celui de « propriété privée des moyens de production », c’est-à-dire de l’existence d’une classe d’individus détenant le monopole des ressources, des installations, des outils et des terres nécessaires à la production de biens et de services pour la société. Une telle concentration de la propriété entraîne une asymétrie considérable du pouvoir puisque que la classe capitaliste détient un monopole de contrôle sur la société dans son ensemble, tandis que la majeure partie de la population (la classe laborieuse) est contrainte de vendre sa force de travail à cette classe possédante (capitaliste) pour gagner sa vie. Cette disproportion de la propriété, qui est au centre de l’organisation de nos sociétés, permet une division fondamentale des intérêts sociétaux entre celles et ceux qui la détiennent et celles et ceux qui en pâtissent. Cette relation antagonique prive non seulement de pouvoir celles et ceux qui sont exploité/e/s en particulier, mais également la société dans son ensemble étant donné qu’afin de maintenir cette dynamique entre propriétaires et non-propriétaires, la classe laborieuse (et consommatrice) doit rester divisée, désorganisée et impuissante à part pour tout ce qui sert au maintien de cette relation parasitaire. Cette configuration restreint artificiellement les choix de société, tant collectivement qu’individuellement, et engendre des divisions artificielles et injustifiées entre les individus plutôt que de permettre des efforts coordonnés vers des buts qui seraient partagés par tous et toutes, dont les seules limites seraient le monde matériel que nous habitons et nos propres décisions en tant qu’individus y prenant part.
|
|
||||||
<b>L’Exploitation du Travail :</b> Sous le capitalisme, la recherche du profit motive seule la relation entre la classe capitaliste et la classe ouvrière. La classe capitaliste cherche à maximiser ses profits en soutirant la plus-value de leur labeur aux travailleur/se/s. Cette exploitation se traduit sous la forme du salariat, par lequel les travailleur/se/s sont payé/e/s une fraction de la valeur qu’ils et elles produisent par leur travail. Cette plus-value, à savoir la différence entre la valeur que les travailleur/se/s produisent et le salaire qui leur est reversé, est accaparée par la classe capitaliste sous la forme de profit. Cette relation d’exploitation, ancrée dans le mode de production capitaliste, perpétue les inégalités sociales et économiques puisque les travailleur/se/s sont constamment privé/e/s de la valeur totale de leur travail.
|
|
||||||
Tout comme une maison requiert une fondation solide pour tenir, tout système ordonnant nos vies exige une base robuste pour soutenir sa structure. Malheureusement, le capitalisme repose sur des fondations intrinsèquement défaillantes qui mènent à des asymétries de pouvoir, à l’exploitation économique, à la compromission du bien-être collectif et à la perte de sens dans son travail. Il est évident que tant que l’ordre en place ne s’emparera pas de ces défauts fondamentaux, il ne saura jamais répondre aux attentes d’une société juste et égalitaire.
|
|
||||||
### Le Prix Que Nous Payons
|
|
||||||
Le Capitalisme présente de nombreuses problématiques systémiques reliées entre elles qui impactent, d’une manière ou d’une autre, le bien-être de chacune des personnes à qui il s’impose.
|
|
||||||
<b>L’Aliénation par le Travail :</b> Dans sa recherche de profit et de compétition, le capitalisme brise notre relation humaine innée avec le travail porteur de sens, ne nous laissant plus qu’un sentiment de déconnexion et d’aliénation. À mesure que le profit devient le but ultime, nous nous trouvons souvent réduit/e/s à de simples rouages dans la machinerie économique. Cette aliénation par le travail vient saper notre besoin de sens et d’accomplissement, étouffant ainsi notre créativité et notre potentiel.
|
|
||||||
<b>Le Vol de Notre Travail :</b> L’idée centrale du capitalisme est l’accaparement de notre travail. En nous rémunérant moins que la valeur que nous produisons, la classe capitaliste nous extorque du surtravail à nous, la classe laborieuse. Cette exploitation entretient les inégalités économiques, puisqu’on nous dépossède de la part du fruit de notre travail qui nous revient pourtant de droit. L’écart de richesse qui en résulte attise le sentiment d’impuissance et d’injustice, accroissant plus encore le clivage entre les possédant/e/s et celles et ceux qui n’ont rien.
|
|
||||||
<b>La Fragmentation Sociale :</b> L’enracinement du capitalisme dans la recherche frénétique du profit individuel érode les liens de coopération et de cohésion sociale authentique entre les individus. En outre, l’état d’esprit du chacun pour soi impitoyable entretenu par le capitalisme place l’intérêt personnel au-dessus du bien-être collectif, déchirant ainsi le tissu social. Dans cet environnement d’hyper-compétitivité, nos liens sociaux sont fragilisés, notre empathie atrophiée et nos communautés fragmentées.
|
|
||||||
<b>Le Consumérisme et le Matérialisme :</b> Sous le joug capitaliste prospère une culture consumériste et matérialiste, qui fait coïncider la valeur personnelle avec l’accumulation de possessions matérielles. Cette quête effrénée de biens matériels nous mène souvent tout droit à l’endettement excessif, pèse sur nos relations et nous laisse avec un sentiment bien creux d’accomplissement. La fixation sur la richesse matérielle éclipse la quête d’expériences épanouissantes, de mûrissement personnel ainsi que d’un véritable bien-être, nous enfermant dans un cycle de consommation sans fin.
|
|
||||||
<b>La Destruction Environnementale :</b> La faim insatiable du capitalisme pour les bénéfices privés ne prend pas en compte l’équilibre écologique à long-terme de notre planète. Les bénéfices à court-terme prennent le pas sur les considérations de durabilité de l’environnement. Les pratiques capitalistes conduisent à l’épuisement des ressources, à la pollution et au dérèglement climatique, compromettant ainsi les fondements mêmes de notre équilibre écologique. La relation d’exploitation entre, d’une part la classe propriétaire capitaliste, et d’autre part, les travailleur/se/s et les consommateur/rice/s s’étend au contrôle de toutes les ressources naturelles et à l’équilibre écologique de la planète entière, sur laquelle le capitalisme est parvenu à instaurer sa domination.
|
|
||||||
Les valeurs et pratiques constituantes du capitalisme s’étendent bien au-delà de considérations purement économiques, imprégnant chaque facette de nos vies.
|
|
||||||
## L’Étatisme
|
|
||||||
### Le Rôle de l’État
|
|
||||||
L’État est une institution centralisée qui régit un territoire spécifique, et la population qui l’habite, et au sein duquel il maintient le monopole de l’organisation politique hors de portée de la majorité. La notion d’État peut recouvrir un large éventail de structures, de systèmes légaux, d’appareils bureaucratiques et de forces publiques. L’État se pique de représenter les intérêts collectifs de la population, de maintenir l’ordre et de fournir des services publics. Cependant, même le fonctionnement des services publics qu’il arrive à l’État de fournir ne sera accordé que dans le cadre étroit qui profite à l’État ; un organe politique étranger aux intérêts de classe d’une population qu’il prétend représenter.
|
|
||||||
<b>L’Appareil Répressif :</b> Tant qu’un organe politique public maintient le monopole du pouvoir politique hors de portée du contrôle collectif de la population qu’il gouverne, c’est un État. Si un État ne défend plus les intérêts de classe fondamentalement étrangers à ceux de la population qu’il se pique de représenter, il cesse d’être un État et devient simplement le cadre organisationnel collectif constitué par la population sous son égide. Tout comme n’importe quel autre système social, l’État cherche à maintenir sa propre existence par tous les moyens à sa portée, ce qui l’amène à réprimer toute atteinte à son pouvoir, qu’elle vienne de l’étranger ou de l’intérieur de ses frontières, et ce même s’il faut aller à l’encontre des intérêts de la majorité afin de maintenir son emprise sur sa population.
|
|
||||||
<b>La Préservation de la Hiérarchie :</b> Derrière son masque de serviteur du peuple, l’État cherche avant tout à défendre et à faire progresser les intérêts de la classe dirigeante, dont les valeurs s’incarnent dans l’appareil d’État, en jouant un rôle crucial dans le maintien des hiérarchies sociales. Par l’application de lois ou de réglementations, l’État protège le droit à la propriété privée, s’assurant ainsi de l’accumulation de richesse pour la classe dirigeante et du maintien des inégalités économiques.
|
|
||||||
<b>L’Autopréservation :</b> Un État doit en outre s’atteler à son autopréservation, démarche qui va au-delà de la simple défense des intérêts de la classe régnante. L’autopréservation se réfère à la tendance inhérente à l’État de maintenir son autorité et son existence en tant qu’institution. L’État, en tant qu’il est une entité centralisée, cherche à assurer sa propre sauvegarde par la coercition, la propagande manipulatrice et le sabotage des organisations politiques qui menacent son autorité sur sa population. Cet instinct d’autopréservation n’est pas véritablement mû par les intérêts de sa population, mais plutôt par l’intérêt mutuel de la classe possédante et de l’État à maintenir leur contrôle sur la population et sur le territoire qu’ils gouvernent. Tandis que la classe dirigeante profite généralement du système d’autopréservation de l’État, il faut néanmoins reconnaître que la classe régnante propriétaire et l’État ne partagent pas systématiquement des intérêts communs, en particulier dans des démocraties plus libérales qui ne présentent pas nécessairement une unité État/privé absolue à l’instar des dictatures fascistes ou totalitaires, d’autant que chacune des deux parties dispose d’un degré de pouvoir variable en fonction du système en place.
|
|
||||||
<b>La Manipulation et la Propagande :</b> L’État façonne également l’opinion publique par le biais de systèmes éducatifs et contrôle les organes médiatiques à travers une influence politique « soft » sur les médias privés, ou même en plaçant directement ces médias sous la tutelle de l’État. En contrôlant le prisme et l’orientation du récit, l’État peut influer sur ce que que pense et croit la population. Ce contrôle exercé sur la communication de masse vise à créer un sentiment d’adhésion et à conférer une légitimité aux actes de l’État, au mépris de leur réelle et authentique légitimité ou non. Ce contrôle vient remplacer ou s’additionner aux méthodes telles que la violence étatique directe ou les menaces envers la population, afin de contraindre celle-ci à obtempérer.
|
|
||||||
|
|
||||||
### La Démocratie Libérale
|
|
||||||
On nous soutient que la démocratie libérale incarne un système conçu « par et pour le peuple ». Cependant, en tant qu’il existe un État qui défend des intérêts fondamentalement antagoniques à ceux de la multitude, cette affirmation ne sert à rien d’autre qu’à camoufler un système autoritaire et sape les supposés principes démocratiques que ledit État prétend pourtant défendre, tels que la liberté d’expression, les élections libres et justes, la transparence et la responsabilité, l’égalité, etc.
|
|
||||||
<b>La Déconnexion :</b> Nous sommes tous et toutes envahi/e/s par un profond sentiment de déconnexion, ce qui entraîne une faible participation aux élections, et notre sentiment de pouvoir impacter les décisions qui modèlent nos vies s’étiole jour après jour. Nous sommes désabusé/e/s de la politique, sceptiques de l’efficacité des systèmes électoraux et la trahison de la confiance que nous avions placée dans nos institutions politiques a parachevé cette déconnexion. Quand on se sent aliéné/e du processus décisionnaire, on perd l’espoir qu’un changement positif puisse se réaliser au sein du système actuel, dont on nous interdit de plus de penser la subversion.
|
|
||||||
<b>La Manipulation :</b> Les partis emploient pernicieusement des tactiques fourbes, agitant des promesses de campagnes mensongères et une rhétorique sensationnaliste pour nous soutirer notre vote. Nos choix sont façonnés par des manœuvres calculées, amputant notre possibilité de procéder à des décisions informées.
|
|
||||||
<b>Le Manque de Culture Politique :</b> La majeure partie des votant/e/s n’ont pas de culture, de conscience ou de compréhension suffisante des systèmes et des mesures politiques pour saisir la portée de leurs choix, ou d’ailleurs l’existence même de tel ou tel choix. Néanmoins, la faute n’est pas à rejeter sur les votants, c’est une externalité intentionnelle du système en place. Il est plus aisé de nous contrôler quand la compréhension de l’essence et du fonctionnement de la politique nous fait défaut ; alors, il ne suffit plus que d’une bonne campagne de promotion pour nous imposer le mode de pensée voulu. Ne disposant pas d’une compréhension solide des enjeux, nous soutenons sans le savoir des candidats qui ne défendent pas nos intérêts, mettant ainsi en péril l’essence même de la démocratie.
|
|
||||||
<b>Des Choix Imposés :</b> Les élections périodiques qui viennent ponctuer notre système démocratique nous présente une offre de choix abominablement restreinte. Les partis politiques en lice présélectionnent leurs candidats, réduisant ainsi le spectre des possibilités pour les votant/e/s. Cette sélection imposée empêche la représentation de perspectives et d’intérêts divers, sapant ainsi les principes d’inclusivité et de représentativité au cœur de la démocratie.
|
|
||||||
Ces contraintes favorisent l’illusion de la participation, ce qui nuit à l’essence véritable de la démocratie. Vient s’y ajouter le déséquilibre profond du pouvoir, avec une classe capitaliste exerçant sa domination via un éventail de divers mécanismes d’influence. Cette domination qui modèle les implications de nos mesures politiques, perpétuant ainsi les inégalités au sein de nos systèmes politiques capitalistes.
|
|
||||||
<b>La Puissance des Lobbys :</b> La classe capitaliste, dotée de vaste ressources financières et de réseaux influents, peut maintenir des canaux privilégiés auprès du législateur et du processus décisionnaire. Cet accès inégal entretient un déséquilibre de pouvoir systémique, pavant la voie à des politiques qui servent en priorité les intérêts de l’élite bourgeoise. Les principes de représentation et de participation démocratique égalitaires viennent à s’effondrer sous le poids de cet accès à géométrie variable.
|
|
||||||
<b>L’Influence Médiatique et son Contrôle Capitaliste :</b> La classe capitaliste fait montre d’un remarquable et considérable contrôle, ou en tous cas influence, sur les relais médiatiques, contribuant activement à la manipulation de l’opinion publique et du discours politique de sorte à appuyer son agenda. Cette poigne de fer sur les canaux médiatiques renforce la domination des capitalistes, cimentant leur pouvoir et étouffant la portée d’idées et de perspectives diverses auprès du public.
|
|
||||||
<b>La Coercition Économique :</b> Les capitalistes ont la possibilité d’exercer une coercition économique, jouant de leur influence pour menacer de délocaliser leurs entreprises ou d’appliquer des mesures qui pourraient précipiter un ralentissement économique. La simple évocation de potentielles répercussions économiques suffit à susciter la terreur, contraignant le législateur à remodeler ses politiques de manière à apaiser la classe capitaliste, même si cela veut dire compromettre le bien-être et les intérêts des citoyens qui ne possèdent pas.
|
|
||||||
La classe capitaliste brandit ses ressources considérables, se constituant un puissant arsenal à trois facettes : lobbys, médias et coercition économique. Ces mécanismes d’influence entretiennent les inégalités et façonnentl’issue des mesures politiques de façon à favoriser la classe capitaliste, portant un coup dévastateur aux principes d’égalité de représentation et de bien-être collectif du reste de la population.
|
|
||||||
### L’Avant-Gardisme
|
|
||||||
L’avant-gardisme désigne une approche singulière qui prétend représenter les intérêts de la classe ouvrière. La plupart des révolutions « communistes » et des États qui en ont émergé, tels l’URSS ou la République populaire de Chine, se réclamaient de cette approche. Cependant, un examen critique de l’avant-gardisme permet de révéler son impact nocif sur les populations mêmes dont il prétend défendre les intérêts, affaiblissant par là même la classe ouvrière et entravant sérieusement la lutte de cette dernière pour sa libération.
|
|
||||||
<b>L’Instauration d’un Capitalisme d’État :</b> L’avant-gardisme promeut la concentration du pouvoir entre les mains uniques d’un groupe ou d’un parti qui se pique de détenir une connaissance et une compréhension supérieures de la véritable voie révolutionnaire. Le parti d’avant-garde et l’appareil d’État, en prenant le contrôle des moyens de production et de distribution, se constitue en une nouvelle classe dominante, semblable à la classe bourgeoise sous le capitalisme de marché. Si initialement les partisans de l’avant-garde peuvent sincèrement chercher un moyen de transition vers le socialisme ou le communisme, la centralisation du pouvoir inhérente à l’avant-gardisme entretient une forme de capitalisme d’État où l’État et le parti au pouvoir maintiennent leur contrôle sur l’économie et la société, nuisant à la quête pour l’authentique émancipation et la propriété collective.
|
|
||||||
<b>L’Aliénation :</b> Les idéologies d’avant-garde insistent sur l’idée qu’elles représentent la classe ouvrière. Cependant dans la pratique, cette représentation n’est pas conforme aux vécus et aux aspirations de celle-ci. L’avant-garde, en tant qu’elle est une classe dominante et la représentante autoproclamée des classes populaires, est incapable de saisir les nuances, la diversité et la complexité de la classe laborieuse, menant à un sens d’aliénation et de déconnexion. Cette distance érode les principes démocratiques de la participation et de la prise de décision collectives.
|
|
||||||
<b>Assujettissement :</b> Les idéologies avant-gardistes tendent à percevoir les mouvements d’initiative horizontale et l’organisation autonome comme une menace à leur pouvoir centralisé. Plutôt que de susciter une culture de collaboration et d’émancipation, les approches avant-gardistes préfèreront s’octroyer le droit de décider quelles initiatives autoriser selon si elles remettent en cause leur domination ou pas. Cet étouffement des actions d’initiative horizontale restreint le potentiel d’un changement organique allant du bas vers le haut, et empêche la classe ouvrière de pleinement accomplir sa propre libération
|
|
||||||
L’approche avant-gardiste qui consiste à imposer depuis en haut s’est montrée nuisible à la classe ouvrière et à sa lutte d’émancipation. La seule manière de permettre aux intérêts des classes laborieuses d’être authentiquement pris en compte est de voir cette classe prendre le contrôle de sa propre vie et être libre de prendre ses propres décisions.
|
|
||||||
## Cadre Théorique
|
|
||||||
La critique formulée précédemment se fonde sur des ouvrages tels que Le Capital, Critique de l’économie politique de Karl Marx et L’Homme unidimensionnel, Essai sur l’idéologie de la société industrielle avancée de Herbert Marcuse, de même que sur des observations réalisées par divers/es universitaires, activistes et penseur/se/s politiques. Étudions-en brièvement les principaux concepts :
|
|
||||||
### La Théorie de la Valeur
|
|
||||||
La théorie de la valeur est un concept marxiste qui affirme que la valeur d’une marchandise, qu’elle soit un bien ou un service, découle de la quantité de travail socialement nécessaire pour la produire, c’est-à-dire du temps et de l’effort collectifs investis par les travailleur/se/s dans sa création.
|
|
||||||
Quand ce concept est appliqué à un système capitaliste, il en ressort un problème de taille. Les travailleur/se/s au sein de ce système échangent leur travail contre un salaire, dont ils et elles ont besoin pour subsister. Or, sous le capitalisme, les travailleur/se/s se trouvent dans une situation où leurs salaires ne reflètent pas la valeur réelle qu’ils et elles contribuent à générer par leur travail. La compensation qui leur est donnée est inférieure à la valeur réelle qu’ils et elles créent.
|
|
||||||
Cette disparité survient parce que le capitalisme laisse la classe capitaliste s’approprier la plus-value générée par le travail des ouvrier/re/s. La plus-value étant la valeur produite supérieure à la somme du salaire payé aux travailleur/se/s et aux coûts de production. Cette plus-value, souvent appelée profit, est accaparée par la classe capitaliste, lui permettant ainsi d’accumuler de la richesse et du pouvoir par sa simple propriété des moyens de production.
|
|
||||||
Fondamentalement, la théorie de la valeur met en lumière l’exploitation du travail dans le cadre capitaliste. Les travailleur/se/s, au travers de leur effort collectif, produisent de la valeur par leur travail dont la classe capitaliste extorque les bénéfices en en extrayant la plus-value, ne laissant ensuite aux travailleur/se/s que des salaires qui ne reflètent pas pleinement la valeur qu’ils et elles ont générée. Ce mécanisme d’extraction de la plus-value constitue un moyen fondamental pour les capitalistes d’amasser richesse et pouvoir.
|
|
||||||
### La Concentration de la Richesse et du Pouvoir
|
|
||||||
La concentration de la richesse et du pouvoir est un concept crucial dans la compréhension des failles et des critiques tant du capitalisme de marché que du capitalisme d’État régi par un parti d’avant-garde. Ce concept se réfère à la tendance qu’ont la richesse et le pouvoir à se voir de plus en plus concentrés entre les mains d’une petite élite au sein de la société, respectivement la classe capitaliste sous le capitalisme de marché, et le parti d’avant-garde sous le capitalisme d’État. Dans le premier cas, cette concentration découle des dynamiques inhérentes au capitalisme, dont le modèle économique est motivé par la recherche du profit et l’accumulation du capital. Dans le second cas, cette concentration provient directement du désir du parti d’avant-garde de garder et accroître son contrôle.
|
|
||||||
Sous un capitalisme de marché, la classe capitaliste concentre la richesse et le pouvoir au moyen des mécanismes suivants :
|
|
||||||
<b>L’Exploitation du Travail :</b> Sous le capitalisme, les individus et les entreprises s’évertuent à produire et échanger des marchandises en vue de générer du profit. Par le biais de mécanismes tels que l’extraction de la plus-value du travail, la classe capitaliste accumule de la richesse et acquiert plus de moyens de production tandis que la classe laborieuse accumule rarement quelque montant important que ce soit et peine à joindre les deux bouts. Ce processus d’accumulation mène à un accroissement des écarts de richesse, voyant celle-ci se concentrer entre les mains de quelques un/e/s.
|
|
||||||
<b>La Loyauté de l’Appareil :</b> La concentration de la richesse induit également une concentration du pouvoir. Ceux et celles qui possèdent de larges richesses acquièrent une influence et un contrôle considérables sur les ressources économiques clés, en même temps que sur les institutions politiques et sociales.Cette concentration du pouvoir permet à l’élite riche de modeler les politiques publiques, manipuler le système politique et faire valoir leurs propres intérêts au détriment de ceux de la majorité.
|
|
||||||
<b>La Transmission de la Richesse :</b> Par ailleurs, la concentration de la richesse et du pouvoir entretient un cycle de privilèges et d’exclusion. L’élite privilégiée peut transmettre sa richesse et ses prérogatives aux générations suivantes, accentuant les disparités sociales et économiques au fil du temps. Dans le même temps, celles et ceux qui ne disposent pas de cette richesse ou de ce pouvoir sont largement limité/e/s dans leur possibilité de s’élever socialement et se retrouvent piégé/e/s dans des cycles de pauvreté.
|
|
||||||
Quant au parti d’avant-garde et au capitalisme d’État, ils concentrent la richesse et le pouvoir au moyen des mécanismes suivants :
|
|
||||||
<b>La Domination Idéologique :</b> Le parti d’avant-garde instaure un cadre idéologique qui légitime sa gouvernance et prétend représenter les intérêts de la classe ouvrière. Il met en avant une doctrine ou une idéologie politique spécifique et œuvre à l’endoctrinement de ses membres et de ses soutiens. Par la propagande, l’éducation et par un contrôle des relais médiatiques, le parti d’avant-garde formate l’opinion publique et réprime les points de vue alternatifs.
|
|
||||||
<b>La Prise de Décisions Centralisée :</b> Le parti d’avant-garde centralise le pouvoir décisionnel en son sein, le concentrant auprès d’un cercle restreint de chefs. Cela permet au parti de contrôler l’élaboration des mesures politiques, la direction stratégique et l’allocation des ressources. En maintenant de la sorte une poigne de fer sur la prise de décisions, le parti d’avant-garde limite la portée et la participation de la population, consolidant son autorité et prévenant toute atteinte à son contrôle.
|
|
||||||
<b>Appareil Répressif :</b> Le parti d’avant-garde met en place et utilise un appareil répressif, comprenant les forces de l’ordre et les mécanismes de surveillance afin de réprimer les dissidents et de maintenir son contrôle sur la société. Ces outils de coercition servent à faire taire les oppositions, étouffer les voix dissidentes et instiller la peur chez sa population. En créant une atmosphère de répression, le parti d’avant-garde décourage la résistance et maintient sa mainmise sur le pouvoir.
|
|
||||||
<b>Cooptation et Clientélisme :</b> Le parti d’avant-garde se sert de stratégies de cooptation et de clientélisme pour s’attirer le soutien et la loyauté d’individus ou de groupes clés. En offrant des bénéfices matériels, des privilèges et des positions de pouvoir, le parti s’évertue à créer un réseau d’alliés qui dépendent de la continuation de son règne. Cette stratégie aide le parti d’avant-garde à maintenir une base de soutien loyale et à s’assurer que les fractions dissidentes restent mineures et marginalisées.
|
|
||||||
La concentration du pouvoir mène systématiquement au même phénomène : le maintien de cette concentration.
|
|
||||||
### La Lutte des Classes
|
|
||||||
Dans un système capitaliste, la société est scindée en deux classes distinctes : la bourgeoisie et le prolétariat. La bourgeoisie représente la classe capitaliste, constituée de riches individus qui possèdent et contrôlent les moyens de production tels que les usines, la terre et les ressources. Leur motivation première est de maximiser le profit et de préserver leur richesse et leur influence. L’autre versant de ce système est le prolétariat, incarné par la classe ouvrière, qui doit vendre sa force de travail à la bourgeoisie afin de gagner sa vie et pourvoir à ses besoins et à ceux de sa famille.
|
|
||||||
Le cœur de la critique présentée ici découle de la lutte qui survient entre ces deux classes. En effet, la bourgeoisie cherche à engranger toujours plus de bénéfices en baissant les salaires, en réduisant les coûts et en exploitant la force de travail du prolétariat. Son objectif est de maintenir et accroître sa richesse aux dépens de la classe laborieuse. À l’inverse, le prolétariat, qui dépend de sa force de travail qu’il parvient à vendre pour survivre, s’évertue à améliorer ses conditions de travail, gagner un meilleur salaire et obtenir une part plus juste de la valeur qu’il produit par son travail. Cette divergence d’intérêts et de buts fait surgir différentes expressions de la lutte des classes comme les grèves, les manifestations et les mouvements organisés visant à défendre les droits des travailleur/se/s.
|
|
||||||
Les dynamiques de pouvoir entre la bourgeoisie et le prolétariat affectent lourdement les relations sociales au sein des sociétés capitalistes. La classe capitaliste possède des ressources économiques considérables ainsi qu’une importante influence et un contrôle sur les institutions clés qu’elle fait jouer pour maintenir sa domination et faire progresser ses intérêts. Cette classe modèle les processus politiques, influence les récits médiatiques et exerce un contrôle sur l’opinion publique, tout cela dans le but de perpétuer ses avantages économiques et sociaux.
|
|
||||||
### L’Aliénation
|
|
||||||
Le concept d’aliénation (ou « Entfremdung », comme Marx l’appelle en allemand) se réfère à la déconnexion psychologique et sociale ressentie par les travailleur/se/s dans une société capitaliste, en raison de la manière dont le travail est organisé. Il y a quatre dimensions à cette aliénation :
|
|
||||||
<b>L’Aliénation vis-à-vis du Produit :</b> Sous le capitalisme, les travailleur/se/s se voient assigner des tâches spécialisées et répétitives pour produire les marchandises qui seront détenues et contrôlées par les capitalistes. Les producteur/rice/s sont ainsi détaché/e/s des produits qu’ils et elles créent car ces produits sont possédés par d’autres qui le vendront pour leur profit propre. Le travail devient un moyen subordonné à une fin, plutôt qu’une expression gratifiante de sa créativité et de son talent.
|
|
||||||
<b>L’Aliénation vis-à-vis du Processus de Production :</b> Dans un système capitaliste, le processus de production est structuré hiérarchiquement de sorte que les travailleur/se/s ont très peu de contrôle ou d’influence sur la prise de décision et l’organisation relatives au travail. Aussi, les travailleurs perdent en autonomie et se retrouvent aliénés du processus au travers duquel les biens sont produits.
|
|
||||||
<b>L’Aliénation vis-à-vis de Soi :</b> Le travail est un aspect essentiel de la nature humaine, donnant aux individus l’opportunité d’exprimer leur créativité, leurs talents et leurs désirs. Cependant, sous l’égide du capitalisme, le travail est détaché des intérêts et des besoins des ouvrier/e/s. En assignant aux travailleur/se/s des tâches spécifiques et sous le contrôle d’exigences externes, on les condamne à ressentir un profond sentiment de détachement vis-à-vis de leur être et de leur potentiel.
|
|
||||||
<b>L’Aliénation vis-à-vis des Autres :</b> La production capitaliste instaure une compétition entre les travailleur/se/s en les montant les un/e/s contre les autres pour des salaires et des garanties d’emploi. Cette compétition favorise un sens d’isolement et d’aliénation vis-à-vis des autres travailleur/se/s, entravant ainsi le développement d’une solidarité et d’une coopération collectives.
|
|
||||||
Aliénation est une caractéristique inhérente au mode de production capitaliste. Elle constitue une forme d’oppression qui entrave l’épanouissement humain et refuse aux individus l’opportunité de réaliser pleinement leur potentiel créatif.
|
|
||||||
### Le Fétichisme de la Marchandise
|
|
||||||
Le fétichisme de la marchandise est un concept formulé par Marx qui dénote une caractéristique des sociétés capitalistes : la tendance à attribuer une valeur mystique aux marchandises, niant les relations sociales de production et la nature exploiteuse du capitalisme. Plutôt que d’être perçues comme des produits du travail humain, les marchandises sont considérées comme des entités détenant une valeur et un pouvoir intrinsèques.
|
|
||||||
Dans les sociétés capitalistes, la valeur d’une marchandise est déterminée par la quantité de travail socialement nécessaire à sa production. Cependant, le fétichisme de la marchandise transforme cette relation sociale en la perception que la valeur découle de l’échangeabilité et du prix du marché. Cette question du processus d’échange et du marché commande la compréhension populaire de la valeur, éclipsant ainsi le travail derrière la production.
|
|
||||||
Ce fétichisme n’est pas accidentel mais inhérent au mode de production capitaliste. Dans la société capitaliste, les produits du travail prennent la forme de marchandises, ensuite achetées et vendues. Les relations sociales entre les personnes sont celées, détournant ainsi le regard vers les relations entre les objets. Aussi, le produit des travailleur/se/s est-il caché, dissimulant la nature exploiteuse du capitalisme.
|
|
||||||
L’illusion de la valeur entretient le système capitaliste en détournant l’attention des masses laborieuses vers les marchandises. Cela permet à la classe capitaliste, qui contrôle la production, d’extraire la plus-value sans résistance significative. Le capitalisme maintient la notion que la valeur d’un produit réside uniquement dans son échangeabilité, plutôt que de reconnaître la quantité de travail investie dans sa production par la classe ouvrière.
|
|
||||||
Le fétichisme de la marchandise modèle également les désirs, les aspirations et les habitudes de consommation. L’attrait des marchandises, accrû par les emballages, les marques et la publicité, fait miroiter aux individus que leurs vies s’amélioreraient par l’achat et la consommation. Cela renforce l’illusion que la valeur réside purement dans la marchandise, perpétuant le cycle d’exploitation du capitalisme.
|
|
||||||
### La Désublimation Répressive
|
|
||||||
Dans un système capitaliste, la désublimation répressive, concept introduit par Herbert Marcuse, peut être comprise comme un processus au travers duquel les désirs des individus sont orientés et manipulés vers la recherche de possessions matérielles, de gratification immédiate et de consommation, plutôt que de chercher l’épanouissement et le sens par d’autres aspects de la vie. Ce processus est appuyé par la promotion de besoins et de désirs artificiels par la publicité et les médias de masse qui formatent et moulent les désirs des individus selon les diktats du marché. Aussi, la recherche de biens matériels devient un axe central et occulte les autres sources potentielles d’épanouissement et de connexion humaines.
|
|
||||||
En orientant les désirs et les aspirations dans la direction du consumérisme, la désublimation répressive sert de mécanisme de contrôle au capitalisme. Elle réprime ou redirige de possibles désirs transformateurs de changement social et de liberté humaine authentique. Plutôt que de questionner et de remettre en cause les structures sous-jacentes et les dynamiques de pouvoir du système, les individus sont incités à trouver satisfaction dans l’accumulation de possessions matérielles et l’assouvissement de désirs immédiats. Le mécanisme de diversion empêche l’émergence d’actions collectives et de conscience critique, maintenant ainsi le statu quo et entretenant les inégalités de pouvoir existantes.
|
|
||||||
Dans ce contexte, le terme « répressif » de la désublimation répressive se réfère à l’idée que le consumérisme et la recherche des plaisirs matériels sont activement promus et encouragés par le système capitaliste pour assurer son contrôle social et sa stabilité. Le concept de désublimation souligne le relâchement des inhibitions et l’expression désinhibée des désirs, souvent de manière superficielle et immédiate, plutôt que de les orienter vers des quêtes plus profondes et transformatives.
|
|
||||||
### L’Atomisation
|
|
||||||
L’Atomisation se réfère à un état de fragmentation sociale et d’isolement où les individus sont déconnectés les uns des autres ce qui mène à un affaiblissement du sentiment de communauté et de solidarité.
|
|
||||||
Sous le capitalisme, l’atomisation résulte de plusieurs facteurs interconnectés :
|
|
||||||
<b>L’Individualisme et la Compétition :</b> Le capitalisme met lourdement l’accent sur l’individualisme et la compétition et encourage la recherche de ses propres intérêts et du profit personnel. Cette emphase sur la réussite individuelle mène à un sentiment d’isolement puisque les individus font passer leurs propres besoins et buts devant le bien-être collectif. La constante compétition pour les ressources et les opportunités fragmente plus encore la société et favorise un état d’esprit de « chacun pour soi ».
|
|
||||||
<b>Les Forces du Marché et la Marchandisation :</b> Dans les systèmes capitalistes, presque tous les aspects de la vie sont sujets aux forces du marché. La marchandisation se produit lorsque les biens, les services et même les relations humaines sont réduites à des marchandises échangeables. Cette mentalité de marchandisation érode les liens sociaux et les relations interpersonnelles en encourageant les individus à voir les autres d’abord comme des acheteurs ou des vendeurs potentiels plutôt que comme des êtres humains.
|
|
||||||
<b>La Culture de la Consommation :</b> Le capitalisme pousse à une culture de la consommation qui met en avant la recherche de possessions matérielles et de gratification immédiate. Cette culture entretient un environnement de consommation individualiste où le bonheur et l’identité personnelles dépendent de l’achat de produits. La recherche permanente de consommation isole les individus en leur faisant préférer l’accumulation matérielle aux connexions sociales et aux expériences communes.
|
|
||||||
<b>Les Inégalités Sociales :</b> Les systèmes capitalistes entretiennent les inégalités sociales fondées sur la richesse, la classe, la couleur de peau et le genre. Ces inégalités entraînent la marginalisation, la discrimination et l’exclusion de certains groupes, les tenant loin d’une participation pleine et entière à la société. De telles divisions favorisent d’autant plus l’atomisation sociale en créant des barrières à l’action collective et en suscitant la méfiance entre différents groupes sociaux.
|
|
||||||
L’atomisation capitaliste est un puissant outil nous empêchant de nous organiser et de défier les inégalités et les injustices inhérentes au système capitaliste.
|
|
||||||
### Les Externalités
|
|
||||||
Le terme d’externalité fait référence à l’ensemble des conséquences imprévues d’activités économiques qui ne sont pas reflétées dans le prix des biens et des services. Ces conséquences peuvent être aussi bien positives que négatives et impactent le plus souvent des individus ou des communautés qui ne sont pourtant pas directement impliquées dans les transactions économiques.
|
|
||||||
Dans le contexte capitaliste, les externalités surgissent suite à la recherche effrénée de profit et à la marchandisation des ressources et du travail. La production capitaliste vise à maximiser le profit en minimisant les coûts et en externalisant autant de dépenses que faire se peut. Cela conduit à une socialisation des coûts où les impacts négatifs de la production, tels que la pollution, l’épuisement des ressources et la dislocation sociale, sont assumés par la société dans son ensemble plutôt que par les capitalistes eux-mêmes.
|
|
||||||
Les externalités s’ancrent dans la nature exploiteuse de la production capitaliste. La classe capitaliste, mue par l’impératif d’accumulation du capital, tend à prioriser les profits à court-terme plutôt que le bien-être environnemental et social à long-terme. La recherche du profit ne se soucie pas des limites écologiques de la planète ou du bien-être des travailleur/se/s et des communautés.
|
|
||||||
Par exemple, les externalités environnementales découlent de l’extraction incessante des ressources naturelles et de la génération de pollution et de déchets, inhérentes au mode de production capitaliste. Ces externalités, telles que la pollution de l’air et de l’eau, la déforestation et le dérèglement climatique, ont des conséquences considérables impactant les écosystèmes, la santé publique et les générations futures. Cependant, les coûts de ces externalités ne sont pas internalisés par les capitalistes mais plutôt remis à la charge de la société et de l’environnement.
|
|
||||||
De la même manière, les externalités sociales découlent des relations d’exploitation du capitalisme. La recherche du profit mène à l’exploitation et à l’aliénation des travailleur/se/s ainsi qu’au déracinement des communautés. Des salaires bas, des mauvaises conditions de travail ou encore des emplois précaires sont autant d’externalités sociales qui résultent de la centralité de la maximisation du profit pour le système capitaliste. Ces externalités contribuent aux inégalités, à la pauvreté et à l’érosion de la cohésion sociale.
|
|
||||||
Comme nous pouvons le voir, les externalités ne sont pas des conséquences accidentelles mais bien inhérentes au mode de production capitaliste. Les capitalistes sont mus par l’impératif d’accumuler du capital, ce qui requiert une externalisation des coûts et une exploitation du travail et des ressources.
|
|
||||||
### L’Impérialisme
|
|
||||||
L’impérialisme est une caractéristique inhérente au système capitaliste, motivée par la nécessité qu’ont les capitalistes d’étendre les marchés, d’avoir accès à une force de travail moins chère et d’exploiter les ressources pour une maximisation des profits. Les puissances impérialistes, typiquement des nations capitalistes avancées, cherchent à contrôler et à extraire la richesse de régions moins développées à travers des mécanismes tels que la colonisation, le néocolonialisme et la dépendance économique.
|
|
||||||
L’impérialisme engendre des inégalités mondiales au travers de plusieurs mécanismes. Tout d’abord, il instaure une relation d’exploitation entre les nations dominantes et les nations subordonnées, les premières extorquant la plus-value des secondes. Les nations capitalistes avancées exploitent la force de travail et les ressources de pays moins développés, accordant des salaires bas et épuisant les ressources naturelles.
|
|
||||||
De plus, l’impérialisme perpétue un échange inégal au sein du commerce mondial. Les nations dominantes imposent des cadres commerciaux défavorables afin de s’assurer que les matériaux bruts et les marchandises des pays sous-développés soient sous-évaluées, tout en augmentant le prix des biens manufacturés provenant des pays dominants pour qu’ils soient vendus plus chers. Ce phénomène conduit à un transfert net des richesses de la périphérie vers le centre du capitalisme mondialisé, accentuant plus encore les inégalités à l’échelle du globe.
|
|
||||||
L’impérialisme renforce également la domination politique et militaire. En effet, les nations puissantes se servent de leur force économique pour exercer un contrôle sur les nations plus faibles en influençant leurs gouvernements, leurs politiques et le devenir de leurs ressources, tout cela afin de favoriser leurs propres intérêts. Ce contrôle est maintenu au moyen d’interventions militaires, d’ingérence politique et de l’établissement d’institutions internationales qui favorisent les intérêts des puissances impérialistes.
|
|
||||||
## Le Socialisme Libertaire
|
|
||||||
### Ses Principes Clés
|
|
||||||
Le socialisme libertaire est une philosophie politique et économique qui offre une alternative aux systèmes capitalistes et d’avant-gardes traditionnels. Prise de décision réellement démocratique, théorie socialiste et solidarité sont autant de piliers de cette pensée riche.
|
|
||||||
Le socialisme libertaire repose sur ces trois principes clés :
|
|
||||||
<b>La Décentralisation du Pouvoir :</b> Nous cherchons à démanteler les structures de pouvoir centralisées et à répartir l’autorité décisionnelle au niveau local, afin de s’assurer que nos communautés aient l’autonomie nécessaire à leur auto-administration. Nous militons pour la participation active de chacun et chacune d’entre nous à un processus politique qui nous accorde une voix dans la prise de décision et les mesures qui affectent nos vies.
|
|
||||||
<b>Un Mode de Production Socialiste :</b> Nous voulons parvenir à une justice économique en nous élevant contre la concentration de la richesse et du pouvoir mise entre les mains de quelques uns que permet le système capitaliste. Nous visons le socialisme, c’est-à-dire un système où les moyens de production appartiennent directement aux travailleur/se/s.
|
|
||||||
<b>L’Entraide :</b> Nous reconnaissons la valeur intrinsèque de la communauté et visons à développer les relations basées sur l’entraide et le soin mutuel. Par l’entraide, nous et nos communautés nous évertuons ensemble à satisfaire nos besoins communs, que ce soit en fournissant de la nourriture, un abri, du soin, de l’éducation ou d’autres ressources essentielles à ceux et celles qui en ont besoin.
|
|
||||||
### La Décentralisation du Pouvoir et la Démocratie Directe
|
|
||||||
La Décentralisation se donne pour but de démanteler les structures de pouvoir centralisées et de permettre aux communautés locales de se gouverner elles-mêmes de manière autonome, tandis que la démocratie directe insiste sur l’implication active des individus dans la prise de décision, en se passant de représentants intermédiaires. Ces deux principes nous permettent de participer directement à la conception des politiques et à la répartition des ressources selon les besoins propres à chaque communauté. La décentralisation du pouvoir fondée sur la démocratie directe nous apporte les avantages suivants :
|
|
||||||
<b>L’Émancipation et la Réappropriation :</b> La participation directe inculque à tous et à toutes un sentiment de réappropriation et d’émancipation. Elle accroît notre compréhension des responsabilités collectives et développe un plus fort sentiment de devoir civique et de cohésion entre les membres de la communauté.
|
|
||||||
<b>La Résolution des Conflits :</b> La démocratie directe fournit une plateforme pour dialoguer ouvertement, bâtir un consensus et résoudre paisiblement les conflits. Elle encourage l’échange des idées, le compromis et la négociation, permettant de prendre des décisions qui jouissent d’un soutien plus large et d’ainsi minimiser les divisions sociales.
|
|
||||||
<b>Une Cohésion Sociale Renforcée :</b> La décentralisation et la démocratie directe mettent en avant un sens de la communauté et des responsabilités communes. Elles nous encouragent à nous rassembler, à constituer un dialogue constructif et à travailler ensemble pour faire face aux défis communs, cimentant ainsi la cohésion sociale et l’unité.
|
|
||||||
<b>Une Prise de Décision Réactive :</b> En distribuant le pouvoir au niveau local, la décentralisation mène à une gouvernance plus réactive puisque nous, les décisionnaires, sommes directement concerné/e/s par les conséquences de nos actes.
|
|
||||||
<b>La Protection contre l’Autoritarisme :</b> En distribuant le pouvoir et l’autorité décisionnelle, on empêche la concentration de pouvoir entre les mains de quelques individus ou institutions, instaurant ainsi un garde-fou contre l’autoritarisme.
|
|
||||||
Pour conclure, la combinaison d’un pouvoir décentralisé et de la démocratie directe offre de nombreux avantages. En adoptant ces principes, nous pouvons développer un système qui prenne en compte les besoins et les intérêts de toutes et tous.
|
|
||||||
### Le Mode de Production Socialiste
|
|
||||||
En tant que socialistes, nous militons pour un autre modèle économique où les moyens de production, tels que les usines, la terre ou encore les machines, seraient contrôlés par les travailleur/se/s mêmes. Le but est de s’assurer que nous, les travailleur/se/s, ayons un intérêt direct à notre travail et notre mot à dire dans les décisions qui affectent nos vies et les communautés où nous évoluons.
|
|
||||||
<b>L’Émancipation des Travailleur/se/s :</b> Sous le socialisme, nous devenons des parties prenantes actives et volontaires au processus économique. Nous avons une voix dans la détermination des conditions de travail, des salaires et dans la distribution des ressources. Le socialisme élimine les relations d’exploitation entre capitalistes et travailleur/se/s. Cela nous permet de prendre le contrôle sur notre travail et de contribuer au bien-être collectif de la société
|
|
||||||
<b>S’Élever contre l’Exploitation :</b> Dans un système socialiste, la plus-value créée par notre travail n’est pas siphonnée par une classe capitaliste mais plutôt réinvestie ou distribuée au profit de tous les travailleur/se/s. Ce changement empêche les déséquilibres de pouvoir et permet de s’assurer que les fruits de notre labeur seront partagés équitablement.
|
|
||||||
<b>La Solidarité Collective :</b> Le socialisme met en valeur l’importance de la solidarité collective et de la coopération. En remplaçant la compétition par la coopération, le socialisme nous incite à nous rassembler, à partager notre savoir et à répondre collectivement aux défis qui s’imposent à nous. Ce sens de la solidarité nourrit un sentiment d’appartenance et d’un objectif collectif qui contribuent à cultiver un environnement de travail plus respectueux et plus harmonieux.
|
|
||||||
En somme, le socialisme offre une vision d’une organisation économique rendant possible notre émancipation, luttant contre l’exploitation et mettant en avant la solidarité collective. En tant qu’il insiste sur la coopération et la prospérité commune, le socialisme offre un cadre alternatif qui cherche à résoudre les problèmes systémiques et les inégalités inhérentes aux économies capitalistes.
|
|
||||||
### L’Entraide
|
|
||||||
L’Entraide est un principe fondamental de la pensée et de la pratique socialistes. Elle met l’accent sur le pouvoir de la solidarité et de la coopération dans la satisfaction de nos besoins. Dans une société socialiste, l’entraide devient la pierre angulaire de nos relations sociales qui nous conduit à apporter soutien, aide et ressources à ceux et celles qui en ont besoin, sans rien attendre directement en retour, sur la base du principe de solidarité.
|
|
||||||
<b>La Solidarité en Action :</b> L’entraide entretient un sentiment privilégié de solidarité et d’interconnexion entre les individus. Elle reconnaît que notre bien-être est socialement dépendant et qu’en nous soutenant les un/e/s les autres, nous pouvons prospérer collectivement.
|
|
||||||
<b>L’Émancipation Communautaire :</b> L’entraide nous émancipe, nous et nos communautés, en encourageant la participation et la prise de décision actives. Plutôt que de nous reposer sur des institutions externes ou des structures hiérarchiques, l’entraide nous permet de reprendre le contrôle sur nos vies et de façonner collectivement le monde dans lequel nous voulons vivre. En travaillant ensemble, nous acquérons un sentiment d’implication, nous nous ressaisissons de notre autonomie et nous bâtissons des communautés résilientes, capables de satisfaire ses propres besoins sans dépendre de systèmes oppressifs.
|
|
||||||
<b>Transformer la Société :</b> L’entraide va bien plus loin que de simplement fournir un soulagement immédiat ; elle vise à former des alternatives durables aux structures capitalistes. En s’élevant contre la dépendance sur des entreprises motivées par le profit et contre la prise de décisions imposées par le haut, l’entraide sert de catalyseur au changement radical, travaillant activement à la transformation des structures oppressives et en pavant la voie vers un monde plus juste, plus inclusif et plus empathique.
|
|
||||||
En définitive, l’entraide est une composante essentielle de la pensée et de la pratique socialistes. C’est par l’entraide uniquement que nous pouvons construire des solidarités, nous émanciper, lutter contre l’exploitation et créer des structures alternatives qui mettront la considération du bien-être collectif au-dessus de toute autre.
|
|
||||||
### Comment Agir Maintenant ?
|
|
||||||
<b>Par l’Éducation et la Sensibilisation :</b> Une première étape importante est de s’éduquer soi-même au socialisme libertaire et à ses principes. En approfondissant sa compréhension de ses fondements et de ses valeurs centrales, on peut plus efficacement véhiculer sa vision auprès des autres. Lis des textes critiques, assiste à des ateliers ou prends part à des discussions afin de gagner en connaissance et mieux apprécier la théorie et la pratique socialiste libertaire.
|
|
||||||
<b>Par la Solidarité et l’Entraide :</b> Développe une culture de solidarité et d’entraide dans ta communauté. Entreprends des actions de soutien, de coopération et de soin collectif. Construis des réseaux d’entraide qui fournissent ressources et assistance mutuelle. En favorisant la solidarité, nous renforçons les liens communautaires et nous nous opposons à la fragmentation sociale que nous inflige le capitalisme.
|
|
||||||
<b>Par l’Organisation Horizontale :</b> Implique-toi dans des mouvement horizontaux d’initiative citoyenne et dans des organisations qui reflètent les principes socialistes libertaires. Rejoins ou forme des groupes communautaires locaux et des groupes qui mettent en valeur la solidarité, l’égalité et la démocratie directe. Entreprends des actions collectives, du militantisme et des campagnes visant à répondre aux problèmes économiques, à favoriser l’émancipation des travailleur/se/s et à lutter contre les structures oppressives.
|
|
||||||
<b>Par la Démocratie Participative :</b> Encourage et prends part aux modèles de démocratie participative de ta communauté. Assiste aux assemblées locales, aux réunions de voisinage ou aux conseils au sein de ta communauté. Incite les autres à devenir partie prenante des discussions, à exprimer leurs inquiétudes et à contribuer à modeler les mesures et les initiatives qui mettent l’accent sur le bien-être collectif.
|
|
||||||
<b>Par l’Économie Coopérative :</b> Soutiens et participe aux initiatives économiques coopératives. Les coopératives sont des entreprises possédées et contrôlées démocratiquement par les travailleur/se/s garantissant une distribution équitable des ressources et du pouvoir décisionnel. Songe à rejoindre ou à fonder des coopératives dans divers secteurs tels que l’agriculture, le logement ou la production. En faisant la promotion de l’économie coopérative, nous court-circuitons le mode de production capitaliste et posons les fondements d’un système économique plus équitable.
|
|
||||||
<b>Par la Participation aux Structures Existantes :</b> Même si nous luttons contre le système en place, il faut aussi entrer stratégiquement en relation avec celui-ci, que ce soit en militant pour des changements de politique, en mettant les élus devant leurs responsabilités, ou encore en participant aux processus démocratiques existants. En leur sein, lutte encore pour des réformes qui vont dans le sens des principes socialistes libertaires et qui contribuent plus généralement à l’optique de la transformation du système.
|
|
||||||
## Notre Plan
|
|
||||||
Tu n’as pas besoin de t’embarquer tout/e seul/e dans le périple pour l’implémentation de ces initiatives. Heureusement, il existe déjà une organisation composée de camarades avec les mêmes objectifs que toi, prêt/e/s à joindre leurs efforts aux tiens.
|
|
||||||
<b>Les Groupes:</b> Nous nous organisons en groupes en vue de militer et de fournir éducation et entraide. Notre objectif est de démontrer aux individus que le système politico-économique actuel nuit à notre bien-être, de leur présenter des approches alternatives et de mettre en œuvre le principe fondamental de l’entraide afin de soulager le poids des épreuves que le capitalisme nous inflige.
|
|
||||||
<b>Les Communautés:</b> Nous établissons des communautés sur la base des principes socialistes libertaires, où les individus sont propriétaires de leur terre, de leurs maisons, et des moyens de production et où ils et elles peuvent prendre des décisions par le biais de la démocratie directe. Nous propageons graduellement notre monde socialiste, une communauté à la fois.
|
|
||||||
<b>Les Coopératives:</b> Nous formons des coopératives ouvrières pour financer les opérations de nos groupes et de nos communautés. Reconnaissant que le pouvoir économique influence le pouvoir politique, nous considérons l’établissement de coopératives comme une des étapes initiales vers l’avènement du socialisme.
|
|
||||||
<b>Les Partis:</b> Nous créons des partis politiques dans l'optique de promouvoir des réformes nous permettant plus facilement de mettre en oeuvre nos objectifs, de déplacer la fenêtre d'Overton ainsi que de gagner en popularité. Cependant, nous avons conscience que nous ne pourrons parvenir au socialisme libertaire par le biais des institutions qui luttent à son encontre.
|
|
||||||
<b>Les Syndicats:</b> Nous promouvons les syndicats qui émancipent et organisent les travailleurs et les travailleuses en militant pour un traitement et un salaire justes ainsi que pour une amélioration des conditions de travail. La lutte sur le lieu de travail est partie intégrante de notre stratégie dans l'avènement du socialisme libertaire.
|
|
||||||
En développant les initiatives mentionnées précédemment, nous nous efforçons de paver la voie à une société débarrassée de tout système de pouvoir oppressif et exploiteur et à l’instauration de nouveaux systèmes fondés sur la coopération et la solidarité. Tout ce dont nous avons besoin, c’est d’une masse critique d’individus qui se rassemblent pour lutter conjointement contre l’oppression et l’exploitation.
|
|
|
@ -1,14 +0,0 @@
|
||||||
{
|
|
||||||
"orgName": "Socialistes Libertaires",
|
|
||||||
"manifesto": "Notre Manifeste",
|
|
||||||
"joinUs": "Nous Rejoindre",
|
|
||||||
"initiatives": "Nos Initiatives",
|
|
||||||
"groups": "Nos Groupes",
|
|
||||||
"communes": "Nos Communes",
|
|
||||||
"cooperatives": "Nos Coopératives",
|
|
||||||
"parties": "Nos Partis",
|
|
||||||
"tradeUnions": "Nos Syndicats",
|
|
||||||
"partners": "Nos Partenaires",
|
|
||||||
"login": "Connexion",
|
|
||||||
"profile": "Profil"
|
|
||||||
}
|
|
|
@ -1,14 +0,0 @@
|
||||||
{
|
|
||||||
"parties": "Partis",
|
|
||||||
"p1": "Nous créons des partis politiques dans l'optique de promouvoir des réformes nous permettant plus facilement de mettre en oeuvre nos objectifs, de déplacer la fenêtre d'Overton ainsi que de gagner en popularité. Cependant, nous avons conscience que nous ne pourrons parvenir au socialisme libertaire par le biais des institutions qui luttent à son encontre.",
|
|
||||||
"subheading1": "Nos Partis",
|
|
||||||
"name": "Nom ",
|
|
||||||
"location": "Localisation ",
|
|
||||||
"members": "Membres ",
|
|
||||||
"website": "Site internet ",
|
|
||||||
"contact": "Contact ",
|
|
||||||
"description": "Description ",
|
|
||||||
"descriptionRoots": "Nous sommes une organisation libertaire basée en Irlande. Nous nous concentrons sur la reconstruction de l'infrastructure du pays, le développement d'un sentiment d'auto-administration, ainsi que sur la question du logement, de l'agro-industrie et des préoccupations de la jeunesse.",
|
|
||||||
"Party": "Parti",
|
|
||||||
"map-prompt": "Vous voulez figurer sur notre carte ? Contactez-nous !"
|
|
||||||
}
|
|
|
@ -1,15 +0,0 @@
|
||||||
{
|
|
||||||
"heading": "Partenaires",
|
|
||||||
"p1": "Nous nous coordonnons avec des organisations et des initiatives qui correspondent à la mission que nous nous sommes donnée. Ensemble, nous constituons une force unie, mue par la même vision du monde, et dans laquelle nous ne laissons nulle place aux systèmes d'exploitation autoritaires mais où les systèmes promouvant l'équité et la démocratie peuvent s'épanouir librement.",
|
|
||||||
"subheading1": "Nos Partenaires",
|
|
||||||
"subheading2": "En ligne ",
|
|
||||||
"name": "Nom ",
|
|
||||||
"location": "Localisation ",
|
|
||||||
"website": "Site internet ",
|
|
||||||
"contact": "Contact ",
|
|
||||||
"description": "Description ",
|
|
||||||
"typeGaiasFall": "un lieu pour discuter",
|
|
||||||
"descriptionGaiasFall": "Gaia's Fall est un serveur qui met en avant les idéaux solarpunks, la lutte environnementale, l'anarchisme et l'anticapitalisme. Nous incitons à des débats respectueux, à des discussions théoriques et pratiques, et à la création de communautés centrées autour de l'idée de bâtir un monde meilleur.",
|
|
||||||
"map-prompt": "Vous voulez figurer sur notre carte ? Contactez-nous !"
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
{
|
|
||||||
"tradeUnions": "Syndicats",
|
|
||||||
"p1": "Les syndicats jouent un rôle clé dans la défense des droits et la protection des travailleurs et des travailleuses. Les syndicats font partie intégrante de notre organisation en permettant aux travailleurs et aux travailleuses de s'unir et de négocier collectivement de meilleurs salaires, de meilleures conditions de travail et des droits les protégeant plus efficacement. En favorisant la solidarité et en mobilisant dans l'optique de l'action collective, les syndicats contribuent à notre entreprise plus générale de démantelèment des systèmes oppressifs et à l'avènement d'un monde axé sur la prise de décisions décentralisée, la démocratie directe et l'autogestion ouvrière.",
|
|
||||||
"subheading1": "Nos Syndicats",
|
|
||||||
"location": "Localisation ",
|
|
||||||
"members": "Membres ",
|
|
||||||
"contact": "Contact ",
|
|
||||||
"TradeUnion": "Syndicat ",
|
|
||||||
"tradeUnion": "syndicat ",
|
|
||||||
"map-prompt": "Vous voulez figurer sur notre carte ? Contactez-nous !"
|
|
||||||
}
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"top": "Наша организация представляет собой децентрализованную федерацию, основанную на принципе свободного объединения. Она состоит из многих групп людей, объединенных вокруг цели избавления от эксплуататорских политико-экономических систем. Мы стремимся заменить их либертарными социалистическими системами, основанными на децентрализации, прямой демократии и собственности рабочих на средства производства, с целью создания справедливого, демократического и устойчивого мира путем прекращения эксплуатации людей и природы.",
|
"top": "Наша организация представляет собой децентрализованную федерацию, основанную на принципе свободного объединения. Она состоит из многих групп людей, объединенных вокруг цели свержения эксплуататорских политико-экономических систем. Мы стремимся заменить их либертарными социалистическими системами, основанными на децентрализации, прямой демократии и собственности рабочих на средства производства, с целью создания справедливого, демократического и устойчивого мира путем прекращения эксплуатации людей и природы.",
|
||||||
"groupsTitle": "ГРУППЫ",
|
"groupsTitle": "ГРУППЫ",
|
||||||
"groupsText": "Мы организуем группы в целях образования, защиты наших интересов и взаимопомощи. Наша цель — продемонстрировать людям, как нынешние политико-экономические системы пагубно влияют на наше благополучие, представить им альтернативные варианты и заниматься взаимопомощью, чтобы сделать жизнь при капитализме легче.",
|
"groupsText": "Мы организуем группы в целях образования, защиты наших интересов и взаимопомощи. Наша цель — продемонстрировать людям, как нынешние политико-экономические системы пагубно влияют на наше благополучие, представить им альтернативные варианты и заниматься взаимопомощью, чтобы сделать жизнь при капитализме легче.",
|
||||||
"communesTitle": "КОММУНЫ",
|
"communesTitle": "КОММУНЫ",
|
||||||
|
@ -7,9 +7,7 @@
|
||||||
"cooperativesTitle": "КООПЕРАТИВЫ",
|
"cooperativesTitle": "КООПЕРАТИВЫ",
|
||||||
"cooperativesText": "Мы формируем рабочие кооперативы для финансирования операций наших групп и коммун, а также формирования основы новой социалистической экономики. Признавая, что экономическая власть влияет на политическую власть, мы считаем создание кооперативов одним из первых шагов на пути к социализму.",
|
"cooperativesText": "Мы формируем рабочие кооперативы для финансирования операций наших групп и коммун, а также формирования основы новой социалистической экономики. Признавая, что экономическая власть влияет на политическую власть, мы считаем создание кооперативов одним из первых шагов на пути к социализму.",
|
||||||
"partiesTitle": "ПАРТИИ",
|
"partiesTitle": "ПАРТИИ",
|
||||||
"partiesText": "Мы создаем политические партии, чтобы продвигать реформы, которые позволят легче достичь наших целей, сдвигать окно Овертона и увеличивать нашу популярность. Однако мы признаем, что мы не можем достичь либертарного социализма с помощью институтов, действующих против наших целей.",
|
"partiesText": "Мы создаем политические партии, чтобы продвигать реформы, которые позволят легче достичь наших целей, сдвигать окно Овертона и увеличивать нашу популярность. Однако мы признаем, что мы не можем достичь либертарианского социализма с помощью институтов, действующих против наших целей.",
|
||||||
"tradeUnionsTitle": "ПРОФСОЮЗЫ",
|
|
||||||
"tradeUnionsText": "Мы поддерживаем профсоюзы, которые дают возможность работникам коллективно выступать за справедливое обращение, справедливую заработную плату и улучшение условий труда. Борьба на месте работы — неотъемлемая часть нашей стратегии по достижению либертарного социализма.",
|
|
||||||
"findUs": "Найди нас",
|
"findUs": "Найди нас",
|
||||||
"whatNow": "Что теперь?",
|
"whatNow": "Что теперь?",
|
||||||
"joinUs": "Присоединяйся",
|
"joinUs": "Присоединяйся",
|
||||||
|
|
|
@ -2,19 +2,19 @@
|
||||||
|
|
||||||
## Капитализм
|
## Капитализм
|
||||||
### Основные принципы
|
### Основные принципы
|
||||||
Капитализм - политическая и экономическая система, рекламируемая как маяк свободы и возможностей, привела к эксплуатации большинства, накоплению богатства и власти меньшинством и потере достоинства для всех. Если мы посмотрим на основы данной системы, то причины этого станут очевидными.
|
Капитализм - политическая и экономическая система, рекламируемая как маяк свободы и возможностей, привела к эксплуатации многих, накоплению богатства и власти меньшинством и потере достоинства для всех. Если мы посмотрим на основы данной системы, то причины этого станут очевидными.
|
||||||
<b>Погоня за прибылью:</b> Капитализм характеризуется неустанной погоней за частной прибылью как основным мотиватором экономической деятельности. В этой системе прибыль для владельцев бизнеса имеет приоритет над соображениями человеческого благополучия, социальных потребностей и экологической устойчивости.
|
<b>Погоня за прибылью: </b> Капитализм характеризуется неустанной погоней за частной прибылью как основным мотиватором экономической деятельности. В этой системе прибыль для владельцев бизнеса имеет приоритет над соображениями человеческого благополучия, социальных потребностей и экологической устойчивости.
|
||||||
Фундаментальная нужда в погоне за прибылью бизнесами в сочетании с тем, что владельцы по своей природе не представляют своих рабочих и с тем, что их классовые интересы прямо противоположны, приводит к мерам, которые одновременно перекладывают издержки на потребителей, рабочих и окружающую среду и извлекают из них прибавочную ценность (новая ценность созданная руками рабочих, плоды труда). Дисбаланс власти в этой системе приводит к эксплуататорским и классовым отношениям между собственниками и несобственниками, поскольку интересы людей не представлены пропорционально их участию и важности в системе. Это не только наносит ущерб интересам большей части общества, не принадлежащей к классу собственников, но и менее эффективно создает прибавочную ценность, которую владельцы затем извлекают из бизнеса. Ключ к неудачам этой ориентированной на прибыль системы лежит в концепции частной собственности.
|
Фундаментальная нужда в погоне за прибылью бизнесами в сочетании с тем, что владельцы по своей природе не представляют своих рабочих и с тем, что их классовые интересы прямо противоположны, приводит к мерам, которые одновременно перекладывают издержки на потребителей, рабочих и окружающую среду и извлекают из них прибавочную цену (новая ценность созданная руками рабочих, плоды труда). Дисбаланс власти в этой системе приводит к эксплуататорским и классовым отношениям между собственниками и несобственниками, поскольку интересы людей не представлены пропорционально их участию и важности в системе. Это не только наносит ущерб интересам большей части общества, не принадлежащей к классу собственников, но и менее эффективно создает прибавочную цену, которую владельцы затем извлекают из бизнеса. Ключ к неудачам этой ориентированной на прибыль системы лежит в концепции частной собственности.
|
||||||
<b>Частная собственность на средства производства:</b> Основополагающим принципом капитализма является «частная собственность на средства производства»; это означает наличие класса людей, владеющих монополией на ресурсы, средства, инструменты и пространство, необходимые для производства товаров и услуг в обществе. Эта концентрация собственности приводит к значительному дисбалансу сил, поскольку класс капиталистов обладает монополией на контроль над обществом в целом, в то время как большинство населения (рабочий класс) вынуждено полагаться на продажу своего труда классу собственников (капиталистов) для заработка на жизнь. Эта непропорциональная распределение собственности в обществе приводит к фундаментальному разделению социальных интересов между теми, кто это общество контролирует, и подавляющим большинством, кто в нем живет. Это антагонистическое отношение создает меньше власти не только для тех, кого эксплуатируют, но и для общества в целом, поскольку для поддержания этой динамики между собственниками и несобственниками рабочий (и потребительский) класс должен оставаться разделенным, дезорганизованным и бессильным вне того, что служит интересам поддержания этих паразитических отношений. Это искусственно ограничивает выбор общества как коллективно, так и индивидуально, и создает искусственные разделения среди людей, не позволяя нам объединить усилия для достижения общих целей, где единственное, что будет нас ограничивать, так это материальные условия в том мире, где мы живем, наши собственные силы и решения.
|
<b>Частная собственность на средства производства:</b> Основополагающим принципом капитализма является «частная собственность на средства производства»; это означает наличие класса людей, владеющих монополией на ресурсы, средства, инструменты и пространство, необходимые для производства товаров и услуг в обществе. Эта концентрация собственности приводит к значительному дисбалансу сил, поскольку класс капиталистов обладает монополией на контроль над обществом в целом, в то время как большинство населения (рабочий класс) вынуждено полагаться на продажу своего труда классу собственников (капиталистов) для заработка на жизнь. Эта непропорциональная распределение собственности в обществе приводит к фундаментальному разделению социальных интересов между теми, кто это общество контролирует, и подавляющим большинством, кто в нем живет. Это антагонистическое отношение создает меньше власти не только для тех, кого эксплуатируют, но и для общества в целом, поскольку для поддержания этой динамики между собственниками и несобственниками рабочий (и потребительский) класс должен оставаться разделенным, дезорганизованным и бессильным вне того, что служит интересам поддержания этих паразитических отношений. Это искусственно ограничивает выбор общества как коллективно, так и индивидуально, и создает искусственные разделения среди людей, не позволяя нам объединить усилия для достижения общих целей, где единственное, что будет нас ограничивать, так это материальные условия в том мире, где мы живем, наши собственные силы и решения.
|
||||||
<b>Эксплуатация труда:</b> В рамках капитализма преследование прибыли определяет отношения между классом капиталистов и классом рабочих. Класс капиталистов стремится максимизировать свою прибыль, извлекая прибавочную ценность из труда рабочих. Это происходит через систему наемного труда, когда работники получают оплату, которая составляет лишь часть созданной ими ценности. Разница между созданной рабочими ценностью и их заработной платой остается у класса капиталистов в качестве прибыли. Эти эксплуатационные отношения, заложенные в капиталистическом способе производства, поддерживают социальное и экономическое неравенство, поскольку рабочие лишаются справедливой доли в созданном ими богатстве.
|
<b>Эксплуатация труда: </b> В рамках капитализма преследование прибыли определяет отношения между классом капиталистов и классом рабочих. Класс капиталистов стремится максимизировать свою прибыль, извлекая прибавочную ценность из труда рабочих. Это происходит через систему наемного труда, когда работники получают оплату, которая составляет лишь часть созданной ими ценности. Разница между созданной рабочими ценностью и их заработной платой остается у класса капиталистов в качестве прибыли. Эти эксплуатационные отношения, заложенные в капиталистическом способе производства, поддерживают социальное и экономическое неравенство, поскольку рабочие лишаются справедливой доли в созданном ими богатстве.
|
||||||
Точно так же, как дом нуждается в хорошем фундаменте, чтобы прочно стоять, любая система, которая направляет нашу жизнь, нуждается в прочной основе, поддерживающей ее структуру. К сожалению, капитализм построен на плохом фундаменте. Это приводит к неравенству, экономической эксплуатации, подрыву общественного благосостояния и отчуждению. Ясно, что без устранения этих основных проблем сама система не сможет обеспечить справедливое и равноправное общество.
|
Точно так же, как дом нуждается в хорошем фундаменте, чтобы прочно стоять, любая система, которая направляет нашу жизнь, нуждается в прочной основе, поддерживающей ее структуру. К сожалению, капитализм построен на плохом фундаменте. Это приводит к неравенству, экономической эксплуатации, подрыву общественного благосостояния и отчуждению. Ясно, что без устранения этих основных проблем сама система не сможет обеспечить справедливое и равноправное общество.
|
||||||
### Цена, которую мы платим
|
### Цена, которую мы платим
|
||||||
Капитализм имеет множество укоренившихся системных проблем, которые так или иначе влияют на благополучие каждого отдельного участника.
|
Капитализм имеет множество укоренившихся системных проблем, которые так или иначе влияют на благополучие каждого отдельного участника.
|
||||||
<b>Ощущение отчуждения от работы:</b> В поиске прибыли и конкуренции, капитализм разрушает врожденную связь с нашей работой, что оставляет нас с ощущением отчуждения. Когда прибыль становится главной целью, мы оказываемся всего лишь винтиками в экономическом механизме. Это отчуждение от нашего труда уничтожает наше чувство цели и удовлетворения, подавляет наш творческий и личностный потенциал.
|
Ощущение отчуждения от работы: В поиске прибыли и конкуренции, капитализм разрушает врожденную связь с нашей работой, что оставляет нас с ощущением отчуждения. Когда прибыль становится главной целью, мы оказываемся всего лишь винтиками в экономическом механизме. Это отчуждение от нашего труда уничтожает наше чувство цели и удовлетворения, подавляет наш творческий и личностный потенциал.
|
||||||
<b>Эксплуатация нашего труда:</b> В основе капитализма лежит присвоение нашего труда. Предоставляя нам заработную плату, которая не соответствует реальной ценности, которую мы произвели, капиталистический класс ворует труд рабочего класса. Эта эксплуатация закрепляет экономическое неравенство, так как мы лишаемся справедливой доли плодов своего труда. В результате возникает разрыв в уровне благосостояния между классами, что вызывает ощущение беспомощности и несправедливости, дополнительно увеличивая пропасть между имущими и неимущими.
|
Эксплуатация нашего труда: В основе капитализма лежит присвоение нашего труда. Предоставляя нам заработную плату, которая не соответствует реальной ценности, которую мы произвели, капиталистический класс ворует труд рабочего класса. Эта эксплуатация закрепляет экономическое неравенство, так как мы лишаемся справедливой доли плодов своего труда. В результате возникает разрыв в уровне благосостояния между классами, что вызывает ощущение беспомощности и несправедливости, дополнительно увеличивая пропасть между имущими и неимущими.
|
||||||
<b>Социальная фрагментация:</b> Основанный на беспрекословной гонке за личной выгодой, фундамент капитализма разрушает нашу социальную связь друг с другом и не позволяет нам сотрудничать с друг другом. Конкурентное мышление, поощряемое капитализмом, ставит собственные интересы выше коллективного благосостояния, разрушая структуру нашего общества. В этой гиперконкурентной среде наши социальные связи рвутся, эмпатия ослабевает, а наши сообщества становятся раздробленными.
|
Социальная фрагментация: Основанный на беспрекословной гонке за личной выгодой, фундамент капитализма разрушает нашу социальную связь друг с другом и не позволяет нам сотрудничать с друг другом. Конкурентное мышление, поощряемое капитализмом, ставит собственные интересы выше коллективного благосостояния, разрушая структуру нашего общества. В этой гиперконкурентной среде наши социальные связи рвутся, эмпатия ослабевает, а наши сообщества становятся раздробленными.
|
||||||
</b>Культура потребительства и материализма:</b> В капитализме процветает культура потребления и материализма, приравнивающая нашу личную ценность к накоплению материальных благ. Эта бесконечная гонка за материальным достатком приводит нас к долгам, обостряет наши взаимоотношения и оставляет нас с пустым чувством удовлетворения. Зацикленность на материальном богатстве препятствует стремлению к личному развитию, значимым опытам и настоящему благополучию, уводя нас в ловушку бесконечного потребления.
|
Культура потребительства и материализма: В капитализме процветает культура потребления и материализма, приравнивающая нашу личную ценность к накоплению материальных благ. Эта бесконечная гонка за материальным достатком приводит нас к долгам, обостряет наши взаимоотношения и оставляет нас с пустым чувством удовлетворения. Зацикленность на материальном богатстве препятствует стремлению к личному развитию, значимым опытам и настоящему благополучию, уводя нас в ловушку бесконечного потребления.
|
||||||
<b>Деградация окружающей среды:</b> Жажда непрерывной прибыли в капитализме игнорирует долгосрочное благополучие нашей планеты. Краткосрочные экономические интересы имеют приоритет над экологической устойчивостью. Практики капитализма способствуют истощению ресурсов, загрязнению окружающей среды и изменению климата, что подвергает нашу экологическую благосостояние серьезной угрозе. Эти негативные последствия для окружающей среды отражаются на наших сообществах, влияют на наше физическое и психическое благополучие.
|
Деградация окружающей среды: Жажда непрерывной прибыли в капитализме игнорирует долгосрочное благополучие нашей планеты. Краткосрочные экономические интересы имеют приоритет над экологической устойчивостью. Практики капитализма способствуют истощению ресурсов, загрязнению окружающей среды и изменению климата, что подвергает нашу экологическую благосостояние серьезной угрозе. Эти негативные последствия для окружающей среды отражаются на наших сообществах, влияют на наше физическое и психическое благополучие.
|
||||||
Ценности и практика, укоренившиеся в капитализме, выходят далеко за рамки экономических соображений, проникая во все аспекты нашей жизни.
|
Ценности и практика, укоренившиеся в капитализме, выходят далеко за рамки экономических соображений, проникая во все аспекты нашей жизни.
|
||||||
|
|
||||||
## Государственность
|
## Государственность
|
||||||
|
@ -129,4 +129,5 @@
|
||||||
<b>Группы:</b> Мы организуем группы в целях обучения, защиты интересов и взаимопомощи. Наша цель — продемонстрировать людям, как нынешние политико-экономические системы пагубно влияют на наше благополучие, представить им альтернативные подходы и оказать взаимопомощь, чтобы облегчить проблемы жизни при капитализме.
|
<b>Группы:</b> Мы организуем группы в целях обучения, защиты интересов и взаимопомощи. Наша цель — продемонстрировать людям, как нынешние политико-экономические системы пагубно влияют на наше благополучие, представить им альтернативные подходы и оказать взаимопомощь, чтобы облегчить проблемы жизни при капитализме.
|
||||||
<b>Коммуны:</b> Мы создаем коммуны на основе либертарных социалистических принципов, где люди владеют своей землей, домами и средствами производства, а также принимают решения, используя прямую демократию. Мы постепенно, по одной коммуне, расширяем наш социалистический мир.
|
<b>Коммуны:</b> Мы создаем коммуны на основе либертарных социалистических принципов, где люди владеют своей землей, домами и средствами производства, а также принимают решения, используя прямую демократию. Мы постепенно, по одной коммуне, расширяем наш социалистический мир.
|
||||||
<b>Кооперативы:</b> Мы создаем рабочие кооперативы для финансирования деятельности наших групп и коммун. Признавая, что экономическая власть влияет на политическую власть, мы считаем создание кооперативов одним из первых шагов на пути к социализму.
|
<b>Кооперативы:</b> Мы создаем рабочие кооперативы для финансирования деятельности наших групп и коммун. Признавая, что экономическая власть влияет на политическую власть, мы считаем создание кооперативов одним из первых шагов на пути к социализму.
|
||||||
Развитие вышеупомянутых инициатив прокладывает четкий путь к избавлению от эксплуататорских и репрессивных систем власти и созданию новых систем, основанных на сотрудничестве и солидарности. Все, что нам нужно, — это собрать критическую массу людей, чтобы противостоять угнетению и эксплуатации.
|
Развитие вышеупомянутых инициатив прокладывает четкий путь к избавлению от эксплуататорских и репрессивных систем власти и созданию новых систем, основанных на сотрудничестве и солидарности. Все, что нам нужно, — это собрать критическую массу людей, чтобы противостоять угнетению и эксплуатации.
|
||||||
|
|
||||||
|
|
|
@ -7,8 +7,5 @@
|
||||||
"communes": "Коммуны",
|
"communes": "Коммуны",
|
||||||
"cooperatives": "Кооперативы",
|
"cooperatives": "Кооперативы",
|
||||||
"parties": "Партии",
|
"parties": "Партии",
|
||||||
"partners": "Партнеры",
|
"partners": "Партнеры"
|
||||||
"tradeUnions": "Профсоюзы",
|
|
||||||
"login": "Войти",
|
|
||||||
"profile": "Профиль"
|
|
||||||
}
|
}
|
|
@ -1,11 +0,0 @@
|
||||||
{
|
|
||||||
"tradeUnions": "Профсоюзы",
|
|
||||||
"p1": "Профсоюзы играют ключевую роль в защите прав и благосостояния трудящихся. Профсоюзы составляют неотъемлемую часть нашей организации, позволяя работникам объединяться и вести коллективные переговоры о справедливой заработной плате, лучших условиях труда и улучшенных трудовых правах. Укрепляя солидарность и мобилизуя для коллективных действий, профсоюзы вносят свой вклад в нашу всеобъемлющую миссию по устранению эксплуататорских систем и установлению мира, основанного на децентрализованном принятии решений, прямой демократии и самоуправлении рабочих.",
|
|
||||||
"subheading1": "Наши профсоюзы",
|
|
||||||
"location": "Локация",
|
|
||||||
"members": "Участники",
|
|
||||||
"contact": "Контакт",
|
|
||||||
"TradeUnion": "Профсоюз",
|
|
||||||
"tradeUnion": "профсоюз",
|
|
||||||
"map-prompt": "Хочешь оказаться на нашей карте? Напиши нам!"
|
|
||||||
}
|
|
|
@ -10,6 +10,7 @@ import watch from "rollup-plugin-watch";
|
||||||
|
|
||||||
const production = !process.env.ROLLUP_WATCH;
|
const production = !process.env.ROLLUP_WATCH;
|
||||||
|
|
||||||
|
|
||||||
function serve() {
|
function serve() {
|
||||||
let server;
|
let server;
|
||||||
|
|
||||||
|
|
|
@ -1,140 +0,0 @@
|
||||||
<svelte:options tag="admin-panel" />
|
|
||||||
|
|
||||||
<script>
|
|
||||||
|
|
||||||
// Import statements
|
|
||||||
import { onMount, getContext } from 'svelte'
|
|
||||||
import { writable } from 'svelte/store'
|
|
||||||
import { getData, sendData } from "/js/libraries/serverTools.js"
|
|
||||||
|
|
||||||
//Import components
|
|
||||||
import "/js/components/select-component.js"
|
|
||||||
import "/js/components/switch-component.js"
|
|
||||||
import "/js/components/pane-aligner.js"
|
|
||||||
|
|
||||||
//Export statements
|
|
||||||
|
|
||||||
// Main code
|
|
||||||
let section
|
|
||||||
let requests_verification = []
|
|
||||||
let loaded = writable(0)
|
|
||||||
let keyRequests = 0
|
|
||||||
let numLoaded = 1
|
|
||||||
let mainPane
|
|
||||||
|
|
||||||
let context = getContext("profile-component")
|
|
||||||
|
|
||||||
function requests_callback(response) {
|
|
||||||
let parsed = JSON.parse(response)
|
|
||||||
requests_verification.push(...parsed)
|
|
||||||
loaded.update((val) => {
|
|
||||||
return val + 1
|
|
||||||
})
|
|
||||||
}
|
|
||||||
getData("/xx/get-unverified-users",requests_callback)
|
|
||||||
|
|
||||||
function approveRequest(ind,user_id) {
|
|
||||||
sendData("/xx/verify",{user_id: user_id})
|
|
||||||
requests_verification.splice(ind,1)
|
|
||||||
keyRequests = keyRequests + 1
|
|
||||||
}
|
|
||||||
|
|
||||||
function addVerified() {
|
|
||||||
getData("/xx/add-verified-groups",() => "")
|
|
||||||
}
|
|
||||||
|
|
||||||
onMount(() => {
|
|
||||||
})
|
|
||||||
</script>
|
|
||||||
|
|
||||||
{#key $loaded}
|
|
||||||
{#if $loaded==numLoaded}
|
|
||||||
<pane-aligner>
|
|
||||||
<div bind:this={mainPane} slot="main">
|
|
||||||
<h3>User verification</h3>
|
|
||||||
<section bind:this={section} class="entries-section">
|
|
||||||
{#key keyRequests}
|
|
||||||
{#each requests_verification as req,ind}
|
|
||||||
<div>
|
|
||||||
<div class="change-field-line">
|
|
||||||
<span>{req.email}</span>
|
|
||||||
<div class="request-button-wrapper">
|
|
||||||
<button on:click={() => approveRequest(ind,req.user_id)} class="default-button approve-button">Approve</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/each}
|
|
||||||
{/key}
|
|
||||||
<button on:click={addVerified} id="add-verified-button" class="default-button">Add verified pins</button>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</pane-aligner>
|
|
||||||
{/if}
|
|
||||||
{/key}
|
|
||||||
|
|
||||||
|
|
||||||
<style>
|
|
||||||
@import '/css/common.css';
|
|
||||||
|
|
||||||
.request-button-wrapper {
|
|
||||||
display: flex;
|
|
||||||
gap: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.default-button {
|
|
||||||
height: 2.7rem;
|
|
||||||
padding: 0rem 1rem;
|
|
||||||
font-family: var(--sans-serif,sans-serif);
|
|
||||||
font-size: 1.15rem;
|
|
||||||
color: white;
|
|
||||||
background-color: var(--red);
|
|
||||||
border-color: var(--red);
|
|
||||||
border-radius: 0.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.approve-button {
|
|
||||||
margin-top: -0.45rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
#add-verified-button {
|
|
||||||
margin-top: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.entries-section {
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.entries-section >div {
|
|
||||||
height: 3.5rem;
|
|
||||||
padding-bottom: 0.75rem;
|
|
||||||
padding-top: 0.75rem;
|
|
||||||
border-bottom: 0.14rem solid;
|
|
||||||
border-color: #cdcdcd;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* add padding to every line to center the diving line*/
|
|
||||||
.entries-section >div:last-child {
|
|
||||||
padding-bottom: 0.75rem;
|
|
||||||
padding-top: 0.75rem;
|
|
||||||
border-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*---Change field-------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
.change-field-line {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*---General section-----------------------------------------------------------*/
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
margin-bottom: 0.5rem;
|
|
||||||
}
|
|
||||||
span {
|
|
||||||
font-family: var(--sans-serif,sans-serif);
|
|
||||||
font-size: 1.15rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
</style>
|
|
|
@ -25,7 +25,6 @@
|
||||||
let googleButton
|
let googleButton
|
||||||
|
|
||||||
let parentProps = getContext("auth")
|
let parentProps = getContext("auth")
|
||||||
let locale = "en"
|
|
||||||
|
|
||||||
function renderGoogle() {
|
function renderGoogle() {
|
||||||
if (parentProps.googleInit) {
|
if (parentProps.googleInit) {
|
||||||
|
@ -81,7 +80,7 @@
|
||||||
<input bind:this={rememberMe} type="checkbox" id="remember-me-checkbox"><label id="remember-me-label" for="passwordInput">remember me</label>
|
<input bind:this={rememberMe} type="checkbox" id="remember-me-checkbox"><label id="remember-me-label" for="passwordInput">remember me</label>
|
||||||
</div>
|
</div>
|
||||||
<button class="auth-button" on:click="{() => AuthTools.login(msgs,inputs)}">Log in</button>
|
<button class="auth-button" on:click="{() => AuthTools.login(msgs,inputs)}">Log in</button>
|
||||||
<a id="forgot-password" href={"/"+locale+"/reset-password"}>Forgot password?</a>
|
<a id="forgot-password" href="forgot-password">Forgot password?</a>
|
||||||
<!--
|
<!--
|
||||||
<hr class="auth-line">
|
<hr class="auth-line">
|
||||||
<div class="auth-methods-group">
|
<div class="auth-methods-group">
|
||||||
|
|
|
@ -1,47 +0,0 @@
|
||||||
<svelte:options tag="reset-password-component" />
|
|
||||||
|
|
||||||
<script>
|
|
||||||
|
|
||||||
// Import statements
|
|
||||||
import { onMount } from 'svelte'
|
|
||||||
|
|
||||||
// Export statements
|
|
||||||
|
|
||||||
|
|
||||||
// Main code
|
|
||||||
|
|
||||||
onMount(() => {
|
|
||||||
|
|
||||||
|
|
||||||
})
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<div id="container">
|
|
||||||
<div id="text-container">
|
|
||||||
<p>Contact us at our Discord Server. We are going to send a new password to the email that you used for registration.</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<style>
|
|
||||||
|
|
||||||
@import '/css/common.css';
|
|
||||||
|
|
||||||
#text-container {
|
|
||||||
position: relative;
|
|
||||||
max-width: calc(100vw - 4rem);
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
#container {
|
|
||||||
margin: auto;
|
|
||||||
max-width: 800px;
|
|
||||||
margin-top: 1rem;
|
|
||||||
margin-bottom: 4rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
#container p {
|
|
||||||
text-align: justify;
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
|
@ -109,7 +109,7 @@
|
||||||
<div id="remember-me">
|
<div id="remember-me">
|
||||||
<input bind:this={rememberMe} type="checkbox" id="remember-me-checkbox"><label id="remember-me-label" for="passwordInput">remember me</label>
|
<input bind:this={rememberMe} type="checkbox" id="remember-me-checkbox"><label id="remember-me-label" for="passwordInput">remember me</label>
|
||||||
</div>
|
</div>
|
||||||
<button class="auth-button" on:click="{AuthTools.signup(msgs,inputs,AuthTools.toLandingPage)}">Sign up</button> <!--() => AuthTools.signup(msgs,inputs,AuthTools.toLandingPage)-->
|
<button class="auth-button" on:click="{showDialog}">Sign up</button> <!--() => AuthTools.signup(msgs,inputs,AuthTools.toLandingPage)-->
|
||||||
<p id="forgot-password"></p>
|
<p id="forgot-password"></p>
|
||||||
<!--
|
<!--
|
||||||
<hr class="auth-line">
|
<hr class="auth-line">
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
let mapContainer
|
let mapContainer
|
||||||
|
|
||||||
function createMap(center,zoom) {
|
function createMap(center,zoom) {
|
||||||
map = L.map(mapContainer, {
|
let map = L.map(mapContainer, {
|
||||||
center: center,
|
center: center,
|
||||||
zoom: zoom,
|
zoom: zoom,
|
||||||
});
|
});
|
||||||
|
|
|
@ -77,6 +77,7 @@
|
||||||
<h4 class="country-name">{getCountry(name)}</h4>
|
<h4 class="country-name">{getCountry(name)}</h4>
|
||||||
<div class="country-block">
|
<div class="country-block">
|
||||||
{#each entries as entry}
|
{#each entries as entry}
|
||||||
|
{console.log(entry)}
|
||||||
<div class="location-info">
|
<div class="location-info">
|
||||||
<div class="img-general-info">
|
<div class="img-general-info">
|
||||||
<div>
|
<div>
|
||||||
|
|
|
@ -53,7 +53,7 @@ footer {
|
||||||
position: relative;
|
position: relative;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 13.2875rem;
|
height: auto;
|
||||||
background: var(--gray);
|
background: var(--gray);
|
||||||
border-top: var(--red) solid 0.5rem;
|
border-top: var(--red) solid 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
import { writable } from 'svelte/store';
|
import { writable } from 'svelte/store';
|
||||||
import { loadLocaleContent, getData, sendData } from "/js/libraries/serverTools.js"
|
import { loadLocaleContent, getData, sendData } from "/js/libraries/serverTools.js"
|
||||||
import { addMarkersEntries, translate } from "/js/libraries/mapTools.js"
|
import { addMarkersEntries, translate } from "/js/libraries/mapTools.js"
|
||||||
import { validatePosNumber } from "/js/libraries/miscTools.js"
|
|
||||||
|
|
||||||
// Import components
|
// Import components
|
||||||
import "/js/components/map-component.js"
|
import "/js/components/map-component.js"
|
||||||
|
@ -370,7 +369,7 @@
|
||||||
<div id="members-input-wrapper" class="input-label-wrapper">
|
<div id="members-input-wrapper" class="input-label-wrapper">
|
||||||
<label for="members-input">Members: </label>
|
<label for="members-input">Members: </label>
|
||||||
<div class="input-wrapper">
|
<div class="input-wrapper">
|
||||||
<input bind:this={membersInput} id="members-input" type="number" value={1} on:input={(event) => validatePosNumber(event,membersInput,10000)}>
|
<input bind:this={membersInput} id="members-input" type="text" value={1}>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
|
@ -43,10 +43,7 @@
|
||||||
|
|
||||||
function mapCallback(createMap,content,locale) {
|
function mapCallback(createMap,content,locale) {
|
||||||
let map = createMap([22, 0],2)
|
let map = createMap([22, 0],2)
|
||||||
let options = {
|
addMarkersEntries(entries,entriesByCountry,map,content,locale,addGroupPinContent,"green")
|
||||||
enableCountryGrouping: true,
|
|
||||||
}
|
|
||||||
addMarkersEntries(entries,entriesByCountry,map,content,locale,addGroupPinContent,"green",options)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getCountry(x) {
|
function getCountry(x) {
|
||||||
|
@ -81,13 +78,7 @@
|
||||||
<div class="location-info">
|
<div class="location-info">
|
||||||
<p><b>{$content.location}: </b>{getAddress(entry)}</p>
|
<p><b>{$content.location}: </b>{getAddress(entry)}</p>
|
||||||
<p><b>{$content.members}: </b>{entry.members}</p>
|
<p><b>{$content.members}: </b>{entry.members}</p>
|
||||||
{#if entry.contact.includes("@") && entry.contact.trim().split(" ").length==1}
|
<p><b>{$content.contact}: </b><a href={entry.contact} target=;_blank; rel=noreferrer>{entry.contact}</a></p>
|
||||||
<p><b>{$content.contact}: </b><a href={"mailto:" + entry.contact} target=;_blank; rel=noreferrer>{entry.contact}</a></p>
|
|
||||||
{:else if entry.contact.includes("http")}
|
|
||||||
<p><b>{$content.contact}: </b><a href={entry.contact} target=;_blank; rel=noreferrer>{entry.contact}</a></p>
|
|
||||||
{:else}
|
|
||||||
<p><b>{$content.contact}: </b>{entry.contact}</p>
|
|
||||||
{/if}
|
|
||||||
</div>
|
</div>
|
||||||
{/each}
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -21,7 +21,6 @@
|
||||||
loadLocaleContent(content,"communes-component",loaded)
|
loadLocaleContent(content,"communes-component",loaded)
|
||||||
loadLocaleContent(content,"cooperatives-component",loaded)
|
loadLocaleContent(content,"cooperatives-component",loaded)
|
||||||
loadLocaleContent(content,"parties-component",loaded)
|
loadLocaleContent(content,"parties-component",loaded)
|
||||||
loadLocaleContent(content,"trade-unions-component",loaded)
|
|
||||||
loadLocaleContent(content,"countries",loaded)
|
loadLocaleContent(content,"countries",loaded)
|
||||||
let locale = loadLocaleContent(content,"join-us-component",loaded)
|
let locale = loadLocaleContent(content,"join-us-component",loaded)
|
||||||
|
|
||||||
|
@ -49,27 +48,19 @@
|
||||||
getData("/assets/communes.json",(response) => callback(response,"communes"))
|
getData("/assets/communes.json",(response) => callback(response,"communes"))
|
||||||
getData("/assets/cooperatives.json",(response) => callback(response,"cooperatives"))
|
getData("/assets/cooperatives.json",(response) => callback(response,"cooperatives"))
|
||||||
getData("/assets/parties.json",(response) => callback(response,"parties"))
|
getData("/assets/parties.json",(response) => callback(response,"parties"))
|
||||||
getData("/assets/trade-unions.json",(response) => callback(response,"tradeUnions"))
|
|
||||||
|
|
||||||
function mapCallback(createMap,content,locale) {
|
function mapCallback(createMap,content,locale) {
|
||||||
let map = createMap([22, 0],2)
|
let map = createMap([22, 0],2)
|
||||||
let options = {
|
let groupsMarkersLayer = addMarkersEntries(entries["groups"],entriesByCountry["groups"],map,content,locale,addGroupPinContent,"green")
|
||||||
enableCountryGrouping: true,
|
let communesMarkersLayer = addMarkersEntries(entries["communes"],entriesByCountry["communes"],map,content,locale,addCommunePinContent,"red")
|
||||||
}
|
let coopsMarkersLayer = addMarkersEntries(entries["cooperatives"],entriesByCountry["cooperatives"],map,content,locale,addCoopPinContent,"blue")
|
||||||
let groupsMarkersLayer = addMarkersEntries(entries["groups"],entriesByCountry["groups"],map,content,locale,addGroupPinContent,"green",options)
|
let partiesMarkersLayer = addMarkersEntries(entries["parties"],entriesByCountry["parties"],map,content,locale,addPartyPinContent,"gold")
|
||||||
let partiesMarkersLayer = addMarkersEntries(entries["parties"],entriesByCountry["parties"],map,content,locale,addPartyPinContent,"gold",options)
|
|
||||||
let tradeUnionsMarkersLayer = addMarkersEntries(entries["tradeUnions"],entriesByCountry["tradeUnions"],map,content,locale,addPartyPinContent,"violet",options)
|
|
||||||
let coopsMarkersLayer = addMarkersEntries(entries["cooperatives"],entriesByCountry["cooperatives"],map,content,locale,addCoopPinContent,"blue",options)
|
|
||||||
let communesMarkersLayer = addMarkersEntries(entries["communes"],entriesByCountry["communes"],map,content,locale,addCommunePinContent,"red",options)
|
|
||||||
|
|
||||||
|
|
||||||
let overlayMaps = {}
|
let overlayMaps = {}
|
||||||
overlayMaps[content.groups] = groupsMarkersLayer
|
overlayMaps[content.groups] = groupsMarkersLayer
|
||||||
overlayMaps[content.parties] = partiesMarkersLayer
|
|
||||||
overlayMaps[content.tradeUnions] = tradeUnionsMarkersLayer
|
|
||||||
overlayMaps[content.cooperatives] = coopsMarkersLayer
|
|
||||||
overlayMaps[content.communes] = communesMarkersLayer
|
overlayMaps[content.communes] = communesMarkersLayer
|
||||||
|
overlayMaps[content.cooperatives] = coopsMarkersLayer
|
||||||
|
overlayMaps[content.parties] = partiesMarkersLayer
|
||||||
L.control.layers(null, overlayMaps).addTo(map)
|
L.control.layers(null, overlayMaps).addTo(map)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -79,7 +70,7 @@
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{#key $loaded}
|
{#key $loaded}
|
||||||
{#if $loaded==12}
|
{#if $loaded==10}
|
||||||
<div id="container">
|
<div id="container">
|
||||||
<div id="text-container">
|
<div id="text-container">
|
||||||
<h1>{$content.heading}</h1>
|
<h1>{$content.heading}</h1>
|
||||||
|
@ -103,16 +94,14 @@
|
||||||
<p>{$content.findOur}</p>
|
<p>{$content.findOur}</p>
|
||||||
<ol id="entities-list">
|
<ol id="entities-list">
|
||||||
<li><a href={"/" + locale + "/groups"}>{$content.group}</a>,</li>
|
<li><a href={"/" + locale + "/groups"}>{$content.group}</a>,</li>
|
||||||
<li><a href={"/" + locale + "/parties"}>{$content.party}</a>,</li>
|
|
||||||
<li><a href={"/" + locale + "/trade-unions"}>{$content.tradeUnion}</a>,</li>
|
|
||||||
<li><a href={"/" + locale + "/cooperatives"}>{$content.cooperative}</a> {$content.or}</li>
|
|
||||||
<li><a href={"/" + locale + "/communes"}>{$content.commune}</a></li>
|
<li><a href={"/" + locale + "/communes"}>{$content.commune}</a></li>
|
||||||
|
<li><a href={"/" + locale + "/cooperatives"}>{$content.cooperative}</a> {$content.or}</li>
|
||||||
|
<li><a href={"/" + locale + "/parties"}>{$content.party}</a></li>
|
||||||
</ol>
|
</ol>
|
||||||
<p>{$content.nearYou}</p>
|
<p>{$content.nearYou}</p>
|
||||||
</div>
|
</div>
|
||||||
<p>{$content.noneNear} <a href="https://discord.gg/Qk8KUk787z" target="_blank" rel=noreferrer>{$content.DiscordServer}</a> {$content.or} <a href="https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh" target="_blank" rel=noreferrer>{$content.WhatsAppGroup}</a>{$content.helpStart}</p>
|
<p>{$content.noneNear} <a href="https://chat.whatsapp.com/BhnmUNljUxJ2AjeHUwyTKh" target="_blank" rel=noreferrer>{$content.WhatsAppGroup}</a> {$content.or} <a href="https://discord.gg/Qk8KUk787z" target="_blank" rel=noreferrer>{$content.DiscordServer}</a>{$content.helpStart}</p>
|
||||||
<map-component id="map" callback={(createMap) => mapCallback(createMap,$content,locale)} colors={["#23AC20","#CA2437","#217BC9","#FFD326"]}></map-component>
|
<map-component id="map" callback={(createMap) => mapCallback(createMap,$content,locale)} colors={["#23AC20","#CA2437","#217BC9","#FFD326"]}></map-component>
|
||||||
<p id="add-prompt">{$content["map-prompt"]}</p>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
@ -122,10 +111,6 @@
|
||||||
<style>
|
<style>
|
||||||
@import '/css/common.css';
|
@import '/css/common.css';
|
||||||
|
|
||||||
#add-prompt {
|
|
||||||
margin-bottom: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
#entities-list li {
|
#entities-list li {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
}
|
}
|
||||||
|
@ -145,16 +130,13 @@
|
||||||
background-image: url(https://www.libsoc.org/img/common/markers/marker-green.png);
|
background-image: url(https://www.libsoc.org/img/common/markers/marker-green.png);
|
||||||
}
|
}
|
||||||
#entities-list li:nth-of-type(2):before {
|
#entities-list li:nth-of-type(2):before {
|
||||||
background-image: url(https://www.libsoc.org/img/common/markers/marker-gold.png);
|
background-image: url(https://www.libsoc.org/img/common/markers/marker-red.png);
|
||||||
}
|
}
|
||||||
#entities-list li:nth-of-type(3):before {
|
#entities-list li:nth-of-type(3):before {
|
||||||
background-image: url(https://www.libsoc.org/img/common/markers/marker-violet.png);
|
|
||||||
}
|
|
||||||
#entities-list li:nth-of-type(4):before {
|
|
||||||
background-image: url(https://www.libsoc.org/img/common/markers/marker-blue.png);
|
background-image: url(https://www.libsoc.org/img/common/markers/marker-blue.png);
|
||||||
}
|
}
|
||||||
#entities-list li:nth-of-type(5):before {
|
#entities-list li:nth-of-type(4):before {
|
||||||
background-image: url(https://www.libsoc.org/img/common/markers/marker-red.png);
|
background-image: url(https://www.libsoc.org/img/common/markers/marker-gold.png);
|
||||||
}
|
}
|
||||||
|
|
||||||
#entities-list li::marker {
|
#entities-list li::marker {
|
||||||
|
@ -194,7 +176,7 @@
|
||||||
#map {
|
#map {
|
||||||
--height: 30rem;
|
--height: 30rem;
|
||||||
--width: 100%;
|
--width: 100%;
|
||||||
--margin-bottom: 0.5rem;
|
--margin-bottom: 3rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
#call-to-action-list > ol>li {
|
#call-to-action-list > ol>li {
|
||||||
|
|
|
@ -51,14 +51,11 @@
|
||||||
getData("/assets/communes.json",(response) => callback(response,"communes"))
|
getData("/assets/communes.json",(response) => callback(response,"communes"))
|
||||||
getData("/assets/cooperatives.json",(response) => callback(response,"cooperatives"))
|
getData("/assets/cooperatives.json",(response) => callback(response,"cooperatives"))
|
||||||
getData("/assets/parties.json",(response) => callback(response,"parties"))
|
getData("/assets/parties.json",(response) => callback(response,"parties"))
|
||||||
getData("/assets/trade-unions.json",(response) => callback(response,"tradeUnions"))
|
|
||||||
|
|
||||||
loadLocaleContent(content,"groups-component",loaded)
|
loadLocaleContent(content,"groups-component",loaded)
|
||||||
loadLocaleContent(content,"communes-component",loaded)
|
loadLocaleContent(content,"communes-component",loaded)
|
||||||
loadLocaleContent(content,"cooperatives-component",loaded)
|
loadLocaleContent(content,"cooperatives-component",loaded)
|
||||||
loadLocaleContent(content,"parties-component",loaded)
|
loadLocaleContent(content,"parties-component",loaded)
|
||||||
loadLocaleContent(content,"trade-unions-component",loaded)
|
|
||||||
|
|
||||||
loadLocaleContent(content,"countries",loaded)
|
loadLocaleContent(content,"countries",loaded)
|
||||||
let locale = loadLocaleContent(content,"landing-component",loaded,changeWidth)
|
let locale = loadLocaleContent(content,"landing-component",loaded,changeWidth)
|
||||||
changeWidth(locale)
|
changeWidth(locale)
|
||||||
|
@ -69,18 +66,15 @@
|
||||||
enableCountryGrouping: true,
|
enableCountryGrouping: true,
|
||||||
}
|
}
|
||||||
let groupsMarkersLayer = addMarkersEntries(entries["groups"],entriesByCountry["groups"],map,content,locale,addGroupPinContent,"green",options)
|
let groupsMarkersLayer = addMarkersEntries(entries["groups"],entriesByCountry["groups"],map,content,locale,addGroupPinContent,"green",options)
|
||||||
let partiesMarkersLayer = addMarkersEntries(entries["parties"],entriesByCountry["parties"],map,content,locale,addPartyPinContent,"gold",options)
|
|
||||||
let tradeUnionsMarkersLayer = addMarkersEntries(entries["tradeUnions"],entriesByCountry["tradeUnions"],map,content,locale,addPartyPinContent,"violet",options)
|
|
||||||
let coopsMarkersLayer = addMarkersEntries(entries["cooperatives"],entriesByCountry["cooperatives"],map,content,locale,addCoopPinContent,"blue",options)
|
|
||||||
let communesMarkersLayer = addMarkersEntries(entries["communes"],entriesByCountry["communes"],map,content,locale,addCommunePinContent,"red",options)
|
let communesMarkersLayer = addMarkersEntries(entries["communes"],entriesByCountry["communes"],map,content,locale,addCommunePinContent,"red",options)
|
||||||
|
let coopsMarkersLayer = addMarkersEntries(entries["cooperatives"],entriesByCountry["cooperatives"],map,content,locale,addCoopPinContent,"blue",options)
|
||||||
|
let partiesMarkersLayer = addMarkersEntries(entries["parties"],entriesByCountry["parties"],map,content,locale,addPartyPinContent,"gold",options)
|
||||||
|
|
||||||
let overlayMaps = {}
|
let overlayMaps = {}
|
||||||
overlayMaps[content.groups] = groupsMarkersLayer
|
overlayMaps[content.groups] = groupsMarkersLayer
|
||||||
overlayMaps[content.parties] = partiesMarkersLayer
|
|
||||||
overlayMaps[content.tradeUnions] = tradeUnionsMarkersLayer
|
|
||||||
overlayMaps[content.cooperatives] = coopsMarkersLayer
|
|
||||||
overlayMaps[content.communes] = communesMarkersLayer
|
overlayMaps[content.communes] = communesMarkersLayer
|
||||||
|
overlayMaps[content.cooperatives] = coopsMarkersLayer
|
||||||
|
overlayMaps[content.parties] = partiesMarkersLayer
|
||||||
|
|
||||||
L.control.layers(null, overlayMaps).addTo(map)
|
L.control.layers(null, overlayMaps).addTo(map)
|
||||||
}
|
}
|
||||||
|
@ -91,7 +85,7 @@
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{#key $loaded}
|
{#key $loaded}
|
||||||
{#if $loaded==12}
|
{#if $loaded==10}
|
||||||
<div id="container">
|
<div id="container">
|
||||||
<picture>
|
<picture>
|
||||||
<source srcset="/img/crowd.webp">
|
<source srcset="/img/crowd.webp">
|
||||||
|
@ -112,12 +106,7 @@
|
||||||
<p>{$content.partiesText}</p>
|
<p>{$content.partiesText}</p>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<a href={"/" + locale + "/trade-unions"}><h2>{$content.tradeUnionsTitle}</h2></a>
|
<a href={"/" + locale + "/coops"}><h2>{$content.cooperativesTitle}</h2></a>
|
||||||
<img id="trade-unions-img" src="/img/common/trade-unions.svg" alt="trade unions">
|
|
||||||
<p>{$content.tradeUnionsText}</p>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<a href={"/" + locale + "/cooperatives"}><h2>{$content.cooperativesTitle}</h2></a>
|
|
||||||
<img id="coops-img" src="/img/common/coops.svg" alt="coops">
|
<img id="coops-img" src="/img/common/coops.svg" alt="coops">
|
||||||
<p>{$content.cooperativesText}</p>
|
<p>{$content.cooperativesText}</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -145,7 +134,7 @@
|
||||||
</div>
|
</div>
|
||||||
-->
|
-->
|
||||||
<h1 id="find-us">{$content.findUs}</h1>
|
<h1 id="find-us">{$content.findUs}</h1>
|
||||||
<map-component id="map" callback={(createMap) => mapCallback(createMap,$content,locale)} colors={["#23AC20","#FFD326","#9D35CD","#217BC9","#CA2437"]}></map-component>
|
<map-component id="map" callback={(createMap) => mapCallback(createMap,$content,locale)} colors={["#23AC20","#CA2437","#217BC9","#FFD326"]}></map-component>
|
||||||
<h1>{$content.whatNow}</h1>
|
<h1>{$content.whatNow}</h1>
|
||||||
<div id="action-container">
|
<div id="action-container">
|
||||||
<a class="link-button" href={"/" + locale + "/join-us"}>{$content.joinUs}</a>
|
<a class="link-button" href={"/" + locale + "/join-us"}>{$content.joinUs}</a>
|
||||||
|
@ -168,14 +157,14 @@
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
margin: auto;
|
margin: auto;
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
max-width: 38rem;
|
max-width: 34rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.link-button {
|
.link-button {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
font-size: 1.6rem;
|
font-size: 1.6rem;
|
||||||
font-family: var(--sans-serif,sans-serif);
|
font-family: var(--sans-serif,sans-serif);
|
||||||
width: 17rem;
|
width: 14rem;
|
||||||
line-height: 4rem;
|
line-height: 4rem;
|
||||||
background: var(--red);
|
background: var(--red);
|
||||||
color: white;
|
color: white;
|
||||||
|
@ -199,7 +188,7 @@
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
#groups-img, #communes-img, #coops-img, #parties-img, #trade-unions-img {
|
#groups-img, #communes-img, #coops-img, #parties-img {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
transform: translate(-50%);
|
transform: translate(-50%);
|
||||||
|
@ -213,11 +202,6 @@
|
||||||
height: 7.5rem;
|
height: 7.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
#trade-unions-img {
|
|
||||||
margin-top: 0.5rem;
|
|
||||||
height: 7.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
#text-container {
|
#text-container {
|
||||||
max-width: calc(100vw - 4rem);
|
max-width: calc(100vw - 4rem);
|
||||||
margin: auto;
|
margin: auto;
|
||||||
|
@ -225,7 +209,6 @@
|
||||||
|
|
||||||
#crowd {
|
#crowd {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: min(248.25px,calc(100vw / 3.2225));
|
|
||||||
margin-bottom: 2rem;
|
margin-bottom: 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -247,18 +230,13 @@
|
||||||
#container-grid {
|
#container-grid {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: var(--grid-width);
|
grid-template-columns: var(--grid-width);
|
||||||
grid-template-rows: auto auto;
|
grid-template-rows: var(--grid-width);
|
||||||
grid-gap: 4rem;
|
grid-gap: 4rem;
|
||||||
row-gap: 2.5rem;
|
row-gap: 2.5rem;
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
margin-bottom: 1rem;
|
margin-bottom: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
#container-grid>:last-child {
|
|
||||||
grid-column: 1/span 2;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#container-grid > div {
|
#container-grid > div {
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,11 +101,7 @@
|
||||||
<label id="hamb" for="side-menu"><span id="hamb-line"></span></label>
|
<label id="hamb" for="side-menu"><span id="hamb-line"></span></label>
|
||||||
<!-- Logo -->
|
<!-- Logo -->
|
||||||
<a id=logo-container href={"/" + locale + "/"}>
|
<a id=logo-container href={"/" + locale + "/"}>
|
||||||
<picture>
|
<img src="/img/common/flag.png" id="navbar-logo" alt="logo">
|
||||||
<source srcset="/img/common/flag.webp">
|
|
||||||
<source srcset="/img/common/flag.png">
|
|
||||||
<img id="navbar-logo" alt="logo">
|
|
||||||
</picture>
|
|
||||||
<span bind:this={logoText} id="navbar-logo-text" >{@html $content.orgName}</span>
|
<span bind:this={logoText} id="navbar-logo-text" >{@html $content.orgName}</span>
|
||||||
</a>
|
</a>
|
||||||
<!-- Menu -->
|
<!-- Menu -->
|
||||||
|
@ -119,10 +115,9 @@
|
||||||
<button on:click={() => showDropdown(initiativesDropdown)} on:focusout={() => hide(initiativesDropdown)} class="options-button">{$content.initiatives}</button>
|
<button on:click={() => showDropdown(initiativesDropdown)} on:focusout={() => hide(initiativesDropdown)} class="options-button">{$content.initiatives}</button>
|
||||||
<div bind:this={initiativesDropdown} class="options-dropdown">
|
<div bind:this={initiativesDropdown} class="options-dropdown">
|
||||||
<a href={"/"+locale+"/groups"}>{$content.groups}</a>
|
<a href={"/"+locale+"/groups"}>{$content.groups}</a>
|
||||||
<a href={"/"+locale+"/parties"}>{$content.parties}</a>
|
|
||||||
<a href={"/"+locale+"/trade-unions"}>{$content.tradeUnions}</a>
|
|
||||||
<a href={"/"+locale+"/cooperatives"}>{$content.cooperatives}</a>
|
|
||||||
<a href={"/"+locale+"/communes"}>{$content.communes}</a>
|
<a href={"/"+locale+"/communes"}>{$content.communes}</a>
|
||||||
|
<a href={"/"+locale+"/cooperatives"}>{$content.cooperatives}</a>
|
||||||
|
<a href={"/"+locale+"/parties"}>{$content.parties}</a>
|
||||||
<a href={"/"+locale+"/partners"}>{$content.partners}</a>
|
<a href={"/"+locale+"/partners"}>{$content.partners}</a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
@ -115,10 +115,9 @@
|
||||||
<button on:click={() => showDropdown(initiativesDropdown)} on:focusout={() => hide(initiativesDropdown)} class="options-button">{$content.initiatives}</button>
|
<button on:click={() => showDropdown(initiativesDropdown)} on:focusout={() => hide(initiativesDropdown)} class="options-button">{$content.initiatives}</button>
|
||||||
<div bind:this={initiativesDropdown} class="options-dropdown">
|
<div bind:this={initiativesDropdown} class="options-dropdown">
|
||||||
<a href={"/"+locale+"/groups"}>{$content.groups}</a>
|
<a href={"/"+locale+"/groups"}>{$content.groups}</a>
|
||||||
<a href={"/"+locale+"/parties"}>{$content.parties}</a>
|
|
||||||
<a href={"/"+locale+"/trade-unions"}>{$content.tradeUnions}</a>
|
|
||||||
<a href={"/"+locale+"/cooperatives"}>{$content.cooperatives}</a>
|
|
||||||
<a href={"/"+locale+"/communes"}>{$content.communes}</a>
|
<a href={"/"+locale+"/communes"}>{$content.communes}</a>
|
||||||
|
<a href={"/"+locale+"/cooperatives"}>{$content.cooperatives}</a>
|
||||||
|
<a href={"/"+locale+"/parties"}>{$content.parties}</a>
|
||||||
<a href={"/"+locale+"/partners"}>{$content.partners}</a>
|
<a href={"/"+locale+"/partners"}>{$content.partners}</a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
@ -43,10 +43,7 @@
|
||||||
|
|
||||||
function mapCallback(createMap,content,locale) {
|
function mapCallback(createMap,content,locale) {
|
||||||
let map = createMap([22, 0],2)
|
let map = createMap([22, 0],2)
|
||||||
let options = {
|
addMarkersEntries(entries,entriesByCountry,map,content,locale,addPartyPinContent,"gold")
|
||||||
enableCountryGrouping: true,
|
|
||||||
}
|
|
||||||
addMarkersEntries(entries,entriesByCountry,map,content,locale,addPartyPinContent,"gold",options)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getCountry(x) {
|
function getCountry(x) {
|
||||||
|
|
|
@ -43,10 +43,7 @@
|
||||||
|
|
||||||
function mapCallback(createMap,content,locale) {
|
function mapCallback(createMap,content,locale) {
|
||||||
let map = createMap([22, 0],2)
|
let map = createMap([22, 0],2)
|
||||||
let options = {
|
addMarkersEntries(entries,entriesByCountry,map,content,locale,addPartnersPinContent,"blue")
|
||||||
enableCountryGrouping: true,
|
|
||||||
}
|
|
||||||
addMarkersEntries(entries,entriesByCountry,map,content,locale,addPartnersPinContent,"blue",options)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getCountry(x) {
|
function getCountry(x) {
|
||||||
|
@ -58,15 +55,6 @@
|
||||||
return location.map(x => locale=="en" ? x : translate($content,x)).join(", ")
|
return location.map(x => locale=="en" ? x : translate($content,x)).join(", ")
|
||||||
}
|
}
|
||||||
|
|
||||||
function createMailToLink(link) {
|
|
||||||
if (link.includes("@")) {
|
|
||||||
return "mailto:" + link
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return link
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
|
|
||||||
})
|
})
|
||||||
|
@ -98,7 +86,7 @@
|
||||||
<p><b>{$content.name}: </b>{entry.name}</p>
|
<p><b>{$content.name}: </b>{entry.name}</p>
|
||||||
<p><b>{$content.location}: </b>{getAddress(entry)}</p>
|
<p><b>{$content.location}: </b>{getAddress(entry)}</p>
|
||||||
<p><b>{$content.website}: </b><a href={entry.website} target=;_blank; rel=noreferrer>{entry.website}</a></p>
|
<p><b>{$content.website}: </b><a href={entry.website} target=;_blank; rel=noreferrer>{entry.website}</a></p>
|
||||||
<p><b>{$content.contact}: </b><a href={createMailToLink(entry.contact)} target=;_blank; rel=noreferrer>{entry.contact}</a></p>
|
<p><b>{$content.contact}: </b><a href={entry.website} target=;_blank; rel=noreferrer>{entry.contact}</a></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p><b>{$content.description}: </b>{entry.description}</p>
|
<p><b>{$content.description}: </b>{entry.description}</p>
|
||||||
|
|
|
@ -15,7 +15,6 @@
|
||||||
import "/js/components/profile-communes.js"
|
import "/js/components/profile-communes.js"
|
||||||
import "/js/components/profile-coops.js"
|
import "/js/components/profile-coops.js"
|
||||||
import "/js/components/profile-parties.js"
|
import "/js/components/profile-parties.js"
|
||||||
import "/js/components/profile-trade-unions.js"
|
|
||||||
import "/js/components/groups-add-component.js"
|
import "/js/components/groups-add-component.js"
|
||||||
|
|
||||||
// Main code
|
// Main code
|
||||||
|
@ -27,7 +26,6 @@
|
||||||
let communes
|
let communes
|
||||||
let coops
|
let coops
|
||||||
let parties
|
let parties
|
||||||
let tradeUnions
|
|
||||||
let panes
|
let panes
|
||||||
let groupsAdd
|
let groupsAdd
|
||||||
|
|
||||||
|
@ -36,7 +34,6 @@
|
||||||
let communesButton
|
let communesButton
|
||||||
let coopsButton
|
let coopsButton
|
||||||
let partiesButton
|
let partiesButton
|
||||||
let tradeUnionsButton
|
|
||||||
let buttons
|
let buttons
|
||||||
|
|
||||||
let currentPaneIndex = 0
|
let currentPaneIndex = 0
|
||||||
|
@ -69,21 +66,18 @@
|
||||||
setTimeout(f,100)
|
setTimeout(f,100)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
let svgItems = svgFromObject(svgObject)
|
let svgItem = svgFromObject(svgObject)
|
||||||
if (svgItems.length==0) {
|
if (svgItem==null) {
|
||||||
let f = () => styleField(div,weight,color)
|
let f = () => styleField(div,weight,color)
|
||||||
setTimeout(f,100)
|
setTimeout(f,100)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
div.style.fontWeight = weight
|
div.style.fontWeight = weight
|
||||||
for (let item of svgItems) {
|
svgItem.setAttribute("fill", color)
|
||||||
let fill = item.getAttribute("fill")
|
|
||||||
if (fill!="#fff" && fill!=null) {
|
|
||||||
item.setAttribute("fill", color)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function fillFields() {
|
function fillFields() {
|
||||||
|
@ -104,10 +98,10 @@
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
panes = [general,groups,communes,coops,parties]
|
panes = [general,groups,communes,coops,parties]
|
||||||
buttons = [generalButton,groupsButton,communesButton,coopsButton,partiesButton,tradeUnionsButton]
|
buttons = [generalButton,groupsButton,communesButton,coopsButton,partiesButton]
|
||||||
if ($loaded==1 && panes.every(x => valid(x)) && buttons.every(x => valid(x))) {
|
if ($loaded==1 && panes.every(x => valid(x)) && buttons.every(x => valid(x))) {
|
||||||
panes = [general,groups,communes,coops,parties,tradeUnions]
|
panes = [general,groups,communes,coops,parties]
|
||||||
buttons = [generalButton,groupsButton,communesButton,coopsButton,partiesButton,tradeUnionsButton]
|
buttons = [generalButton,groupsButton,communesButton,coopsButton,partiesButton]
|
||||||
|
|
||||||
fillFields()
|
fillFields()
|
||||||
general.style.display = "initial"
|
general.style.display = "initial"
|
||||||
|
@ -161,10 +155,6 @@
|
||||||
<object id="parties-img" class="icons" type="image/svg+xml" data="/img/common/parties.svg" title="parties"></object>
|
<object id="parties-img" class="icons" type="image/svg+xml" data="/img/common/parties.svg" title="parties"></object>
|
||||||
<span>parties</span>
|
<span>parties</span>
|
||||||
</button>
|
</button>
|
||||||
<button bind:this={tradeUnionsButton} on:click={() => changePane(tradeUnions,tradeUnionsButton)}>
|
|
||||||
<object id="trade-unions-img" class="icons" type="image/svg+xml" data="/img/common/trade-unions.svg" title="trade unions"></object>
|
|
||||||
<span>trade unions</span>
|
|
||||||
</button>
|
|
||||||
<button on:click={AuthTools.logout} id="logout-button">
|
<button on:click={AuthTools.logout} id="logout-button">
|
||||||
<object id="logout-img" class="icons" type="image/svg+xml" data="/img/profile/icons/logout.svg" title=""></object>
|
<object id="logout-img" class="icons" type="image/svg+xml" data="/img/profile/icons/logout.svg" title=""></object>
|
||||||
<span>logout</span>
|
<span>logout</span>
|
||||||
|
@ -175,10 +165,9 @@
|
||||||
{#if $loaded==1}
|
{#if $loaded==1}
|
||||||
<profile-general bind:this={general} style="display: none;"></profile-general>
|
<profile-general bind:this={general} style="display: none;"></profile-general>
|
||||||
<profile-groups bind:this={groups} style="display: none;"></profile-groups>
|
<profile-groups bind:this={groups} style="display: none;"></profile-groups>
|
||||||
<profile-parties bind:this={parties} style="display: none;"></profile-parties>
|
|
||||||
<profile-trade-unions bind:this={tradeUnions} style="display: none;"></profile-trade-unions>
|
|
||||||
<profile-coops bind:this={coops} style="display: none;"></profile-coops>
|
|
||||||
<profile-communes bind:this={communes} style="display: none;"></profile-communes>
|
<profile-communes bind:this={communes} style="display: none;"></profile-communes>
|
||||||
|
<profile-coops bind:this={coops} style="display: none;"></profile-coops>
|
||||||
|
<profile-parties bind:this={parties} style="display: none;"></profile-parties>
|
||||||
{/if}
|
{/if}
|
||||||
{/key}
|
{/key}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -171,26 +171,13 @@
|
||||||
<div>
|
<div>
|
||||||
<div id="verifiedDiv">
|
<div id="verifiedDiv">
|
||||||
<span>Verified:</span>
|
<span>Verified:</span>
|
||||||
<span style="color: {user.verified ? "green" : "red"}">{user.verified}
|
<span style="color: {user.verified ? "green" : "red"}">{user.verified}</span>
|
||||||
{#if !user.verified}
|
|
||||||
<span id="verify-span">(go <a href="https://discord.gg/Qk8KUk787z">here</a>)</span>
|
|
||||||
{/if}
|
|
||||||
</span>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
@import '/css/common.css';
|
@import '/css/common.css';
|
||||||
|
|
||||||
#verify-span {
|
|
||||||
color: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
#verify-span a {
|
|
||||||
color: inherit;
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
#verifiedDiv {
|
#verifiedDiv {
|
||||||
display: inline;
|
display: inline;
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
import { onMount, getContext } from 'svelte'
|
import { onMount, getContext } from 'svelte'
|
||||||
import { writable } from 'svelte/store'
|
import { writable } from 'svelte/store'
|
||||||
import { getData, sendData } from "/js/libraries/serverTools.js"
|
import { getData, sendData } from "/js/libraries/serverTools.js"
|
||||||
import { validatePosNumber } from "/js/libraries/miscTools.js"
|
|
||||||
|
|
||||||
//Import components
|
//Import components
|
||||||
import "/js/components/select-component.js"
|
import "/js/components/select-component.js"
|
||||||
|
@ -35,11 +34,6 @@
|
||||||
|
|
||||||
let locale = "en"
|
let locale = "en"
|
||||||
|
|
||||||
let oldValues = {
|
|
||||||
"contact": null,
|
|
||||||
"members": null,
|
|
||||||
}
|
|
||||||
|
|
||||||
let inputLocation
|
let inputLocation
|
||||||
let inputContact
|
let inputContact
|
||||||
let inputMembers
|
let inputMembers
|
||||||
|
@ -91,6 +85,14 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function launchChangeLocation() {
|
||||||
|
showLocationOverlay()
|
||||||
|
}
|
||||||
|
|
||||||
|
function launchChangeMembers() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
function showSaveButton(button,input) {
|
function showSaveButton(button,input) {
|
||||||
if (!input.readOnly) {
|
if (!input.readOnly) {
|
||||||
button.style.display = "initial"
|
button.style.display = "initial"
|
||||||
|
@ -99,33 +101,23 @@
|
||||||
|
|
||||||
function resetMembersField() {
|
function resetMembersField() {
|
||||||
saveMembersButton.style.display = "none"
|
saveMembersButton.style.display = "none"
|
||||||
inputMembers = oldValues["members"]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function resetContactField() {
|
function resetContactField() {
|
||||||
saveContactButton.style.display = "none"
|
saveContactButton.style.display = "none"
|
||||||
inputContact = oldValues["contact"]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function saveMembers() {
|
function saveMembers() {
|
||||||
let val = parseInt(membersInput.value)
|
let email = emailInput.value
|
||||||
let data = {
|
if (AuthTools.checkEmail(email,emailMsg)) {
|
||||||
"members": val
|
if (email!=user.email) {
|
||||||
|
AuthTools.changeUser("email",email,user)
|
||||||
|
}
|
||||||
|
resetMembersField()
|
||||||
}
|
}
|
||||||
sendData("/xx/group-change",data)
|
|
||||||
oldValues["members"] = val
|
|
||||||
saveMembersButton.style.display = "none"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function saveContact() {
|
function saveContact() {}
|
||||||
let val = contactInput.value
|
|
||||||
let data = {
|
|
||||||
"contact": val
|
|
||||||
}
|
|
||||||
sendData("/xx/group-change",data)
|
|
||||||
oldValues["contact"] = val
|
|
||||||
saveContactButton.style.display = "none"
|
|
||||||
}
|
|
||||||
|
|
||||||
function updateUserGroup(newInfo) {
|
function updateUserGroup(newInfo) {
|
||||||
if (newInfo!=undefined) {
|
if (newInfo!=undefined) {
|
||||||
|
@ -167,9 +159,7 @@
|
||||||
let group = userGroups[0]
|
let group = userGroups[0]
|
||||||
|
|
||||||
inputContact = getContact(group.contact)
|
inputContact = getContact(group.contact)
|
||||||
oldValues["contact"] = inputContact
|
|
||||||
inputMembers = group.members
|
inputMembers = group.members
|
||||||
oldValues["members"] = inputMembers
|
|
||||||
let status = group.status
|
let status = group.status
|
||||||
if (status!=undefined) {
|
if (status!=undefined) {
|
||||||
if (status==0) {
|
if (status==0) {
|
||||||
|
@ -260,7 +250,7 @@
|
||||||
<div class="save-button-wrapper">
|
<div class="save-button-wrapper">
|
||||||
<button bind:this={saveMembersButton} on:click={saveMembers} class="save-button" style="display: none">save</button>
|
<button bind:this={saveMembersButton} on:click={saveMembers} class="save-button" style="display: none">save</button>
|
||||||
</div>
|
</div>
|
||||||
<input bind:this={membersInput} id="membersInput" class="text-input" type="number" bind:value={inputMembers} on:click={() => showSaveButton(saveMembersButton,membersInput)} on:input={(event) => validatePosNumber(event,membersInput,10000)}>
|
<input bind:this={membersInput} id="membersInput" class="text-input" type="text" bind:value={inputMembers} on:click={() => showSaveButton(saveMembersButton,membersInput)}>
|
||||||
<button bind:this={pencilButtonMembers} class="text-input-pencil-button" on:click={() => {focus(membersInput)}}>
|
<button bind:this={pencilButtonMembers} class="text-input-pencil-button" on:click={() => {focus(membersInput)}}>
|
||||||
<object bind:this={pencilMembers} type="image/svg+xml" data="/img/profile/icons/pencil.svg" title="pencil-icon" class="pencil"></object>
|
<object bind:this={pencilMembers} type="image/svg+xml" data="/img/profile/icons/pencil.svg" title="pencil-icon" class="pencil"></object>
|
||||||
</button>
|
</button>
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
<svelte:options tag="profile-trade-unions" />
|
|
||||||
|
|
||||||
<script>
|
|
||||||
|
|
||||||
// Import statements
|
|
||||||
import { onMount } from 'svelte'
|
|
||||||
import * as AuthTools from "/js/libraries/authTools.js"
|
|
||||||
|
|
||||||
// Main code
|
|
||||||
|
|
||||||
onMount(() => {
|
|
||||||
|
|
||||||
})
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<h3>Under development</h3>
|
|
||||||
|
|
||||||
<p style=" position: relative; margin-top: 2rem;">Visit <a href="https://discord.gg/Qk8KUk787z" style="color: #c52a28;">https://discord.gg/Qk8KUk787z</a> and ask for your trade union to be added.</p>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
|
|
||||||
@import '/css/common.css';
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
|
@ -1,577 +0,0 @@
|
||||||
<svelte:options tag="trade-unions-add-component" />
|
|
||||||
|
|
||||||
<script>
|
|
||||||
// Import statements
|
|
||||||
import { onMount, getContext } from 'svelte'
|
|
||||||
import { writable } from 'svelte/store';
|
|
||||||
import { loadLocaleContent, getData, sendData } from "/js/libraries/serverTools.js"
|
|
||||||
import { addMarkersEntries, translate } from "/js/libraries/mapTools.js"
|
|
||||||
import { validatePosNumber } from "/js/libraries/miscTools.js"
|
|
||||||
|
|
||||||
// Import components
|
|
||||||
import "/js/components/map-component.js"
|
|
||||||
|
|
||||||
// Export statements
|
|
||||||
export let map = null
|
|
||||||
|
|
||||||
// Main code
|
|
||||||
let loaded = writable(0)
|
|
||||||
let content = writable({})
|
|
||||||
let entries
|
|
||||||
let entriesByCountry
|
|
||||||
let userData
|
|
||||||
|
|
||||||
let buttonsGroupMember
|
|
||||||
let buttonsNotGroupMember
|
|
||||||
|
|
||||||
let callback = (response) => {
|
|
||||||
entries = JSON.parse(response)
|
|
||||||
entriesByCountry = {}
|
|
||||||
for (let g of entries) {
|
|
||||||
let country = g.country
|
|
||||||
if (g.contact==null) {
|
|
||||||
g.contact = "https://discord.gg/Qk8KUk787z"
|
|
||||||
}
|
|
||||||
if (country in entriesByCountry) {
|
|
||||||
entriesByCountry[country].push(g)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
entriesByCountry[country] = [g]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
loaded.update((val) => {
|
|
||||||
return val + 1
|
|
||||||
})
|
|
||||||
}
|
|
||||||
getData("/assets/trade-unions.json",callback)
|
|
||||||
|
|
||||||
|
|
||||||
let confirmationMsg
|
|
||||||
let addressInput
|
|
||||||
let contactInput
|
|
||||||
let membersInput
|
|
||||||
let addressVec = ["","",""]
|
|
||||||
let userPinData = {
|
|
||||||
|
|
||||||
}
|
|
||||||
let userPinLng = 0
|
|
||||||
let userPin = createPin(0,0)
|
|
||||||
userPin.setOpacity(0)
|
|
||||||
let modeButtons = []
|
|
||||||
|
|
||||||
let context = getContext("profile-component")
|
|
||||||
let closeGroupsAdd = context.closeGroupsAdd
|
|
||||||
let maps = context.maps
|
|
||||||
let onLoadedGroups = context.onLoadedGroups
|
|
||||||
let userGroups = context.userGroups
|
|
||||||
let user = context.user
|
|
||||||
|
|
||||||
let has_group = userGroups.length!=0
|
|
||||||
let mode = has_group ? 2 : 0
|
|
||||||
let pendingGroup
|
|
||||||
if (has_group) {
|
|
||||||
pendingGroup= userGroups[0].status!=undefined
|
|
||||||
if (pendingGroup) {
|
|
||||||
mode = 3
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let locale = loadLocaleContent(content,"trade-unions-component",loaded)
|
|
||||||
loadLocaleContent(content,"countries",loaded)
|
|
||||||
|
|
||||||
function createPin(lat,lng) {
|
|
||||||
let markerIcon = new L.Icon({
|
|
||||||
iconUrl: '/img/common/markers/marker-black.png',
|
|
||||||
shadowUrl: 'https://cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.7/images/marker-shadow.png',
|
|
||||||
iconSize: [25, 41],
|
|
||||||
iconAnchor: [12, 41],
|
|
||||||
popupAnchor: [1, -34],
|
|
||||||
shadowSize: [41, 41]
|
|
||||||
})
|
|
||||||
return L.marker([lat,lng], {icon: markerIcon})
|
|
||||||
}
|
|
||||||
|
|
||||||
function updatePin(marker,lat,lng) {
|
|
||||||
let newLatLng = L.latLng(lat, lng); // Replace with the desired coordinates
|
|
||||||
marker.setLatLng(newLatLng)
|
|
||||||
}
|
|
||||||
|
|
||||||
function reverseGeocodeLocal(latitude, longitude) {
|
|
||||||
let url = `https://nominatim.openstreetmap.org/reverse?lat=${latitude}&lon=${longitude}&format=jsonv2`;
|
|
||||||
|
|
||||||
let callback = (response) => {
|
|
||||||
// Parse the response JSON
|
|
||||||
response = JSON.parse(response)
|
|
||||||
// Extract the address information from the response
|
|
||||||
let address = response.address
|
|
||||||
let city = address.city || address.town || address.village || address.hamlet
|
|
||||||
let state = address.state
|
|
||||||
let country = address.country
|
|
||||||
let fullAddress = country
|
|
||||||
if (state!=undefined) {
|
|
||||||
fullAddress += ", " + state
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
state = ""
|
|
||||||
}
|
|
||||||
if (city!=undefined) {
|
|
||||||
fullAddress += ", " + city
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
city = ""
|
|
||||||
}
|
|
||||||
addressInput.value = fullAddress
|
|
||||||
resizeInput(addressInput)
|
|
||||||
}
|
|
||||||
getData(url,callback)
|
|
||||||
}
|
|
||||||
|
|
||||||
function reverseGeocode(latitude, longitude) {
|
|
||||||
let url = `https://nominatim.openstreetmap.org/reverse?lat=${latitude}&lon=${longitude}&format=jsonv2&accept-language=en`;
|
|
||||||
|
|
||||||
let callback = (response) => {
|
|
||||||
// Parse the response JSON
|
|
||||||
response = JSON.parse(response)
|
|
||||||
// Extract the address information from the response
|
|
||||||
let address = response.address
|
|
||||||
if (address!=undefined) {
|
|
||||||
let city = address.city || address.town || address.village || address.hamlet
|
|
||||||
let state = address.state
|
|
||||||
let country = address.country
|
|
||||||
let fullAddress = country
|
|
||||||
if (state!=undefined) {
|
|
||||||
fullAddress += ", " + state
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
state = ""
|
|
||||||
}
|
|
||||||
if (city!=undefined) {
|
|
||||||
fullAddress += ", " + city
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
city = ""
|
|
||||||
}
|
|
||||||
addressVec = [country,state,city]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
getData(url,callback)
|
|
||||||
}
|
|
||||||
|
|
||||||
function addGroupPinContent(g,content,locale) {
|
|
||||||
let coordinates
|
|
||||||
let text = "<b>"+content["TradeUnion"]+"</b><br>"
|
|
||||||
for (let field of ["location","members","contact"]) {
|
|
||||||
let fieldText = content[field] + ": "
|
|
||||||
if (field=="contact") {
|
|
||||||
text += fieldText + "<a href='" + g.contact + "' target='_blank' rel=noreferrer>" + g.contact + "</a>"
|
|
||||||
}
|
|
||||||
else if (field=="location") {
|
|
||||||
let location = [g.country,g.state,g.town].filter(x => x!=null && x!=undefined)
|
|
||||||
let locationString
|
|
||||||
if (locale=="en") {
|
|
||||||
locationString = location.map(x => x).join(", ")
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
locationString = location.map(x => translate(content, x)).join(", ")
|
|
||||||
}
|
|
||||||
text += fieldText + locationString + "<br>"
|
|
||||||
coordinates = [g.latitude,g.longitude]
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
text += fieldText + g[field] + "<br>"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return {text,coordinates}
|
|
||||||
}
|
|
||||||
|
|
||||||
function mapCallback(createMap,content,locale) {
|
|
||||||
map = createMap([22, 0],2)
|
|
||||||
maps["groupsAdd"] = map
|
|
||||||
let options = {
|
|
||||||
enableCountryGrouping: false,
|
|
||||||
pinCallback: pinCallback
|
|
||||||
}
|
|
||||||
addMarkersEntries(entries,entriesByCountry,map,content,locale,addGroupPinContent,"green",options)
|
|
||||||
|
|
||||||
userPin.addTo(map)
|
|
||||||
map.on('click', function(event) {
|
|
||||||
if (mode==0) {
|
|
||||||
let lat = event.latlng.lat;
|
|
||||||
let lng = event.latlng.lng;
|
|
||||||
userPinData["latitude"] = lat
|
|
||||||
userPinData["longitude"] = lng
|
|
||||||
userPinData["id"] = null
|
|
||||||
updatePin(userPin,lat,lng)
|
|
||||||
userPin.setOpacity(1)
|
|
||||||
reverseGeocodeLocal(lat, lng)
|
|
||||||
reverseGeocode(lat, lng)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
function updateConfirmationMsg(response) {
|
|
||||||
if (response!==false) {
|
|
||||||
if (mode==0 && !user.verified) {
|
|
||||||
confirmationMsg.innerHTML = "You have been added to our database! Now go to our Discord to verify yourself."
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
confirmationMsg.innerHTML = "Success!"
|
|
||||||
}
|
|
||||||
confirmationMsg.style.color = "green"
|
|
||||||
if (mode==0 || mode==1) {
|
|
||||||
userGroups[0] = {}
|
|
||||||
}
|
|
||||||
userGroups[0].country = addressVec[0]=="" ? null : addressVec[0]
|
|
||||||
userGroups[0].state = addressVec[1]=="" ? null : addressVec[1]
|
|
||||||
userGroups[0].town = addressVec[2]=="" ? null : addressVec[2]
|
|
||||||
userGroups[0].members = userPinData["members"]
|
|
||||||
onLoadedGroups()
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
confirmationMsg.innerHTML = "Something went wrong."
|
|
||||||
confirmationMsg.style.color = "red"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function submitLocation() {
|
|
||||||
if (addressVec[0]!="" || mode==3) {
|
|
||||||
let membersVal, contactVal
|
|
||||||
if (mode==0) { // Create
|
|
||||||
membersVal = membersInput.value
|
|
||||||
contactVal = contactInput.value
|
|
||||||
}
|
|
||||||
else if (mode==1) { // Join
|
|
||||||
contactVal = contactInput.value
|
|
||||||
}
|
|
||||||
else if (mode==2 || mode==3) { // Move
|
|
||||||
membersVal = ""
|
|
||||||
contactVal = ""
|
|
||||||
}
|
|
||||||
else if (mode==3) { // Leave
|
|
||||||
membersVal = ""
|
|
||||||
contactVal = ""
|
|
||||||
addressVec = [null,null,null]
|
|
||||||
userPinData["latitude"] = null
|
|
||||||
userPinData["longitude"] = null
|
|
||||||
}
|
|
||||||
|
|
||||||
userData = {
|
|
||||||
country: addressVec[0],
|
|
||||||
state: addressVec[1],
|
|
||||||
town: addressVec[2],
|
|
||||||
latitude: userPinData["latitude"],
|
|
||||||
longitude: userPinData["longitude"],
|
|
||||||
contact: contactVal=="" ? null : contactVal,
|
|
||||||
members: membersVal=="" ? null : parseInt(membersVal),
|
|
||||||
group_id: userPinData["id"],
|
|
||||||
mode: mode
|
|
||||||
}
|
|
||||||
|
|
||||||
if (userData.state=="") {
|
|
||||||
userData.state = null
|
|
||||||
}
|
|
||||||
if (userData.town=="") {
|
|
||||||
userData.town = null
|
|
||||||
}
|
|
||||||
let url = "/" + locale + "/trade-unions-add-post/"
|
|
||||||
sendData(url,userData,updateConfirmationMsg)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function resizeInput(el) {
|
|
||||||
el.nextElementSibling.innerHTML = el.value
|
|
||||||
}
|
|
||||||
|
|
||||||
function pinCallback(marker,event) {
|
|
||||||
if (mode==1) {
|
|
||||||
let lat = event.latlng.lat;
|
|
||||||
let lng = event.latlng.lng;
|
|
||||||
userPinData["latitude"] = lat
|
|
||||||
userPinData["longitude"] = lng
|
|
||||||
userPinData["id"] = marker.id
|
|
||||||
userPinData["members"] = marker.members
|
|
||||||
updatePin(userPin,lat,lng)
|
|
||||||
userPin.setOpacity(1)
|
|
||||||
reverseGeocodeLocal(lat, lng)
|
|
||||||
reverseGeocode(lat, lng)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function chooseButton(index) {
|
|
||||||
for (let b of modeButtons) {
|
|
||||||
if (b!=undefined) {
|
|
||||||
b.style.background = "rgba(197, 43, 40, 0.319)"
|
|
||||||
b.style.color = "black"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
modeButtons[index].style.background = "rgb(197, 43, 40)"
|
|
||||||
modeButtons[index].style.color = "white"
|
|
||||||
mode = index
|
|
||||||
}
|
|
||||||
|
|
||||||
function getAddress(g) {
|
|
||||||
if (g!=undefined) {
|
|
||||||
let location = [g.country,g.state,g.town].filter(x => x!=null)
|
|
||||||
return location.map(x => locale=="en" ? x : translate($content,x)).join(", ")
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return "Create or join trade-union"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function onLoaded() {
|
|
||||||
if ($loaded==3) {
|
|
||||||
chooseButton(mode)
|
|
||||||
if (mode==2 || mode==3) {
|
|
||||||
addressInput.value = getAddress(userGroups[0])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
let f = () => onLoaded()
|
|
||||||
setTimeout(f, 100)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
onMount(() => {
|
|
||||||
onLoaded()
|
|
||||||
})
|
|
||||||
</script>
|
|
||||||
|
|
||||||
{#key $loaded}
|
|
||||||
{#if $loaded==3}
|
|
||||||
<div id="container">
|
|
||||||
<button class="close-button" on:click={closeGroupsAdd}></button>
|
|
||||||
<!--<img src="img/crowd.png" id="crowd" alt="crowd">-->
|
|
||||||
<div id="text-container">
|
|
||||||
{#if !has_group}
|
|
||||||
<div bind:this={buttonsNotGroupMember} id="button-line">
|
|
||||||
<button bind:this={modeButtons[0]} on:click={() => chooseButton(0)}>Create</button>
|
|
||||||
<button bind:this={modeButtons[1]} on:click={() => chooseButton(1)}>Join</button>
|
|
||||||
</div>
|
|
||||||
{:else if has_group && !pendingGroup}
|
|
||||||
<div bind:this={buttonsGroupMember} id="button-line">
|
|
||||||
<button bind:this={modeButtons[2]} on:click={() => chooseButton(2)} style={"display: " + (pendingGroup ? "none" : "initial")}>Move</button>
|
|
||||||
<button bind:this={modeButtons[3]} on:click={() => chooseButton(3)}>Leave</button>
|
|
||||||
</div>
|
|
||||||
{:else}
|
|
||||||
<div bind:this={buttonsGroupMember} id="button-line">
|
|
||||||
<button bind:this={modeButtons[3]} on:click={() => chooseButton(3)}>Leave</button>
|
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
<div id="address-input-wrapper" class="input-label-wrapper">
|
|
||||||
<label for="address-input">Location: </label>
|
|
||||||
<div class="input-wrapper">
|
|
||||||
<input bind:this={addressInput} on:input={() => resizeInput(addressInput)} id="address-input" type="text" readonly>
|
|
||||||
<div class="ghost-input"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{#key mode}
|
|
||||||
{#if mode==0}
|
|
||||||
<div id="members-input-wrapper" class="input-label-wrapper">
|
|
||||||
<label for="members-input">Members: </label>
|
|
||||||
<div class="input-wrapper">
|
|
||||||
<input bind:this={membersInput} id="members-input" type="number" value={1} on:input={(event) => validatePosNumber(event,membersInput,10000)}>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
{#if mode==0 || mode==1}
|
|
||||||
<div class="input-label-wrapper">
|
|
||||||
<label for="contact-input">Contact: </label>
|
|
||||||
<div class="input-wrapper">
|
|
||||||
<input bind:this={contactInput} on:input={() => resizeInput(contactInput)} id="contact-input" type="text">
|
|
||||||
<div class="ghost-input"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
{/key}
|
|
||||||
<button id="submit-button" on:click={submitLocation}>Submit</button>
|
|
||||||
<p id="confirmation-msg" bind:this={confirmationMsg}></p>
|
|
||||||
{#if !(has_group && pendingGroup)}
|
|
||||||
<map-component id="map" callback={(createMap) => mapCallback(createMap,$content,locale)}></map-component>
|
|
||||||
{/if}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
{/key}
|
|
||||||
|
|
||||||
<style>
|
|
||||||
@import '/css/common.css';
|
|
||||||
|
|
||||||
#button-line {
|
|
||||||
position: relative;
|
|
||||||
width: fit-content;
|
|
||||||
margin: auto;
|
|
||||||
margin-top: 1.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
#button-line button{
|
|
||||||
font-family: var(--sans-serif,sans-serif);
|
|
||||||
font-size: 1.15rem;
|
|
||||||
padding: 1rem 0;
|
|
||||||
width: 7rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
#button-line :first-child {
|
|
||||||
border-top-left-radius: 1rem;
|
|
||||||
border-bottom-left-radius: 1rem;
|
|
||||||
margin-right: 0.1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
#button-line :last-child {
|
|
||||||
margin-left: 0.1rem;
|
|
||||||
border-top-right-radius: 1rem;
|
|
||||||
border-bottom-right-radius: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.close-button {
|
|
||||||
position: absolute;
|
|
||||||
top: 2rem;
|
|
||||||
right: 0rem;
|
|
||||||
width: 2rem;
|
|
||||||
height: 2rem;
|
|
||||||
border: none;
|
|
||||||
cursor: pointer;
|
|
||||||
z-index: 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.close-button:hover {
|
|
||||||
opacity: 0.7;
|
|
||||||
}
|
|
||||||
|
|
||||||
.close-button::before,
|
|
||||||
.close-button::after {
|
|
||||||
content: "";
|
|
||||||
position: absolute;
|
|
||||||
top: 50%;
|
|
||||||
left: 50%;
|
|
||||||
width: 0.2rem;
|
|
||||||
height: 2rem;
|
|
||||||
background-color: #000;
|
|
||||||
border-radius: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.close-button::before {
|
|
||||||
transform: translate(-50%, -50%) rotate(45deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.close-button::after {
|
|
||||||
transform: translate(-50%, -50%) rotate(-45deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#confirmation-msg {
|
|
||||||
margin-top: 0.5rem;
|
|
||||||
margin-bottom: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
ol li {
|
|
||||||
margin-left: 1rem;
|
|
||||||
margin-bottom: 0.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
label {
|
|
||||||
display: inline-block;
|
|
||||||
font-family: var(--serif,serif);
|
|
||||||
font-size: 1.15rem;
|
|
||||||
line-height: 160%;
|
|
||||||
color: #222222;
|
|
||||||
width: 6rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
input, .ghost-input {
|
|
||||||
font-size: 1.15rem;
|
|
||||||
font-family: var(--serif,serif);
|
|
||||||
}
|
|
||||||
|
|
||||||
input {
|
|
||||||
height: 2.5rem;
|
|
||||||
display: inline-block;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
#address-input, #contact-input {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#address-input-wrapper {
|
|
||||||
margin-top: 2rem;
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
#members-input-wrapper {
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
#members-input {
|
|
||||||
width: 5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ghost-input {
|
|
||||||
display: block;
|
|
||||||
visibility: hidden;
|
|
||||||
height: 0;
|
|
||||||
|
|
||||||
padding-left: 0.5rem;
|
|
||||||
padding-right: 0.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.input-wrapper {
|
|
||||||
display: inline-block;
|
|
||||||
max-width: calc(100% - 5.5rem);
|
|
||||||
min-width: min(20rem, calc(100% - 5.5rem));
|
|
||||||
height: 2.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.input-label-wrapper {
|
|
||||||
display: flex;
|
|
||||||
justify-content: start;
|
|
||||||
}
|
|
||||||
|
|
||||||
.input-label-wrapper label {
|
|
||||||
position: relative;
|
|
||||||
top: 0.3rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.description {
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
#submit-button {
|
|
||||||
display: block;
|
|
||||||
margin: auto;
|
|
||||||
margin-top: 2rem;
|
|
||||||
padding: 1rem 2rem;
|
|
||||||
font-size: 1.4rem;
|
|
||||||
font-family: var(--sans-serif,sans-serif);
|
|
||||||
border: 0rem solid black;
|
|
||||||
border-radius: 0.5rem;
|
|
||||||
background: #cb1816;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#map {
|
|
||||||
--height: 30rem;
|
|
||||||
--width: 100%;
|
|
||||||
--margin-top: 2rem;
|
|
||||||
--margin-bottom: 0.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
#text-container {
|
|
||||||
position: relative;
|
|
||||||
max-width: calc(100vw - 4rem);
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
#container {
|
|
||||||
margin: auto;
|
|
||||||
max-width: 800px;
|
|
||||||
margin-top: 1rem;
|
|
||||||
margin-bottom: 4rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
#container p {
|
|
||||||
text-align: justify;
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
|
@ -1,178 +0,0 @@
|
||||||
<svelte:options tag="trade-unions-component" />
|
|
||||||
|
|
||||||
<script>
|
|
||||||
// Import statements
|
|
||||||
import { onMount } from 'svelte'
|
|
||||||
import { writable } from 'svelte/store';
|
|
||||||
import { loadLocaleContent, getData} from "/js/libraries/serverTools.js"
|
|
||||||
import { addMarkersEntries, translate } from "/js/libraries/mapTools.js"
|
|
||||||
import { addTradeUnionPinContent } from "/js/mapFuncs.js"
|
|
||||||
|
|
||||||
// Import components
|
|
||||||
import "/js/components/map-component.js"
|
|
||||||
|
|
||||||
// Main code
|
|
||||||
let loaded = writable(0)
|
|
||||||
let content = writable({})
|
|
||||||
let entries
|
|
||||||
let entriesByCountry
|
|
||||||
|
|
||||||
let locale = loadLocaleContent(content,"trade-unions-component",loaded)
|
|
||||||
loadLocaleContent(content,"countries",loaded)
|
|
||||||
|
|
||||||
let callback = (response) => {
|
|
||||||
entries = JSON.parse(response)
|
|
||||||
entriesByCountry = {}
|
|
||||||
for (let g of entries) {
|
|
||||||
let country = g.country
|
|
||||||
if (g.contact==null) {
|
|
||||||
g.contact = "https://discord.gg/Qk8KUk787z"
|
|
||||||
}
|
|
||||||
if (country in entriesByCountry) {
|
|
||||||
entriesByCountry[country].push(g)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
entriesByCountry[country] = [g]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
loaded.update((val) => {
|
|
||||||
return val + 1
|
|
||||||
})
|
|
||||||
}
|
|
||||||
getData("/assets/trade-unions.json",callback)
|
|
||||||
|
|
||||||
function mapCallback(createMap,content,locale) {
|
|
||||||
let map = createMap([22, 0],2)
|
|
||||||
let options = {
|
|
||||||
enableCountryGrouping: true,
|
|
||||||
}
|
|
||||||
addMarkersEntries(entries,entriesByCountry,map,content,locale,addTradeUnionPinContent,"violet",options)
|
|
||||||
}
|
|
||||||
|
|
||||||
function getCountry(x) {
|
|
||||||
return locale=="en" ? x : translate($content,x)
|
|
||||||
}
|
|
||||||
|
|
||||||
function getAddress(g) {
|
|
||||||
let location = [g.country,g.state,g.town].filter(x => x!=null)
|
|
||||||
return location.map(x => locale=="en" ? x : translate($content,x)).join(", ")
|
|
||||||
}
|
|
||||||
|
|
||||||
onMount(() => {
|
|
||||||
|
|
||||||
})
|
|
||||||
</script>
|
|
||||||
|
|
||||||
{#key $loaded}
|
|
||||||
{#if $loaded==3}
|
|
||||||
<div id="container">
|
|
||||||
<!--<img src="img/crowd.png" id="crowd" alt="crowd">-->
|
|
||||||
<div id="text-container">
|
|
||||||
<h1>{$content.tradeUnions}</h1>
|
|
||||||
<img id="trade-unions-img" src="/img/common/trade-unions.svg" alt="trade unions">
|
|
||||||
<p class="description">{$content.p1}</p>
|
|
||||||
<h3>{$content.subheading1}</h3>
|
|
||||||
<map-component id="map" callback={(createMap) => mapCallback(createMap,$content,locale)}></map-component>
|
|
||||||
<p id="add-prompt">{$content["map-prompt"]}</p>
|
|
||||||
{#each Object.entries(entriesByCountry) as [name,entries]}
|
|
||||||
<h4 class="country-name">{getCountry(name)}</h4>
|
|
||||||
<div class="country-block">
|
|
||||||
{#each entries as entry}
|
|
||||||
<div class="location-info">
|
|
||||||
<p><b>{$content.name}: </b>{entry.name}</p>
|
|
||||||
<p><b>{$content.location}: </b>{getAddress(entry)}</p>
|
|
||||||
<p><b>{$content.members}: </b>{entry.members}</p>
|
|
||||||
{#if entry.contact.includes("@") && entry.contact.trim().split(" ").length==1}
|
|
||||||
<p><b>{$content.contact}: </b><a href={"mailto:" + entry.contact} target=;_blank; rel=noreferrer>{entry.contact}</a></p>
|
|
||||||
{:else if entry.contact.includes("http")}
|
|
||||||
<p><b>{$content.contact}: </b><a href={entry.contact} target=;_blank; rel=noreferrer>{entry.contact}</a></p>
|
|
||||||
{:else}
|
|
||||||
<p><b>{$content.contact}: </b>{entry.contact}</p>
|
|
||||||
{/if}
|
|
||||||
</div>
|
|
||||||
{/each}
|
|
||||||
</div>
|
|
||||||
{/each}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
{/key}
|
|
||||||
|
|
||||||
<style>
|
|
||||||
@import '/css/common.css';
|
|
||||||
|
|
||||||
.description {
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
#add-prompt {
|
|
||||||
margin-bottom: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
#trade-unions-img {
|
|
||||||
position: absolute;
|
|
||||||
width: 14rem;
|
|
||||||
left: 50%;
|
|
||||||
transform: translate(-50%);
|
|
||||||
z-index: 0;
|
|
||||||
opacity: 0.2;
|
|
||||||
}
|
|
||||||
|
|
||||||
#text-container>:nth-child(3) {
|
|
||||||
margin-top: 8rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.country-name {
|
|
||||||
margin-bottom: 0.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.country-block {
|
|
||||||
margin-bottom: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.location-info {
|
|
||||||
margin-bottom: 0.75rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.location-info p {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: #DD1C1A;
|
|
||||||
}
|
|
||||||
|
|
||||||
#map {
|
|
||||||
--height: 30rem;
|
|
||||||
--width: 100%;
|
|
||||||
--margin-bottom: 0.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
#text-container {
|
|
||||||
position: relative;
|
|
||||||
max-width: calc(100vw - 4rem);
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
font-size: 2.2rem;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
#container {
|
|
||||||
margin: auto;
|
|
||||||
max-width: 800px;
|
|
||||||
margin-top: 1rem;
|
|
||||||
margin-bottom: 4rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
#container p {
|
|
||||||
text-align: justify;
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
|
@ -1,13 +0,0 @@
|
||||||
.DS_Store
|
|
||||||
node_modules
|
|
||||||
/build
|
|
||||||
/.svelte-kit
|
|
||||||
/package
|
|
||||||
.env
|
|
||||||
.env.*
|
|
||||||
!.env.example
|
|
||||||
|
|
||||||
# Ignore files for PNPM, NPM and YARN
|
|
||||||
pnpm-lock.yaml
|
|
||||||
package-lock.json
|
|
||||||
yarn.lock
|
|
|
@ -1,14 +0,0 @@
|
||||||
module.exports = {
|
|
||||||
root: true,
|
|
||||||
extends: ['eslint:recommended', 'plugin:svelte/recommended', 'prettier'],
|
|
||||||
parserOptions: {
|
|
||||||
sourceType: 'module',
|
|
||||||
ecmaVersion: 2020,
|
|
||||||
extraFileExtensions: ['.svelte']
|
|
||||||
},
|
|
||||||
env: {
|
|
||||||
browser: true,
|
|
||||||
es2017: true,
|
|
||||||
node: true
|
|
||||||
}
|
|
||||||
};
|
|
|
@ -1,10 +0,0 @@
|
||||||
.DS_Store
|
|
||||||
node_modules
|
|
||||||
/build
|
|
||||||
/.svelte-kit
|
|
||||||
/package
|
|
||||||
.env
|
|
||||||
.env.*
|
|
||||||
!.env.example
|
|
||||||
vite.config.js.timestamp-*
|
|
||||||
vite.config.ts.timestamp-*
|
|
|
@ -1 +0,0 @@
|
||||||
engine-strict=true
|
|
|
@ -1,13 +0,0 @@
|
||||||
.DS_Store
|
|
||||||
node_modules
|
|
||||||
/build
|
|
||||||
/.svelte-kit
|
|
||||||
/package
|
|
||||||
.env
|
|
||||||
.env.*
|
|
||||||
!.env.example
|
|
||||||
|
|
||||||
# Ignore files for PNPM, NPM and YARN
|
|
||||||
pnpm-lock.yaml
|
|
||||||
package-lock.json
|
|
||||||
yarn.lock
|
|
|
@ -1,9 +0,0 @@
|
||||||
{
|
|
||||||
"useTabs": true,
|
|
||||||
"singleQuote": true,
|
|
||||||
"trailingComma": "none",
|
|
||||||
"printWidth": 100,
|
|
||||||
"plugins": ["prettier-plugin-svelte"],
|
|
||||||
"pluginSearchDirs": ["."],
|
|
||||||
"overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }]
|
|
||||||
}
|
|
|
@ -1,38 +0,0 @@
|
||||||
# create-svelte
|
|
||||||
|
|
||||||
Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/master/packages/create-svelte).
|
|
||||||
|
|
||||||
## Creating a project
|
|
||||||
|
|
||||||
If you're seeing this, you've probably already done this step. Congrats!
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# create a new project in the current directory
|
|
||||||
npm create svelte@latest
|
|
||||||
|
|
||||||
# create a new project in my-app
|
|
||||||
npm create svelte@latest my-app
|
|
||||||
```
|
|
||||||
|
|
||||||
## Developing
|
|
||||||
|
|
||||||
Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npm run dev
|
|
||||||
|
|
||||||
# or start the server and open the app in a new browser tab
|
|
||||||
npm run dev -- --open
|
|
||||||
```
|
|
||||||
|
|
||||||
## Building
|
|
||||||
|
|
||||||
To create a production version of your app:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npm run build
|
|
||||||
```
|
|
||||||
|
|
||||||
You can preview the production build with `npm run preview`.
|
|
||||||
|
|
||||||
> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment.
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,27 +0,0 @@
|
||||||
{
|
|
||||||
"name": "chrn.health",
|
|
||||||
"version": "0.0.1",
|
|
||||||
"private": true,
|
|
||||||
"scripts": {
|
|
||||||
"dev": "vite dev",
|
|
||||||
"preview": "vite preview",
|
|
||||||
"lint": "prettier --plugin-search-dir . --check . && eslint .",
|
|
||||||
"format": "prettier --plugin-search-dir . --write .",
|
|
||||||
"build": "vite build && cp -r build/* '../../public/'"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@sveltejs/adapter-auto": "^2.0.0",
|
|
||||||
"@sveltejs/kit": "^1.20.4",
|
|
||||||
"eslint": "^8.28.0",
|
|
||||||
"eslint-config-prettier": "^8.5.0",
|
|
||||||
"eslint-plugin-svelte": "^2.30.0",
|
|
||||||
"prettier": "^2.8.0",
|
|
||||||
"prettier-plugin-svelte": "^2.10.1",
|
|
||||||
"svelte": "^4.0.5",
|
|
||||||
"vite": "^4.4.2"
|
|
||||||
},
|
|
||||||
"type": "module",
|
|
||||||
"dependencies": {
|
|
||||||
"@sveltejs/adapter-static": "^2.0.3"
|
|
||||||
}
|
|
||||||
}
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue