So I  have one more question is that:

If have several custom attributes should open servral new folders in different /usr/share/ipa/ui/js/plugins/ ? can it write in single file? thx

Regards


2017-11-13 18:48 GMT+08:00 Alexander Bokovoy <abokovoy@redhat.com>:
On ma, 13 marras 2017, barrykfl@gmail.com wrote:
Finally I found which location is wrong , IT is in the JS "comDate"....If I
rename it to "comdate" small letter it can saved and display,

I claim on ldap customPerson is using this "comDate" so I mislead that  I
should use same in JS and Plugin... ANYONE can explain ?...as I still have
some confusion why it work. ( I try change all to comDate in plugin but it
fail)
Since attribute names are case-insensitive, we normalize them in IPA
framework to lower case because dictionary keys are case-sensitive.

So just use lower case everywhere and it should work.



attributeTypes: ( 2.25.28639311321113238241701611583088740684.14.2.2
NAME 'comDate' EQUALITY caseIgnoreMatch


 function(phases, user_mod) {
   // helper function
   function get_item(array, attr, value) {
     for (var i=0,l=array.length; i<l; i++) {
       if (array[i][attr] === value) return array[i];
     }
     return null;
 }

 var cdate_plugin = {};

 cdate_plugin.add_c_date = function() {
   var facet = get_item(user_mod.entity_spec.facets, '$type', 'details');
   var section = get_item(facet.sections, 'name', 'identity');
   section.fields.push({
     name: 'comdate',
     type: 'multivalued',
     label: 'Commencement Date'
   });
   return true;
 };

 phases.on('customization', cdate_plugin.add_c_date);

 return cdate_plugin;
});

from ipaserver.plugins.user import user
from ipalib.parameters import Str
from ipalib.text import _
from ipalib import _
user.takes_params += (
       Str('comdate?',
           cli_name='comdate',
           label=_('Commencement Date'),
           ),
       )
user.default_attributes.append('comdate')


2017-11-09 20:20 GMT+08:00 Alexander Bokovoy <abokovoy@redhat.com>:

On to, 09 marras 2017, barrykfl--- via FreeIPA-users wrote:

Hi:

May be I missed write something on JSON..

But  I can use in command shell successfully.  ipa user-mod  apigee
--setattr comDate=1111  then ldap will appear user-show all will see.

Any reference link  if I missed ?

See https://github.com/abbra/freeipa-userstatus-plugin as an example of
how you can do that in a full plugin.




2017-11-09 17:43 GMT+08:00 Pavel Vomacka <pvomacka@redhat.com>:



On 11/09/2017 10:34 AM, barrykfl@gmail.com wrote:

The 1111 will disappear after saved pressed . it will chnage to 1111 in
ldap but the UI field blank not store.

Now I understand, thank you. Could you please show me how you specified
this new option in python code? Or you can check API Browser (IPA Server
->
API Browser) in WebUI and find user-mod command there.

The value is load from JSON which is returned by server (user-show). Then
basically WebUI go through all fields in page and tries to find attribute
in JSON response which is called the same as value of 'name' attribute in
field spec (in your case 'comDate'). Do you see 'comDate' attribute in
JSON
response? (You can check that in developer console in browser in Network
tab, in respective call.)

define(['freeipa/phases','freeipa/user'],

  function(phases, user_mod) {

    // helper function

    function get_item(array, attr, value) {

      for (var i=0,l=array.length; i<l; i++) {

        if (array[i][attr] === value) return array[i];

      }

      return null;

  }


  var cdate_plugin = {};


  cdate_plugin.add_c_date = function() {

    var facet = get_item(user_mod.entity_spec.facets, '$type',
'details');

    var section = get_item(facet.sections, 'name', 'identity');

    section.fields.push({
      flags: ['w_if_no_aci'],
  $type: 'multivalued',
  name: 'comDate',
      label: 'Commencement Date'

    });

    return true;

  };


  phases.on('customization', cdate_plugin.add_c_date);


  return cdate_plugin;

});

