Workgroup implementation

2007-04-28
2013-05-28
  • Knut Krüger
    Knut Krüger
    2007-04-28

    After a closer look to the database, i realized that it seems that is not easy to share or copy the private fields to other user.
    But maybe it is possible for a future version to implement a work group function, means that it is possible to allow editing and viewing the records of one user, maybe the work group supervisor, for all work group members.

    I do not know whether this feature is necessary for others or only for us, and how development time it will need.

    Regards Knut

     
    • Hi Knut,

      refbase has the concept of public fields and user-specific fields (the yellow ones which are private). I think it's good that users have some private fields and that it's clear to them that these fields will remain private. Simply put, private fields are just meant to be private, and I don't see why other users should be able to view or edit them[*]. Depending on your needs, some of the public fields could be used as "shared" fields. The 'area' and 'expedition' fields could be useful for this (and could be renamed in the interface to something that is more appropriate for you). Another option would be to share a single user account among the members of your group. Note that users could still have their individual accounts. By this, you wouldn't need to hack anything.

      [*] That said, we will in fact make one exception by opening up the 'user_groups' field to enable public tagging. People could decide (via tag prefixes) whether their groups/tags would be visible by everyone, their research group only, or if they should be kept private.

      I still have the feeling that you're trying to use something that isn't meant to be used like that. If you could explain again your ideas about all the work group functionality that you're trying to implement, then we may be able to help you better.

      If I remember correctly, you want to give your users offline access to their files. As mentioned earlier, the 'user_file' field could be used for this purpose and users could specify a base directory via a user option. IMHO, this would be really the most appropriate thing to do, and I'd be willing to implement this (though I cannot promise a date when this would be available).

      I also remember that you mentioned that you don't have enough space on your server for storing all of your PDF files. Obviously, you'll spare yourself from a lot of trouble by finding a hosting service that offers enough space. I could offer you some solution for this problem, contact me privately if you're interested.

      Let us know if there's more that you're trying to implement for your group.

      Matthias

       
    • Also, note that the admin can view & edit all user-specific fields from within the MySQL command line interpreter (or a tool such as phpMyAdmin). This would, e.g., allow you to establish a common file path structure for all of your users in the 'user_file' field.

      Matthias

       
    • Knut Krüger
      Knut Krüger
      2007-04-30

      Hi Matthias, thank you very much to be so patient, with my problem.

      The first attempt was to manage the own pdf files at the HD. (there are couple of hundred files, and it worked fine)
      In this case the user files field is just that what I was looking for, extended whit my short code to show the direct path .

      I was just ready with  filling in the hole files from the HD, another member of the WG asked me to use also the files with an DVD.
      I that case there are no copyright problems because both are members of the same University and have access to the same online sources.
      The third question was to use the files also in the university network (work group access), at home from the PC and in the field with DVD.

      I will explain the reasons for the user file in our workgroup.
      there is no problem inside the university to get access to the files over the university backbone f.e with DOI number, but some of the files are very old scanned papers wich are not availabel online, but stored in the institute.

      There is a little afford to get the files online with DSL from the "home office", we need fist to contact to the CISCO VPN Client, but the VPN client is disabling all other network connection during it is online.
      But there are major problems to get the files, for some of us with no DLS connection at home or with the Laptop anywhere during working in the field.
      And in both cases it does not not make sense to store them on an internet server. This will causes the same problems.

      Now I have problems to copy the filenames from my admin account to another "workgroup" account, because there is no user data entry from the new added user. But the function to find the pdf files on HD with the database is great.
      I think I will change the User ID from the admin ID to the new WG-ID for all  records whit filled  user file fields. Than  I have managed the first problem.

      For our WG it would be fine to add some Workgroup fields similar to the yellow user  fields, but maybe you should ask the other user of RefBase whether it is worth or not.
      The access could be given like the access to other resources in the edit options menu

      And about the work group functionality: I do not know what kind of information may be uses for a workgroup.
      maybe
      like in my case the name and directory of realating files
      the room , the rack and the folder of printed papers (If I imagine the wall with the collection of papers in the institute it would be fine to see in the records that the paper is already in the institute)
      ... anything else what is workgroup or institute related

      Regards Knut

       
      • > Now I have problems to copy the filenames from my admin account to another
        > "workgroup" account, because there is no user data entry from the new added
        > user.

        If the newly added user has no data entries in table 'user_data' at all, you could also export all user data of the admin/workgroup account, change the 'user_id' in a text editor to the user ID of the newly added user, and re-import them back into table 'user_data'. While this might look like a somewhat clumsy workaround, it sounds harder than it actually is.

        As an example, with 'root' being the authorized user, 'literature' as the name of your refbase latin1 database, and '1' as the user ID of your admin/workgroup account, your export statement would read:

        mysqldump literature user_data -uroot -p --complete-insert --skip-opt --no-create-info --default-character-set=latin1 --where="user_id=1" > user_data.sql

        This would export all user data for a user with user_id=1.

        You can then change all user IDs in file 'user_data.sql' to the user ID of the newly added user via a regex search+replace action. E.g., to change the user ID in file 'user_data.sql' from '1' to, say, '23', use a regex-capable text editor and:

        search for:
        VALUES \([0-9]+,1

        replace with:
        VALUES \(NULL,23

        Now import the file back into table 'user_data' using an SQL command like this:

        mysql -h localhost -u root -p --database=literature < user_data.sql

        This will add new user data entries in table 'user_data' for the newly added user.

        > And about the work group functionality: I do not know what kind of information
        > may be uses for a workgroup.
        > maybe
        > the room , the rack and the folder of printed papers (If I imagine the wall
        > with the collection of papers in the institute it would be fine to see in the
        > records that the paper is already in the institute)

        Note that this is already possible, refbase uses the 'call_number' field for this kind of local holdings information. For each record in her personal library, a user can enter a call number (i.e. a personal reference ID or institutional signature) into the 'call_number' field. The contents of this field will be visible to everyone, so other users could come to you and ask you for a copy of your paper with call number XYZ.

        The 'call_number' field accepts any kind of number or string. At our institute we have users that use categorial IDs (like "topicA-123", "topicB-45") as personal reference IDs, while others simply use numbers. And our institute's library (whose records are also stored in our refbase database) uses signatures (like "32/694/7", "32/9.4/16") which stick to our university's library categorization scheme.

        As yet another example, a call number that encodes the room, the rack and the folder of printed papers could look like this: "123-B-32". If your research group maintains printed paper copies at a shared location, you could setup a separate "library" user and always enter the call numbers for your shared papers via this library user. In addition, 'library_search.php' could then be used to search only records entered by this library user (see variable '$librarySearchPattern' in 'ini.inc.php').

        A user's personal call numbers can be easily searched via 'show.php'.

        Hope this helps, Matthias

         
    • Knut Krüger
      Knut Krüger
      2007-05-16

      Does anybody knows an Windows editor which is able to use
      replace with:
      VALUES \(NULL,23

      fe
      search [0-9]:
      1234: test
      change to
      1234- test

      every Editor I tried changes the term to
      NULL- test

      Regards Knut

       
      • vim can certainly do this:
        :%s/\(\d*\):/\1-/g

         
    • Knut,

      if you're trying to perform the steps outlined in my last mail in thread "Feature Requests: Workgroup implementation", then you actually need to replace the found numbers with a *literal* NULL string. This is necessary so that the MySQL database re-assign new record IDs upon re-import. The only real wildcard pattern in my previously given example examples was "[0-9]+" which matches any kind of number.

      W.r.t regex-capable editors, you may want to take a look at:

      http://grep.extracts.de/

      While the site might not be up-to-date, it lists some regex-aware applications for Windows that you may want to try out. OTOH, if your editor did successfully match a number via "[0-9]+", then you actually *have* a regex-aware editor.

      Matthias

       
    • Knut Krüger
      Knut Krüger
      2007-05-16

      yes I have a couple of editors who successfully match a number via "[0-9]+"
      but i must run three queries to change f.e

      1234: test
      4567: test
      8901: test

      to

      1234- test
      4567- test
      8901- test

      because I did not find any way not to replace the numbers. So I thougt that I am missing this feature.

      But this is not RefBase related and I do not waste your time - I will have a look on your link

      Thanks Knut

       
    • Just to be clear: I don't know what you're trying to accomplish, but if you want to perform the steps from my previous mail, then you must NOT keep the record IDs but replace them with NULL, only the user ID must be replaced!

      I.e. as an example, you'll neeed to change these lines:

      VALUES (1234,1
      VALUES (4567,1
      VALUES (8901,1

      into this:

      VALUES (1234,23
      VALUES (4567,23
      VALUES (8901,23

      I.e., change the user_id from "1" (or whatever user_id your admin user has) to, say, "23" (or whatever user_id your new user has).

      If you really like to insert the numbers again, as given in your last example, then:

      search for:
      ([0-9]+): test

      replace with:
      \1- test

      Note the parentheses in the search pattern which "remember" the enclosed subpattern, and "\1" inserts it again in the replacement pattern.

      While regex syntax varies quite a bit between different implementations, you may find this german quick reference (written for the BBEdit text editor) helpful:

      http://grep.extracts.de/bbedit/grep.html

      Many of the explanations and examples on that page should work universally across editors.

      Hope this helps, Matthias

       
    • Apologies, I hit the submit button too quickly, the example from my previous mail should have been:

      change these lines:

      ... VALUES (1234,1 ...
      ... VALUES (4567,1 ...
      ... VALUES (8901,1 ...

      into this:

      ... VALUES (NULL,23 ...
      ... VALUES (NULL,23 ...
      ... VALUES (NULL,23 ...

      Sorry for the confusion. M.

       
    • Knut Krüger
      Knut Krüger
      2007-05-16

      I see I thougt NULL is any code and the Id should be stored too -

      therefor I tried to perform a similar search and replace to implement about 800 records from an old reference list.
      here I need f.e

      PE  - 1945: 5, 122-133

      to

      PE  - 1945
      VL  - 5
      SP  - 122
      EP  - 133

      I thougt it would be possible to save the year number and do not replace them

      Knut

       
      • NULL is a special term in MySQL. If you import records containing NULL in the primary key field, MySQL will assign this record the next available primary key. In my initial example in this thread, this what is needed in order to correctly re-import the data.

        However, it seems that you're trying to accomplish something entirely different now. So, if you'd like to convert this:

        PE  - 1945: 5, 122-133

        into this:

        PE  - 1945
        VL  - 5
        SP  - 122
        EP  - 133

        then search for:
        PE  - ([0-9]+): ([0-9]+), ([0-9]+)-([0-9]+)

        and replace with:
        PY  - \1
        VL  - \2
        SP  - \3
        EP  - \4

        or, alternatively (as Rick points out), if your text editor supports Perl-style regular expressions, you could:

        search for:
        PE  - (\d+): (\d+), (\d+)-(\d+)

        and replace with:
        PY  - \1
        VL  - \2
        SP  - \3
        EP  - \4

        Use \d* instead of \d+ if some numbers may not exist in your source data. Also note that, in RIS, the publication year must be stored within the PY (or Y1) field, and not PE.

        I encourage you to consult some regex tutorials -- using regular expression search & replace patterns is (IMHO) the second most useful thing when working with computers, so it's never a waste of time to learn a bit more about regular expressions:

        http://directory.google.com/Top/Computers/Programming/Languages/Regular_Expressions/FAQs,_Help,_and_Tutorials/

        Matthias