[#6833] make socialnetworks configurable
diff --git a/Allura/allura/lib/widgets/forms.py b/Allura/allura/lib/widgets/forms.py
index 9d3f602..554750a 100644
--- a/Allura/allura/lib/widgets/forms.py
+++ b/Allura/allura/lib/widgets/forms.py
@@ -17,27 +17,28 @@
 
 import logging
 import warnings
+
 from pylons import app_globals as g
+from formencode import validators as fev
+import formencode
+import ew as ew_core
+import ew.jinja2_ew as ew
+from pytz import common_timezones, country_timezones, country_names
+from paste.deploy.converters import aslist
+import tg
+
 from allura.lib import validators as V
 from allura.lib import helpers as h
 from allura.lib import plugin
 from allura.lib.widgets import form_fields as ffw
 from allura.lib import exceptions as forge_exc
+from allura.lib.utils import LazyProperty
 from allura import model as M
-from datetime import datetime
 
-from formencode import validators as fev
-import formencode
-
-import ew as ew_core
-import ew.jinja2_ew as ew
-
-from pytz import common_timezones, country_timezones, country_names
 
 log = logging.getLogger(__name__)
 
-socialnetworks=['Facebook','Linkedin','Twitter','Google+']
-weekdays=['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
+weekdays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
 
 class _HTMLExplanation(ew.InputField):
     template=ew.Snippet(
@@ -323,17 +324,23 @@
 class AddSocialNetworkForm(ForgeForm):
     defaults=dict(ForgeForm.defaults)
 
-    class fields(ew_core.NameList):
-        socialnetwork = ew.SingleSelectField(
-            label='Social network',
-            options=[ew.Option(py_value=name, label=name)
-                     for name in socialnetworks],
-            validator=formencode.All(
-                V.OneOfValidator(socialnetworks),
-                fev.UnicodeString(not_empty=True)))
-        accounturl = ew.TextField(
-            label='Account url',
-            validator=fev.UnicodeString(not_empty=True))
+    @property
+    def fields(self):
+        socialnetworks = aslist(tg.config.get('socialnetworks',
+                                              ['Facebook', 'Linkedin', 'Twitter', 'Google+']),
+                                ',')
+        return [
+            ew.SingleSelectField(
+                name='socialnetwork',
+                label='Social network',
+                options=[ew.Option(py_value=name, label=name)
+                         for name in socialnetworks]),
+            ew.TextField(
+                name='accounturl',
+                label='Account url',
+                validator=fev.UnicodeString(not_empty=True))
+        ]
+
 
 class RemoveSocialNetworkForm(ForgeForm):
     defaults=dict(ForgeForm.defaults, submit_text=None, show_errors=False)