[image: 內置圖片 1]

2017-11-09 16:51 GMT+08:00 Pavel Vomacka <pvomacka@redhat.com>:



On 11/09/2017 09:18 AM, barrykfl@gmail.com wrote:

Now work at certain area limitation:

It can update successfully  BUT no view on UI  , then I tried replace
"textarea" as before it come a big field but also no view my result. (
but
it really updated)

Could you please reformulate it? I'm not sure whether I understand
what's
the problem now.


 section.fields.push({
      flags: ['w_if_no_aci'],
   $type: 'multivalued',
   name: 'comDate',
      label: 'Commencement Date'

    });

[image: 內置圖片 1]



2017-11-09 16:06 GMT+08:00 Pavel Vomacka <pvomacka@redhat.com>:



On 11/09/2017 09:00 AM, barrykfl@gmail.com wrote:

Add like this ...now the label gone nothing shown.

 section.fields.push({
      flags: ['w_if_no_aci']
   $type: 'multivalued',
   name: 'comDate',
      label: 'Commencement Date'

    });

Yes, that's because of missing colon at the end of 'flags: ...' line.
You can open Developer Console in browser (F12) and you will see an
error.



2017-11-09 15:50 GMT+08:00 Pavel Vomacka <pvomacka@redhat.com>:



On 11/09/2017 08:36 AM, barrykfl@gmail.com wrote:

Same Like this Lable no field no edit no save but fine in command base
...any different freeipa4.0 vs 3.0 procedure?

Do you have IPA 4.x ? Or which version?

Try to add following line into the specification of your new field:

flags: ['w_if_no_aci']


[image: 內置圖片 2]

2017-11-09 14:44 GMT+08:00 Pavel Vomacka <pvomacka@redhat.com>:


On 11/08/2017 07:29 AM, barrykfl--- via FreeIPA-users wrote:

Hi,

Dear all:

I follow the guide of freeipa 3.0 abt web plugin web ui. At command
base I successfully  made
a custom attribute called Employee " Commencement Date" . I can add
using script / command.

BUT in web UI , it Display "Commencent date" Label only ....and
cannot
display edit field and allow me edit.

After That I changed to Multivalue the field come out but still the
save button is grey I cannot save again.

Which part I made wrong ? please advise . thx

define(['freeipa/phases','freeipa/user'],
  function(phases, user_mod) {
    // helper function
    function get_item(array, attr, value) {
      for (var i=0,l=array.length; i<l; i++) {
        if (array[i][attr] === value) return array[i];
      }
      return null;
  }

  var cdate_plugin = {};

  cdate_plugin.add_c_date = function() {
    var facet = get_item(user_mod.entity_spec.facets, '$type',
'details');
    var section = get_item(facet.sections, 'name', 'identity');
    section.fields.push({
      $name: 'comDate',

The dollar character should be at the beginning of type attribute not
the name. So try to change it to:
name: 'comDate',
$type: 'multivalued'

      type: 'multivalued',

      label: 'Commencement Date'
    });
    return true;
  };

  phases.on('customization', cdate_plugin.add_c_date);

  return cdate_plugin;
});


Does it help?


_______________________________________________
FreeIPA-users mailing list -- freeipa-users@lists.fedorahosted.org
To unsubscribe send an email to freeipa-users-leave@lists.fedo
rahosted.org


--
Pavel^3 Vomacka



--
Pavel^3 Vomacka



--
Pavel^3 Vomacka



--
Pavel^3 Vomacka



--
Pavel^3 Vomacka



_______________________________________________
FreeIPA-users mailing list -- freeipa-users@lists.fedorahosted.org
To unsubscribe send an email to freeipa-users-leave@lists.fedo
rahosted.org



--
/ Alexander Bokovoy


--
/ Alexander Bokovoy